Julia 是個靈活的動態(tài)語言,適合科學(xué)和數(shù)值計算,性能可與傳統(tǒng)靜態(tài)類型語言媲美。
由于 Julia 的編譯器與像 Python 或者 R 語言的解釋器不同,你可能首先會發(fā)現(xiàn) Julia 的性能并不那么直觀。如果你發(fā)現(xiàn)哪些地方比較慢, 我們強烈建議你在做任何嘗試之前通讀一下代碼性能優(yōu)化章節(jié)。一旦你明白了 Julia 是如何工作的,你就可以寫出來速度媲美 C 語言的代碼。
通過使用類型推斷和即時(JIT)編譯 ,以及 LLVM ,Julia 具有可選的類型聲明,重載,高性能等特性。Julia 是多編程范式的,包含指令式、函數(shù)式和面向?qū)ο缶幊痰奶卣鳌? 它提供了簡易和簡潔的高等數(shù)值計算,它類似于 R 、 MATLAB 和 Python ,支持一般用途的編程。 為了達到這個目的,Julia 在數(shù)學(xué)編程語言的基礎(chǔ)上,參考了不少流行動態(tài)語言:Lisp 、 Perl 、 Python、 Lua 和 Ruby。
Julia 與傳統(tǒng)動態(tài)語言最大的區(qū)別是:
核心語言很??;標(biāo)準(zhǔn)庫是用 Julia 本身寫的,如整數(shù)運算在內(nèi)的基礎(chǔ)運算
動態(tài)語言是有類型的:每個對象,不管是基礎(chǔ)的還是用戶自定義的,都有類型。許多動態(tài)語言沒有類型聲明,意味著它不能告訴編譯器值的類型,也就不能準(zhǔn)確的判斷出類型。靜態(tài)語言必須告訴編譯器值的類型,類型僅存在于編譯時,在運行時則不能更改。在 Julia 中,類型本身就是運行時對象,同時它也可以把信息傳遞給編譯器。
重載函數(shù)由參數(shù)(參數(shù)列表)的類型來區(qū)別,調(diào)用函數(shù)時傳入的參數(shù)類型,決定了選取哪個函數(shù)來進行調(diào)用。對于數(shù)學(xué)領(lǐng)域的程序設(shè)計來說,這種方式比起傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計中操作屬于某個對象的方法的方式更顯自然。在 Julia 中運算符僅僅是函數(shù)的別名。程序員可以為新數(shù)據(jù)類型定義 “+” 的新方法,原先的代碼就可以無縫地重載到新數(shù)據(jù)類型上。
因為運行時類型推斷(得益于可選的類型聲明),以及從開始就看重性能,Julia 的計算性能超越了其他動態(tài)語言,甚至可與靜態(tài)編譯語言媲美。在大數(shù)據(jù)處理的問題上,性能一直是決定性的因素:在剛剛過去的十年中,數(shù)據(jù)量還在以摩爾定律增長著。
Julia 想要變成一個前所未有的集易用、強大、高效于一體的語言。除此之外,Julia 的優(yōu)勢還在于:
更多建議: