概述
Julia 是一個面向科學計算的高性能動態高級程式設計語言。其語法與其他科學計算語言相似。在許多情況下擁有能與編譯型語言相媲美的性能。
一群擁有各種語言豐富編程經驗的Matlab高級用戶,對現有的科學計算編程工具感到不滿——這些軟體對自己專長的領域表現得非常棒,但在其它領域卻非常糟糕。他們想要的是一個開源的軟體,它要像C語言一般快速而有擁有如同Ruby的動態性;要具有Lisp般真正的同像性(Homoiconicity)而又有Matlab般熟悉的數學記號;要像Python般通用、像R般在統計分析上得心應手、像Perl般自然地處理字元串、像Matlab般具有強大的線性代數運算能力、像shell般膠水語言的能力,易於學習而又不讓真正的黑客感到無聊;還有,它應該是互動式的,同時又是編譯型的……
該項目大約於2009年中開始,目前(2012年2月)距離1.0版的發布已經進展到90%。在源碼主頁上可下載試用。
目前,Julia中文社區正在迅速成長,Julia語言編程開發等問答平台已經建立。
歷史
一群擁有各種語言豐富編程經驗的Matlab高級用戶,對現有的科學計算編程工具感到不滿——這些軟體對自己專長的領域表現得非常棒,但在其它領域卻非常糟糕。他們想要的是一個開源的軟體,它要像C語言一般快速而有擁有如同Ruby的動態性;要具有Lisp般真正的同像性(Homoiconicity)而又有Matlab般熟悉的數學記號;要像Python般通用、像R般在統計分析上得心應手、像Perl般自然地處理字元串、像Matlab般具有強大的線性代數運算能力、像shell般膠水語言的能力,易於學習而又不讓真正的黑客感到無聊;還有,它應該是互動式的,同時又是編譯型的……
該項目大約於2009年中開始,目前(2012年2月)距離1.0版的發布已經進展到90%。在源碼主頁上可下載試用。
v0.1.0 14 Feb 2012
v0.2.0 19 Nov 2013
v0.3.0 21 Aug 2014
v0.4.0 8 Oct 2015
v0.5.0 20 Sep 2016
v0.6.0 19 Jun 2017
v1.0.0 8 Aug 2018
功能
主要用於數值計算
特點
•免費開源
•核心語言非常小。標準庫用的是 Julia 語言本身寫的
•調用許多其它成熟的高性能基礎代碼。如線性代數、隨機數生成、快速傅立葉變換、字元串處理。(還在增加中……)
•豐富的用於建立或描述對象的類型語法
•高性能,接近於靜態編譯型語言。包括用戶自定義類型等
•為並行計算和分散式計算而設計
•輕量級“綠色”協程
•優雅的可擴展的類型轉換/提升
•支持Unicode, 包括但不限於UTF-8
•可直接調用 C 函式(不需要包裝或是藉助特殊的API)
•有類似shell的進程管理能力
•有類似Lisp的宏以及其它元編程工具
示例
#生成Mandelbrot集合
function mandel(z)
c = z
maxiter = 80
for n = 1:maxiter
if abs(z) > 2
return
n-1
end
z = z^2 + c
end
return maxiter
end
#隨機矩陣統計
function randmatstat(t)
n = 5
v = zeros(t)
w = zeros(t)
for i = 1:t
a = randn(n,n)
b = randn(n,n)
c = randn(n,n)
d = randn(n,n)
P = [a b c d]
Q = [a b; c d]
v[i] = trace((P.'*P)^4)
w[i] = trace((Q.'*Q)^4)
end
std(v)/mean(v), std(w)/mean(w)
end