1

早在 2009 年,Jeff Bezanson、Alan Edelman、Stefan Karpinski 和 Viral Shah 四個人聚到一起決心創造一種全新的編程語言。新語言要快速、有表達力,結合 C 語言、Matlab、Java、Ruby、Python、Perl 和 R 各自的優勢,并能直接與 R、Matlab、Python 等最受歡迎的機器學習語言,以及其他動態工具展開競爭。聽起來這思路很直接、很簡單,是吧?這想法的背后有著幾名創始人對開發者“痛點”的長期切身體會:工程師們為了在數據分析中獲得速度和易用性,不得不首先用一種語言編碼,然后用另一種語言重寫——這實在很“坑爹”。而這就是很多人口中的“雙語言問題”。
這背后的努力,促成了 Julia 的誕生。
創始人之一的 Viral Shah 解釋道:
“為什么一個編程語言不能同時具有性能和生產力,這難道是一個物理定律嗎?或者,現有的編譯器-語言技術還沒有發展到那個階段?我們認為,在同個封裝中獲得易用性和性能是可能的。于是,我們開始投入到這個項目之中,并把它命名為 Julia。”

Viral Shah
隨后,幾名 Julia 創始人聯合 Keno Fischer 創立了“Julia Computing” ——一家咨詢公司,為使用 Juia 語言的企業客戶提供幫助。

Julia 是一門開源語言,允許開發者創建性能更為強大的數字算法——相對于采用 Just In Time (JIT) 解釋的語言而言。它易于使用,大幅減少了需要寫的代碼行數;并且能夠很容易地部署于云容器(cloud containers )。
2012 年,Julia 的第一個公開版本 Julia 0.1 正式發布。2016 年九月發布了Julia 0.5,涵蓋了 1100 個工具包,比一年前的 0.4 版本增加了 57%。Julia 開發者社區的規模還很小,目前在全世界范圍內大約有 15 萬用戶。但隨著計劃于今年 6 月在加州大學伯克利分校舉辦的 JuliaCon 峰會,以及將在峰會上發布的 Julia 1.0;屆時,它的用戶群有望快速增長。Viral Shah 表示,他們的下一個目標是 150 萬用戶。另外,現有 Julia 版本的技術支持期限是一年,而 Julia 1.0 將會是五年。
Julia 已經引起了華爾街的注意。投資銀行 Berkery Noyes 的 CTO Keith Lubell 評論道:
“真正讓我們感到激動的是,你可以編寫高層級的科學、數字計算,而不需要重新編譯。通常來講,當你用 R 或 Matlab 寫了一些東西,想讓它運行得更快。你需要把它重新翻譯至 C++,或者其他更快的語言。而使用 Julia 就不需要這樣——它的速度是拔尖的。”
Julia 仍是搖籃中的新生兒。因此,若要成為大數據、機器學習工程師們的普遍選擇,它需要在多個領域成長起來。其中最重要的是開發者社區,它亟需壯大以提供更多的工具包和庫。只有這樣, Julia 才能吸引更多用戶到它的平臺,與基礎設施完善的老牌數據分析語言直接競爭。
如果你跟任何使用 Julia 的開發者聊聊,他們會告訴你,選擇“上車”、使用這個萌芽期編程語言的首要原因是速度。據 Julia Computing 的宣傳,在七項基礎算法的測試中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。
Julia 精簡的代碼行數,對其性能提升貢獻巨大。迄今為止最引人注目的 Julia 應用案例是紐約聯邦儲備銀行( Federal Reserve Bank of New York )

大約兩年前,諾貝爾經濟學獎得主、紐約大學經濟學教授、咨詢公司 QuantEcon 的創始人 Thomas Sargent,以及澳大利亞國立大學的經濟學教授 John Stachurski,共同建議紐約聯邦儲備銀行( Federal Reserve Bank of New York )把其用于市場走勢預測和政策分析的“動態隨機一般均衡模型(DSGE)”轉到 Julia 語言平臺。

