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、 Lua 和 Ruby。
Julia 與傳統(tǒng)動(dòng)態(tài)語言最大的區(qū)別是:
核心語言很?。粯?biāo)準(zhǔn)庫是用 Julia 本身寫的,如整數(shù)運(yùn)算在內(nèi)的基礎(chǔ)運(yùn)算
動(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ì)還在于:
更多建議: