在科學計算領域,一直對性能有較高的要求,Julia是一個新的高性能動态進階程式設計語言,功能強大,文法簡潔,易于使用者學習。它擁有豐富的函數庫,提供了數字精度和分布式并行運作方式。它内部使用Just-in-Time實時編譯器很有效地提高了它的運作效率,有些場景下能比得上C和C++。
根據官網的介紹,Julia 是一門支援過程式、函數式和面向對象的多範式語言。 它像 R、MATLAB 和 Python 一樣簡單,在進階數值計算方面有豐富的表現力,并且支援通用程式設計。 為了實作這個目标,Julia 以數學程式設計語言(mathematical programming languages)為基礎,同時也參考了不少流行的動态語言,例如 Lisp、Perl、Python、Lua、和 Ruby。Julia中文文檔可見網站
https://docs.juliacn.com/latest/。
Julia 還擁有以下優勢:
- 采用 MIT 許可證:免費又開源
- 使用者自定義類型的速度與相容性和内建類型一樣好
- 無需特意編寫向量化的代碼
- 為并行計算和分布式計算設計
- 輕量級協程支援
- 低調又牛逼的類型系統
- 優雅、可擴充的類型轉換和類型提升
- 對 Unicode 的有效支援,包括但不限于 UTF-8
- 直接調用 C 函數,無需封裝或調用特别的 API
- 像 Shell 一樣強大的管理其他程序的能力
- 像 Lisp 一樣的宏和其他元程式設計工具
下面給出一些Julia處理矩陣的示例,感覺和Matlab很像,示例如下:
julia> a = [ 1 3 5 ; 2 6 8]
2×3 Array{Int64,2}:
1 3 5
2 6 8
julia> a[1,:]
3-element Array{Int64,1}:
1
3
5
julia> a[1:2,1]
2-element Array{Int64,1}:
1
2
julia> b = a'
3×2 LinearAlgebra.Adjoint{Int64,Array{Int64,2}}:
1 2
3 6
5 8
julia> a = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]
3×3 Array{Int64,2}:
1 2 3
4 5 6
7 8 9
julia> a * a
3×3 Array{Int64,2}:
30 36 42
66 81 96
102 126 150
julia> a ^ 2
3×3 Array{Int64,2}:
30 36 42
66 81 96
102 126 150
julia> a .^ 2
3×3 Array{Int64,2}:
1 4 9
16 25 36
49 64 81
注意:矩陣運算這裡的 .^2 和 ^2 的差別。
Julia 有一個用于表示整數精确比值的分數類型。分數通過
//
運算符,示例如下:
julia> inv(2//3)
3//2
julia> pi
π = 3.1415926535897...
julia> (3 // 5) * (2 // 3)
2//5
julia> rationalize(0.5)
1//2
julia> denominator(2//3)
3
julia> numerator(2//3)
2
Julia還支援約等于 ≈,示例如下:
julia> 0.1 ≈ (0.1 - 1e-10)
true
另外,函數相關示例如下:
julia> function f(x,y)
x^2+2x*y+y^2
end
f (generic function with 1 method)
julia> f(2,3)
25
julia> 1:5 |> sum |> sqrt
3.872983346207417