Julia 1.10 文件
歡迎使用 Julia 1.10 的文件。
請閱讀 發布筆記,了解自上次發布以來有哪些變更。
文件也提供 PDF 格式: julia-1.10.2.pdf。
重要連結
以下是非詳盡連結清單,在您學習和使用 Julia 程式語言時會很有用。
簡介
科學運算傳統上需要最高的效能,但領域專家已大量轉向較慢的動態語言進行日常工作。我們相信有許多充分的理由讓這些應用程式偏好動態語言,我們也不預期它們的使用會減少。幸運的是,現代語言設計和編譯器技術讓消除效能取捨成為可能,並提供一個足夠高效能的單一環境,能用於原型製作,並能部署效能密集型應用程式。Julia 程式語言扮演了這個角色:它是一種靈活的動態語言,適用於科學和數值運算,效能可與傳統的靜態類型語言相媲美。
由於 Julia 的編譯器不同於 Python 或 R 等語言所使用的直譯器,你可能會發現 Julia 的效能一開始並不直觀。如果你發現某個部分很慢,我們強烈建議在嘗試其他任何方法之前,先閱讀效能提示部分。一旦你了解 Julia 的運作方式,就可以輕鬆寫出效能幾乎與 C 一樣快的程式碼。
Julia 與其他語言的比較
Julia 具備可選的類型、多重分派和良好的效能,這些都是使用類型推論和即時編譯 (JIT)(以及可選的預先編譯)實現的,並使用LLVM實作。它是一種多範例語言,結合了命令式、函式式和物件導向程式設計的功能。Julia 提供了高階數值運算的簡易性和表達力,就像 R、MATLAB 和 Python 等語言一樣,但它也支援一般程式設計。為了達成這個目標,Julia 建構在數學程式語言的譜系之上,但也從許多流行的動態語言中借用了許多元素,包括Lisp、Perl、Python、Lua和Ruby。
Julia 與典型動態語言最顯著的區別在於
- 核心語言強加的限制非常少;Julia Base 和標準函式庫是用 Julia 本身撰寫的,包括整數運算等基本運算
- 豐富的類型語言,用於建構和描述物件,也可以選擇用於建立類型宣告
- 能夠透過 多重分派 定義各種引數類型組合的函式行為
- 自動產生針對不同引數類型的高效能、專門化程式碼
- 良好的效能,接近 C 等靜態編譯語言
雖然人們有時會說動態語言是「無類型的」,但它們絕對不是。每個物件,無論是基本類型還是使用者定義的,都有類型。然而,大多數動態語言缺乏類型宣告,表示無法指示編譯器有關值類型的資訊,而且通常根本無法明確討論類型。另一方面,在靜態語言中,雖然可以(而且通常必須)為編譯器註解類型,但類型只存在於編譯時期,無法在執行時期處理或表達。在 Julia 中,類型本身就是執行時期物件,也可以用於傳達資訊給編譯器。
Julia 的特色
雖然休閒程式設計師不需要明確使用類型或多重分派,但它們是 Julia 的核心統一功能:函式定義在不同的引數類型組合上,並透過分派到最特定的匹配定義來套用。此模型非常適合數學程式設計,因為在傳統的物件導向分派中,第一個引數「擁有」運算是不自然的。運算子只是具有特殊符號的函式,若要將加法擴充到新的使用者定義資料類型,請為 +
函式定義新的方法。現有的程式碼會無縫套用到新的資料類型。
部分原因在於執行時間類型推論(由可選類型註解增強),部分原因在於從專案開始就強烈注重效能,Julia 的運算效率超越其他動態語言,甚至與靜態編譯語言匹敵。對於大規模數值問題,速度一直是、持續是,而且可能永遠都是至關重要的:在過去幾十年中,正在處理的資料量輕易地跟上摩爾定律。
Julia 的優點
Julia 旨在在單一語言中創造前所未有的易用性、功能和效率組合。除了上述優點外,Julia 相較於類似系統的優點包括