鍍金池/ 教程/ Java/ 簡介
類型轉(zhuǎn)換和類型提升
方法
嵌入式 Julia
交互
調(diào)用 C 和 Fortran 代碼
類型
代碼性能優(yōu)化
多維數(shù)組
元編程
函數(shù)
簡介
線性代數(shù)
與其它語言的區(qū)別
數(shù)學運算和基本函數(shù)
構(gòu)造函數(shù)
控制流
常見問題
并行計算
擴展包
開發(fā)擴展包
開始
字符串
運行外部程序
變量的作用域
模塊
網(wǎng)絡和流
代碼樣式
復數(shù)和分數(shù)
可空類型
整數(shù)和浮點數(shù)
變量
日期和時間

簡介

Julia 是個靈活的動態(tài)語言,適合科學和數(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ù)學編程語言的基礎上,參考了不少流行動態(tài)語言:Lisp 、 Perl 、 Python 、 LuaRuby。

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

  • 核心語言很?。粯藴蕩焓怯?Julia 本身寫的,如整數(shù)運算在內(nèi)的基礎運算

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

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

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

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

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

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