Julia 簡介

2022-02-25 15:39 更新

Julia 是個(gè)靈活的動(dòng)態(tài)語言,適合科學(xué)和數(shù)值計(jì)算,性能可與傳統(tǒng)靜態(tài)類型語言媲美。

由于 Julia 的編譯器與像 Python 或者 R 語言的解釋器不同,你可能首先會(huì)發(fā)現(xiàn) Julia 的性能并不那么直觀。如果你發(fā)現(xiàn)哪些地方比較慢, 我們強(qiáng)烈建議你在做任何嘗試之前通讀一下代碼性能優(yōu)化章節(jié)。一旦你明白了 Julia 是如何工作的,你就可以寫出來速度媲美 C 語言的代碼。

通過使用類型推斷和即時(shí)(JIT)編譯 ,以及 LLVM ,Julia 具有可選的類型聲明,重載,高性能等特性。Julia 是多編程范式的,包含指令式、函數(shù)式和面向?qū)ο缶幊痰奶卣鳌? 它提供了簡易和簡潔的高等數(shù)值計(jì)算,它類似于 R 、 MATLAB 和 Python ,支持一般用途的編程。 為了達(dá)到這個(gè)目的,Julia 在數(shù)學(xué)編程語言的基礎(chǔ)上,參考了不少流行動(dòng)態(tài)語言:Lisp 、 Perl 、 Python、 LuaRuby

Julia 與傳統(tǒng)動(dòng)態(tài)語言最大的區(qū)別是:

  • 核心語言很?。粯?biāo)準(zhǔn)庫是用 Julia 本身寫的,如整數(shù)運(yùn)算在內(nèi)的基礎(chǔ)運(yùn)算

  • 完善的類型,方便構(gòu)造對(duì)象和做類型聲明
  • 基于參數(shù)類型進(jìn)行函數(shù)重載
  • 參數(shù)類型不同,自動(dòng)生成高效、專用的代碼
  • 高性能,接近靜態(tài)編譯語言,如 C 語言

動(dòng)態(tài)語言是有類型的:每個(gè)對(duì)象,不管是基礎(chǔ)的還是用戶自定義的,都有類型。許多動(dòng)態(tài)語言沒有類型聲明,意味著它不能告訴編譯器值的類型,也就不能準(zhǔn)確的判斷出類型。靜態(tài)語言必須告訴編譯器值的類型,類型僅存在于編譯時(shí),在運(yùn)行時(shí)則不能更改。在 Julia 中,類型本身就是運(yùn)行時(shí)對(duì)象,同時(shí)它也可以把信息傳遞給編譯器。

重載函數(shù)由參數(shù)(參數(shù)列表)的類型來區(qū)別,調(diào)用函數(shù)時(shí)傳入的參數(shù)類型,決定了選取哪個(gè)函數(shù)來進(jìn)行調(diào)用。對(duì)于數(shù)學(xué)領(lǐng)域的程序設(shè)計(jì)來說,這種方式比起傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì)中操作屬于某個(gè)對(duì)象的方法的方式更顯自然。在 Julia 中運(yùn)算符僅僅是函數(shù)的別名。程序員可以為新數(shù)據(jù)類型定義 “+” 的新方法,原先的代碼就可以無縫地重載到新數(shù)據(jù)類型上。

因?yàn)檫\(yùn)行時(shí)類型推斷(得益于可選的類型聲明),以及從開始就看重性能,Julia 的計(jì)算性能超越了其他動(dòng)態(tài)語言,甚至可與靜態(tài)編譯語言媲美。在大數(shù)據(jù)處理的問題上,性能一直是決定性的因素:在剛剛過去的十年中,數(shù)據(jù)量還在以摩爾定律增長著。

Julia 想要變成一個(gè)前所未有的集易用、強(qiáng)大、高效于一體的語言。除此之外,Julia 的優(yōu)勢(shì)還在于:

  • 免費(fèi)開源(MIT 協(xié)議
  • 自定義類型與內(nèi)置類型同樣高效、緊湊
  • 不需要把代碼向量化;非向量化的代碼跑得也很快
  • 為并行和分布式計(jì)算而設(shè)計(jì)
  • 輕量級(jí)“綠色”線程(協(xié)程
  • 低調(diào)又牛逼的類型系統(tǒng)
  • 優(yōu)雅、可擴(kuò)展的類型轉(zhuǎn)換
  • 高效支持 Unicode, 包括且不只 UTF-8
  • 直接調(diào)用 C 函數(shù)(不需封裝或 API)
  • 像 Shell 一樣強(qiáng)大的管理其他進(jìn)程的能力
  • 像 Lisp 一樣的宏和其他元編程工具


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)