julia—能滿足我們貪念的語言

julia—能滿足我們貪念的語言

最近有個名叫julia(請無視與其命名的其他事物)的語言突然爆火,看了他的介紹感覺這是傳說中的語言,要幹掉其他所有語言的節奏啊!

julia—能滿足我們貪念的語言

這是他的官方介紹:“我們想要一種擁有自由許可的開源語言,同時擁有 C 的速度和 Ruby 的靈活。我們想要一種同像性語言,有像 Lisp 這樣真正的宏,也有像 Matlab 這樣的淺顯熟悉的數學符號。我們想要一門像 Python 一樣可用於通用編程,像 R 一樣易於統計,像 Perl 一樣自然地用於字符串處理,像 Matlab 一樣強大的線性代數,像 shell 一樣擅長將程序粘合在一起的語言。它簡單易學,卻能讓嚴苛的黑客為之傾心。我們希望它是交互式的,具備可編譯性。”

一個充滿活力和繁榮的社區就圍繞這種語言成長起來,世界各地的人們都在為了這個目標而不斷努力改進和塑造Julia。 超過700人為Julia做出了自己的貢獻,更多人創造了成千上萬開源的Julia包。總而言之,我們創造了這樣一種語言:

  • 快速:Julia一開始就是為高性能而設計的。Julia可以通過LLVM而跨平臺被編譯成高效的本地代碼。
  • 通用:Julia使用多分派作為編程範式,使其更容易表達面向對象和函數式編程範式。標準庫提供了異步I/O,進程控制,日誌記錄,性能分析,包管理器等等。
  • 動態:Julia是動態類型的,與腳本語言類似,並且對交互式使用具有很好的支持。
  • 數值計算:Julia擅長於數值計算,它的語法適用於數學計算,支持多種數值類型,並且支持並行計算。Julia的多分派自然適合於定義數值和類數組的數據類型。
  • 可選的類型標註:Julia擁有豐富的數據類型描述,類型聲明可以使得程序更加可讀和健壯。
  • 可組合:Julia的包可以很自然的組合運行。單位數量的矩陣或數據表一列中的貨幣和顏色可以一起組合使用並且擁有良好的性能。

去它官網找了找,得到其生態系統如下:

一般用途

構建,部署或嵌入您的代碼

Julia允許您編寫UI,靜態編譯代碼,甚至將其部署在Web服務器上。它還具有強大的類似shell的功能,可用於管理其他進程。它提供類似Lisp的宏和其他元編程工具。

Julia具有C / Fortran, C ++, Python, R, Java和許多其他語言的外部函數接口 。Julia也可以通過嵌入API嵌入到其他程序中。具體來說,Python程序可以使用PyJulia調用Julia 。R程序可以用R的JuliaCall做同樣的事情,這可以通過從R調用MixedModels.jl來證明。

數據科學

與您的數據互動

Julia數據生態系統允許您快速加載多維數據集,並行執行聚合,連接和預處理操作,並以高效格式將它們保存到磁盤。您還可以使用OnlineStats.jl對流數據執行在線計算 。無論您是在尋找方便和熟悉的 DataFrame,還是使用JuliaDB的新方法 ,Julia 都能為您提供豐富的工具。該 Queryverse包裝作用的元數據包,通過它可以訪問這些工具與朱利安的API。除了使用表格數據外,還有JuliaGraphs 軟件包可以輕鬆使用組合數據。

Julia可以使用JDBC.jl和 ODBC.jl驅動程序處理幾乎所有數據庫 。此外,它還使用Spark.jl, HDFS.jl和 Hive.jl與Hadoop生態系統集成 。

機器學習

可擴展的機器學習

Julia為深度學習(Flux.jl和 Knet.jl), 機器學習和AI 提供了強大的工具。Julia的數學語法使其成為表達算法的理想方式,就像它們在論文中編寫一樣,構建具有自動差異的可訓練模型 , GPU加速以及對數TB數據的支持。

Julia豐富的機器學習和統計生態系統包括 廣義線性模型, 決策樹和聚類的功能。您還可以找到貝葉斯網絡和 馬爾可夫鏈蒙特卡羅的包 。

科學領域

豐富的科學計算生態系統

Julia的設計從根本上講非常擅長數值和科學計算。這可以從Julia編寫的大量科學工具中看出,例如最先進的微分方程生態系統 (DifferntialEquations.jl),優化工具(JuMP.jl和 Optim.jl),迭代線性求解器 (IterativeSolvers) .jl)以及更多,可以驅動所有模擬。

Julia還提供了許多特定領域的生態系統,如生物學 (BioJulia),運籌學(JuliaOpt),量子物理學 (QuantumOptics),非線性動力學(JuliaDynamics),定量經濟學 (QuantEcon),天文學 (JuliaAstro)和生態學 ( EcoJulia)。有了一群來自科學界各個部分的熱情的開發人員和維護者,這個生態系統將繼續變得越來越大。

並行計算

並行和異構計算

Julia專為並行性而設計,併為各個級別的並行計算提供內置基元: 指令級並行多線程分佈式計算。該Celeste.jl項目達到1.5千萬億次/秒的在NERSC超級計算機的Cori使用650000個內核。

Julia編譯器還可以為各種硬件加速器生成本機代碼,例如GPU和Xeon Phis。諸如DistributedArrays.jl和Dagger.jl之類的包為並行性提供了更高級別的抽象。

不得不說這語言的野心的確很大,其在github已經有15千多Star,已被下載超過200萬次,而Julia社區已經開發了超過1,900個Julia軟件包。其社區好像也挺完善的,中文社區為juliacn.com。

其中文社區的有這麼一段話 :

要求有點多,是不是?

儘管我們意識到了自己有多貪心,我們還是想要擁有這些功能。大概在兩年半之前,我們開始創造這種能滿足我們貪念的語言。它還沒有完工——但是已經可以發佈一個1.0版本了(其實等了6年才要發佈)——我們創造的這個語言叫做Julia。它已經實現了我們這次亂七八糟需求的90%,而現在她需要來自更多人的亂七八糟的需求,來讓她走得更遠。如果你也是一位貪心不足,不可理喻,需索無度的碼場二逼青年,希望你能來試試這個東東。

哈哈,心動不如行動~


分享到:


相關文章: