Julia

編程語言

Julia是一個面向科學計算的高性能動態高級程序設計語言。其語法與其他科學計算語言相似。在許多情況下擁有能與編譯型語言相媲美的性能。Julia是個靈活的動態語言,適合科學和數值計算,性能可與傳統靜態類型語言媲美。目前,Julia中文社區正在迅速成長,Julia語言編程開發等問答平台已經建立。

歷史


一群擁有各種語言豐富編程經驗的Matlab高級用戶,對現有的科學計算編程工具感到不滿——這些軟體對自己專長的領域表現得非常棒,但在其它領域卻非常糟糕。他們想要的是一個開源的軟體,它要像C語言一般快速而有擁有如同Ruby的動態性;要具有Lisp般真正的同像性(Homoiconicity)而又有Matlab般熟悉的數學記號;要像Python般通用、像R般在統計分析上得心應手、像Perl般自然地處理字元串、像Matlab般具有強大的線性代數運算能力、像shell般膠水語言的能力,易於學習而又不讓真正的黑客感到無聊;還有,它應該是互動式的,同時又是編譯型的……
該項目大約於2009年中開始,目前(2012年2月)距離1.0版的發布已經進展到90%。在源碼主頁上可下載試用。
v0.1.014Feb2012
v0.2.019Nov2013
v0.3.021Aug2014
v0.4.08Oct2015
v0.5.020Sep2016
v0.6.019Jun2017
v1.0.08Aug2018

功能


主要用於數值計算

特點


• 免費開源
• 核心語言非常小。標準庫用的是Julia語言本身寫的
• 調用許多其它成熟的高性能基礎代碼。如線性代數、隨機數生成、快速傅里葉變換、字元串處理。(還在增加中……)
• 豐富的用於建立或描述對象的類型語法
• 高性能,接近於靜態編譯型語言。包括用戶自定義類型等
• 為并行計算和分散式計算而設計
• 輕量級“綠色”協程
• 優雅的可擴展的類型轉換/提升
• 支持Unicode,包括但不限於UTF-8
• 可直接調用C函數(不需要包裝或是藉助特殊的API)
• 有類似shell的進程管理能力
• 有類似Lisp的宏以及其它元編程工具

示例


#生成Mandelbrot集合
function mandel(z)
c=z
maxiter=80
forn=1:maxiter
ifabs(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)
fori=1:t
a=randn(n,n)
b=randn(n,n)
c=randn(n,n)
d=randn(n,n)
P=[abcd]
Q=[ab;cd]
v[i]=trace((P.'*P)^4)
w[i]=trace((Q.'*Q)^4)
end
std(v)/mean(v),std(w)/mean(w)
end