Thomas Sargent
此前,紐聯儲的 DSGE 模型一直用 Matlab 運行。該項目背后的邏輯是,探索像 DSGE 這樣的大型模型能否輕易轉移至 Julia,以及其運行速度究竟會不會有大幅提升。紐聯儲采納了建議,并利用該機會與 QuantEcon 合作。紐聯儲宏觀經濟與貨幣研究部門副主席 Marco Del Negro 表示:
“對我而言,這是一個絕妙的注意。我們當時正在考慮脫離 Matlab ——既出于成本,也有速度方面的原因。我們希望進一步提升我們的模型,并探索新事物。”
在項目第一階段后,他們發現,Julia 把模型運行時間縮短至原先 Matlab 代碼的十分之一到四分之三。模型中,Metropolis-Hastings 采樣(從概率分布獲取一系列隨機樣本的馬爾可夫鏈蒙特·卡羅方法)是最耗費時間的環節。而在該環節,Julia 的運行速度是 Matlab 代碼的 10 倍。相對于原先的 Matlab 版本,基于 Julia 的全新 DSGE 模型把代碼行數減少了將近一半。
雷鋒網獲知這些性能提升不能全歸功于 Julia。紐聯儲表示,Matlab 版本的 DSGE 模型開發周期相當長,是一個累積式的過程。另外,它還支持了過多的模型和特征。這些原因導致其有很多不完美之處,運行效率本身就有不足。新項目下,這些專家們用 Julia 把該模型從頭設計了一遍,針對此前發現的一系列問題做了改進。因此,新模型可被看做是經歷了兩重升級:架構優化以及 Julia。當然,兩者是結合在一起實現的。不過,一些“經歷了較小優化以及重設計”的算法,比如測量算法以及 kalman_filter 函數,新版本仍然比舊的、基于 Matlab 的模型提升了大約五分之一至四分之三的運算速度,見下圖。
雷鋒網獲知,目前紐聯儲已經開啟了項目的第二階段:改進 DSEG 模型的預測能力。由于他們需要不斷為模型添加數據和層級,紐聯儲認為 Julia 能更好應付提升的復雜性——他們估算基于 Julia 的模型運行時間大約只需要一至兩天,而 Matlab 可能需要一個月才能等到輸出結果。但這仍需第二階段完成后進行證實。

Julia 最大的短板在于社區。雷鋒網獲知,Python 已經 25 歲了, R 語言快 25 歲了,Matlab 超過 30 歲了。它們有非常扎實的社區群眾基礎——不斷加入新工具包以及庫的支持。有觀點認為這些主流語言會不斷改進,并在未來的某個時間點,在原本的短板上一舉超越這些新興、但強大的小眾語言。Keith Lubell 就表達了類似的觀點,但他補充道:投資銀行業正受到來自金融科技公司越來越大的競爭壓力,迫使他們考慮利用 Julia 這些新興語言實現創新。
為了對開發者社區提供支持,AOT 的 Duve 說他有信心 Julia Computing 會成為 RStudio 那樣的機構。后者為 R 語言開發開源的免費工具及商用級的專業產品。Duve 認為,Julia 采取的開發、發布方式會鼓勵更多的企業級用戶采用它。尤其 Julia 的用戶體驗友好,它的架構使得金融和經濟學領域的專家們很容易使用,因而已受到金融圈部分人士的歡迎。紐聯儲就是一個例子。
Duve 說道:“Julia 開發者社區推動、改進該語言的方式,比 R 語言歷史上的任何時候都有條理地多。”
另外,BestX 的 Thind 表示,雖然 Julia 能被輕易部署于云端容器,但與云交互存在著風險:
“在云端服務上,用 Julia 在整個簇(cluster)部署多個處理進程,就像 MapReduce 那樣,是非常簡便、高效的。但如果你需要與 DynamoDB 或 RedShift 這樣的特定服務交互,Python 的 API 要比 Julia 的原生庫成熟、強大得多。”
想要拿 Julia 試手的開發者,需要仔細考慮他們使用該語言的用途,以及拿什么與之配合。
“所有想要加入 Julia 陣營的公司都需要弄清楚,你想要用它來實現哪些不一樣的功能?它能不能為其中至少一半的功能提供原生支持?你可以用 C 語言或者 Python 來完成剩下的那些,并且這會是完全無縫的體驗。但是,如果你的大部分應用都需要其他語言來彌補,你應該暫時緩一緩轉向 Julia,或者聯系 Julia Computing 看看能否得到缺失的功能支持。”
最后,我們來看看 Julia 創始人之一的 Viral Shah 的愿景:
“某一天,開發者社區會傳來一個信號—— Julia 已經做好準備,將進入指數級增長軌道。”
via waterstechnology
相關文章:
Python、R、Java、 C++ 等:從業界反饋看機器學習語言趨勢
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。