史上最強科學計算程式語言?| 麻省理工的Julia

2021-01-14 達內直播課

本月初,隨著的 1.0 版本發布的消息確認,一門名為「Julia」的高性能動態程式語言一夜之間刷爆了朋友圈和 GitHub。



首先科普一下什麼是「Julia」的高性能動態程式語言」  ,Julia是一個新的高性能動態高級程式語言。語法和其他程式語言類似,易於其他語言用戶學習。Julia擁有豐富的函數庫,提供了數字精度、精緻的增幅 器(sophisticated amplifier)和分布式並行運行方式。核心函數庫等大多數庫是由Julia編寫,但也用成熟的C和FORTRAN庫來處理線性代數、隨機數產生和字 符串處理等問題。Julia語言可定義函數並且根據用戶自定義的參數類型組合再進行重載。


這個程式語言的新版本之所以受到整個人工智慧界的關注,最主要的原因正是其將 C 語言的速度Ruby 的靈活Python 的通用性前所未有地結合在一起,支持並行處理,易於學習和使用,尤其適合科學和工程計算。


更早之前,在今年 TOIBE 8 月份程式語言排行榜上,Julia 已迅速攀升至第 50 名。根據 Julia 開發團隊的說法,在七項基礎算法的測試中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。也有越來越多的人相信,Julia 會成為未來的主流程式語言。


圖丨在過去的三個月中,Julia 在 RedMonk 的排名中上升了三位,排名第 36 位(來源:RedMonk)


Julia 的崛起,與目前程式語言發展遭遇的瓶頸息息相關:隨著人工智慧尤其是機器學習的興起,現實世界對計算的速度及性能要求也越來越高,不同的程式語言由於自身的局限性難以兼顧,例如說,在 Julia 誕生之前,很多人不得不把同樣的程序進行多次處理:首先使用 Python 或 R 這樣的語言來開發一種算法,並通過這些語言製作圖表,然後再用 C++或 Java 改寫程序,以獲得更好的計算機處理性能。


突破這種瓶頸無疑有兩個方向,一是基於現有程式語言進行優化,二是「將革命進行到底」——專門開發一門新語言。後者自然成本更高。


Julia 的開發人員顯然選擇了後者,而且他們的野心不小:Julia 被專門設計為用於快速運行基礎數學,這正是大多數數據科學的基礎,如矩陣表達式和線性代數。

 

它的誕生可追溯到 2009 年。當時,正是基於對現有程式語言的「不滿」,麻省理工學院啟動了一個新型程式語言開發計劃,到了 2012 年的時候,這個計劃有了初步的成果,也就是如今的 Julia。


具體而言,Julia 項目由麻省理工學院教授 Alan Edelman 領導,另外幾位關鍵創造者則包括Jeff Bezanson(「Julia」名字來自於 Bezanson 的一個舊項目)、Stefan Karpinski 和 Viral Shah。其大部分關鍵發展成果都來自麻省理工學院的 Julia 實驗室,也有超過 700 名志願者參與了 1.0 版本的製作。

 

「我們想開發一種開源的程式語言,我們希望這門語言有 C 語言一樣的速度、R 語言一樣的靈活性,有同像性(homoiconicity), 有像 Lisp 語言那樣擁有真正的宏特性,但是也像 Matlab 一樣有易於理解、被人所熟悉的數學標記。我們希望它像 Python 一樣易用,像 R 語言一樣適用於統計,像 Perl 一樣適用於字符串處理,處理線性代數像 Matlab 一樣強大,像 DOS 命令一樣擅長粘合程序。這似乎看起來簡單易學,但是想要讓黑客樂意去迎合它卻不是簡單之事。我們希望它具有互動性且能夠被編譯」,在《Why we created Julia》這篇文章中,Julia 團隊如此解釋他們開發這個語言的初衷。


圖丨Viral Shah


Viral Shah 也曾經表示:「如果你是一名數學家、科學家或者工程師,你可以選擇一種速度快的語言,比如 C++或 Java,又或是任意一種容易學習的語言,比如 Matlab,R,或 Python,所以我們創造了 Julia 這種又快又便捷的語言。」如今,他已經成為 Julia Computing 公司的 CEO,該公司致力於幫助其他公司使用 Julia 語言。


當然,Julia 的問世,除了讓人感慨 IT 行業發展之快、推陳出新之迅猛,另一方面也向所有人提出了一個新的問題:我究竟要不要學習這門新語言。這個問題將非常重要,就像 Y-Combinator 的聯合創始人 Paul Graham 所說的,「當你可以選擇你要用的程式語言時,不使用最強的那一種將是一個錯誤」。

 

在過去一年中,研究者利用 Julia 在一臺超級計算機上分析天文圖像,速度提升了 1000 倍,在 15 分鐘內將接近 2 億個天體進行分類。從技術上來看,這種語言還會長期發展下去。然而,現在是一個裡程碑的時刻:在本周於倫敦舉辦的 Julia 語言年會上,Julia 1.0 正式發布!一起發布的還有 JuliaCon


Julia 的開發者之一、就職於 MIT 計算機科學與人工智慧實驗室(CSAIL)的教授 Alan Edelman 表示:Julia 1.0 的發布證明,該語言已經做好準備,將 Python 和 R 的高效性和易用性與 C++的閃電速度結合在一起,改變技術世界。


圖丨Alan Edelman(來源:麻省理工學院官網)


從實際應用來說,Julia 已經用於自動駕駛汽車、機器人和 3D 印表機,此外還廣泛應用於精準醫療、增強現實、基因組學及風險管理。從 Julia 的生態系統來說,目前它主要的特徵或應用領域為數據可視化、一般性的 UI 與網站、數據科學、機器學習、科學計算與平行計算等。



Julia 目前下載量已經達到了 200 萬次,且 Julia 社區開發了超過 1900 多個擴展包。這些擴展包包含各種各樣的數學庫、數學運算工具和用於通用計算的庫。除此之外,Julia 語言還可以輕鬆使用 Python、R、C/C++ 和 Java 中的庫,這極大地擴展了 Julia 語言的使用範圍。


Julia 團隊


Julia 開發者對該語言提出了很多需求:


我們想要一種十分自由的開源語言,同時兼具 C 語言的速度和 Ruby 語言的靈活度。我們想要一種同像性語言,具有像 Lisp 一樣真正的宏,也有像 Maltlab 一樣淺顯易懂的數學符號。它是像 Python 一樣有用的通用程式語言,像 R 語言一樣便於統計的語言,像 Perl 一樣自然的字符串處理語言,像 Matlab 一樣強大的線性代數語言,也是像 shell 一樣的「膠水語言」。它簡單易學,卻能讓嚴苛的黑客們為之傾心。我們希望它兼具交互性和可編譯性。


圍繞這一語言,一個欣欣向榮的社區已經蓬勃發展起來,為了同一目標,世界各地的人們不斷地重塑並改進著 Julia。超過 700 人對 Julia 做出了實質性貢獻,更有不計其數的人製造了數千個驚人的 Julia 開源包。總之,我們構建了一種這樣的語言:


快速:Julia 為高性能而生。Julia 程序通過 LLVM 為多個平臺編譯高效的本地代碼。


通用:它使用多分派作為範例,使得表達許多面向對象和函數式的編程模式變得容易。標準庫提供異步 I/O、進程控制、日誌記錄、性能分析、包管理器等。


動態:Julia 是動態型語言,與腳本語言類似,並且支持交互式使用。


專業:它擅長數值計算,其語法適用於數學,支持多種數值數據類型,並具有良好


並行性:Julia 的多分派天生適合定義數字和類數組的數據類型。


多樣:Julia 擁有豐富的描述性數據類型,類型聲明使程序條理清晰且穩定。


可組合:Julia 的包可以很好地組合在一起。單位數量的矩陣,或者貨幣和顏色的數據列表,都可以組合——而且性能很好。


當然,Julia 1.0 中最重要的一個新特徵是對語言 API 穩定性的承諾:為 Julia 1.0 編寫的代碼可以繼續在 Julia 1.1、1.2 等版本上使用。該語言是「完全成熟的」,核心語言開發者和社區都可以基於這個堅實的基礎構建新的包、工具和特徵。


Julia 1.0 不僅涉及穩定性,還引入了多種新的強大、創新性語言功能。自 0.6 版本以來的新功能如下,更多詳細與準確的內容請查看更新文檔原文:


一種全新的內置程序包管理器給 Julia 1.0 帶來巨大的性能提升,並令其相比以往更容易進行程序包和依賴庫安裝。它還支持每項目(per-project)的包環境,並記錄工作應用的明確狀態來和其他人(以及你的未來項目)共享。最後,該新設計還完全支持私人包和軟體包存儲庫。你可以使用相同的工具安裝和管理你用於開源包生態系統的私人包。JuliaCon 的展示視頻對新設計和行為提供了很好的概述。


Julia 擁有對缺失值的新的標準表示。允許表示和處理缺失數據對於統計和數據科學來說是很基礎的。在典型的 Julia 編程形式中,新的解決方案是通用的、可組合的和高性能的。任何泛用群集類型可以高效地支持缺失值,僅需要允許元素包含預定義值 missing。這種「統一類型化」的群集的性能在過去版本中可能會非常慢,但如今的編譯器改進已經允許 Julia 在其它系統中匹配自定義 C 或 C++的缺失值表示的速度,同時在通用性和靈活性上也遠遠超越過去的版本。


內置的 String 類型現在可以安全地支持任意數據。你的程序不會在一項工作中因為無效 Unicode 的單個丟失字節就浪費數小時或數天的時間。所有的字符串數據在指示哪些字符是有效或無效的同時就已經被保存,允許你的應用安全、方便地處理包含所有不可避免瑕疵的真實世界數據。


廣播(broadcasting)由於方便的語法特性已經成為了一種核心的語言功能,並且已經比過去更加強大。在 Julia 1.0 中,可以很簡單地將廣播擴展到自定義類型,並在 GPU 和其它向量化硬體上實現高效的優化計算,為未來更高的性能效益奠定了基礎。


命名元數組是一種新的語言功能,可以通過命名使數據表示和訪問更加高效和方便。例如,你可以將一行數據表示為 row = (name="Julia", version=v"1.0.0", releases=8),並使用 row.version 來訪問 version 列,它與不那麼便利的 row [2] 有相同的性能。


點運算符現在可以重載,並允許類型使用 obj.property 句法獲取除 getting 和 setting 結構域外的含義。這對於使用 Python 和 Java 等面向對象語言之間更加平滑的交互操作非常有用。屬性訪問器重載還允許獲取一列數據的語法匹配命名元組的語法:你可以編寫 table.version 以訪問表中的 version 列,這就和使用 row.version 訪問行的 version 欄位一樣。


Julia 優化器在很多方面比我們列出來的特徵還要優秀,但這裡只會提一些亮點。優化器現在可以通過函數調用傳播常數,因此比以前能更好地消除無用代碼和實現靜態評估。編譯器在避免為長期目標分配短期包裝器方面也做得更好,這使得開發者能使用便捷的高級抽象並且不會產生性能損失。


現在可以用聲明參數類型的構造函數的方式調用它們自己,這消除了語言句法中令人困惑且模糊的地方。


完全重新設計迭代協議,使之更易實現多種可迭代量。Julia 1.0 沒有設計三種不同泛型函數(start、next、done)的方法,而是設計 iterate 函數的一參數和二參數方法。這通常允許在開始狀態使用包含默認值的單一定義來便捷地定義迭代。更重要的是,這使得實現只在嘗試並無法生成值後才知道它們已經被實施過的迭代器成為可能。這些迭代器在輸入/輸出(I/O)、網絡和生產者/消費者模式中是非常普遍的,Julia 可以用一種直接、準確的方式表達這些迭代器。


作用域規則(scope rule)被簡化。局部作用域的結構現在可以一致地進行使用,不用管某命名的全局約束是否已經存在。


Julia 語言本身是非常好的學習器,很多組件被分割封裝進 Julia 的標準庫包,而不是作為基礎語言的一部分。如果你需要它們,可以導入它們(無需安裝)。未來,標準庫還將出現多種版本,並獨立於 Julia 更新,這使得它們可以更快地迭代。



掃描二維碼 

關注我們



相關焦點

  • 「全新」程式語言 Julia開箱體驗
    本文共 1540字,閱讀大約需要 5分鐘,文末有計時器可自行對時Julia 是一個 「全新」的高性能動態程式語言
  • Julia程式語言:地球物理研究的新選擇
    Julia是一種新的程式語言,一種函數式程式語言,一種面向科學技術計算的高性能動態高級程序設計語言。Julia程式語言具有通用、動態、快速、開源、易於使用等特點。Julia程式語言設計項目大約開始於2009年中,由麻省理工學院(MIT)計算機科學與人工智慧實驗室(CSAIL)研發和發布,Julia語言的主要創造者包括Viral Shah博士、Alan Edelman教授、Jeff Bezanson博士和Stefan Karpinski。
  • Julia程式語言助力天氣/氣候模式
    雖然主要集中於地球物理流體的模擬,但研究結果也表明對於在計算流體力學的廣闊領域中應用精度較低的Posit數制具有重要的意義和應用前景。圖文在2018年8月8日,MIT正式發布程式語言Julia 1.0,號稱:Python、R、C++三合一。
  • 首屆《麻省理工科技評論》中國 生命科學創業大賽 總決賽 順利閉幕
    2020年12月20日,由《麻省理工科技評論》中國主辦的生命科學創業大賽決賽暨頒獎典禮在深圳光明區文化藝術中心成功舉辦。現場13家決賽入圍企業同臺競技,最終「新一代個性實體瘤T細胞免疫治療」企業Rootpath獲得「Biofuture冠軍大獎」,其他參賽企業也憑藉著各自的實力紛紛收穫其他獎項。
  • 2020麻省理工最新公開課資源,最牛的CS課程免費學,這也太划算了吧!
    今天,小編就給大家帶來了麻省理工2020年最新公開課的資源。作為理工學院的大牛,MIT的公開課是不少理科學生夢寐以求的。,並通過數據科學,人工智慧和數學模型的應用介紹計算思想。向學生介紹與藥物開發,疾病模型等計算相關的一些基礎知識。 課程時間 每周兩節課,每次1.5小時。 課程形式 由於Covid-19大流行,麻省理工學院校園關閉時,該課程完全在線提供。
  • MIT正式發布程式語言Julia 1.0:Python、R、C++三合一
    從 Julia 的生態系統來說,目前它主要的特徵或應用領域為數據可視化、一般性的 UI 與網站、數據科學、機器學習、科學計算與平行計算等。Julia 目前下載量已經達到了 200 萬次,且 Julia 社區開發了超過 1900 多個擴展包。這些擴展包包含各種各樣的數學庫、數學運算工具和用於通用計算的庫。
  • Julia:世界上知名的大公司都在使用這款新的程式語言!
    程式語言可謂種類繁多;數學家、研究人員和數據科學家面臨的一大問題常常是,找到實際上適合手頭處理的任何任務的某一種語言。為了避免困難,總部位於孟加拉國和美國的初創公司Julia Computing的幾位聯合創始人開發出了一種通用程式語言:Julia,不是程式設計師的人經過培訓就能使用這種語言。
  • Julia到底是怎樣的一個程式語言?它的可否媲美matlab?
    Julia到底是怎樣的一個程式語言?它的可否媲美matlab?Julia 是一個面向科學計算的高性能動態高級程序設計語言。其語法與其他科學計算語言相似。在許多情況下擁有能與編譯型語言相媲美的性能。Julia 是個靈活的動態語言,適合科學和數值計算,性能可與傳統靜態類型語言媲美。一群擁有各種語言豐富編程經驗的Matlab高級用戶,對現有的科學計算編程工具感到不滿——這些軟體對自己專長的領域表現得非常棒,但在其它領域卻非常糟糕。
  • 歐洲的麻省理工-荷蘭代爾夫特理工大學介紹-留學生專訪
    說起留學大家最先想到的就是英美澳加,但是今天探路君邀請到西西學長帶領大家一起走進荷蘭,了解一下荷蘭的留學生活,感受下荷蘭的頂級名校歐洲的麻省理工-荷蘭代爾夫特理工大學。想必大家接觸荷蘭留學也比較少吧~那荷蘭留學有什麼優勢呢?
  • 考不上印度理工,才選擇麻省理工?「印度理工」是什麼樣的學校?
    相信很多人都聽過麻省理工學院,影響力巨大,很多知名的人物都來自於這裡。對於有著出國留學機會的高材生,都會夢想著能進入麻省理工,這裡擁有超高質量的師資力量,還有很好的學習氛圍。在印度,同樣有印度理工學院,很多人考不上印度理工,才選擇麻省理工?印度理工學院到底是個什麼樣的學校?
  • 程式設計師為什麼愛用Julia語言?這裡有五點理由
    Julia是一種免費的現代高級程式語言,於2012年正式發布。作為程式語言大家族中的年輕一員,Julia提供了許多令人眼前一亮的功能和特性。 作為程式設計師,為什麼選擇使用Julia?任何一種程式語言永遠不會是完美的,而且永遠不可能成為一個最終確定的產品,而是會隨著時間的推移不斷變化和發展。本文在此分享程式設計師學習Julia程式語言的五個理由。
  • 九大免費自學編程網站,帶你告別學習焦慮
    編程codecademy國外在線學習編程的網站,它為用戶提供了一種學習編程的新方式。它是一種基於網絡的互動編程教程,手把手幫助用戶了解JavaScript的一些基本原理,更重要的是,使用Codecademy學習編程充滿了趣味性。特點:門類學習單元在線編輯器有效營銷方式新花樣的視頻教學程序的寫與調courseraCoursera是免費大型公開在線課程項目,由美國史丹福大學兩名計算機科學教授創辦。
  • 麻省理工的入學條件有哪些?
    麻省理工學院(Massachusetts Institute of Technology),簡稱麻省理工(MIT),坐落於美國麻薩諸塞州波士頓都市區劍橋市,是世界著名私立研究型大學。麻省理工學院創立於1861年,在第二次世界大戰後,麻省理工學院藉由美國國防科技研究需要而迅速崛起 ;在二戰和冷戰期間,麻省理工學院的研究人員對計算機、雷達以及慣性導航系統等科技發展作出了重要貢獻 。2017-18年度,麻省理工學院位列QS世界大學排名世界第一 、USNews世界大學排名世界第二 、世界大學學術排名(ARWU)世界第四 、泰晤士高等教育世界大學排名世界第五 。
  • 《麻省理工科技評論》35歲以下科技創新35人中國區榜單出爐:編程貓...
    2020 年12月10 - 11日,《麻省理工科技評論》全球青年科技領袖峰會暨榜單發布儀式在浙江紹興隆重舉行。 以下為《麻省理工科技評論》「35歲以下科技創新35 人」2020 年中國區榜單獲獎人名單(排名不分先後):1.巨 龍獲獎年齡:33 歲職位:麻省理工學院物理系助理教授獲獎理由:創新實驗手段,揭示了石墨烯的全新物理特性和應用前景。2.
  • 美國麻省理工知名華人教授陳剛被捕,外交部回應
    美國麻省理工知名華人教授陳剛被捕,外交部回應 澎湃新聞高級記者 於瀟清 記者 王露 2021-01-15 16:25 來源:澎湃新聞
  • 麻省理工,天才賭徒,以及地球上最會賺錢的聰明人
    從麻省理工畢業後的西蒙斯,23歲獲得加州大學伯克利分校數學博士學位,一年後出任哈佛大學數學系講師。 1968年,西蒙斯前往紐約州立石溪大學出任數學系主任,年僅30歲。
  • 韓達入選《麻省理工科技評論》「35歲以下科技創新35人」2020年...
    韓達入選《麻省理工科技評論》「35歲以下科技創新35人」2020年中國區榜單 2020-12-11 13:17 來源:澎湃新聞·澎湃號·政務
  • 印度理工大有多厲害?考不上「印度理工」,勉為其難去「麻省理工」
    美國屬於發達國家,教育方面自然也是有一定實力的,當地有不少名校,我國很多朋友都願意去這些名校深造,比如比較有名氣的麻省理工,有很多科學家和諾貝爾得獎者都是從這個學校畢業的。 不過在麻省理工卻發生了這麼一件事情,當有人問印度學生畢業於哪所學校時,他很不情願的回答到是在麻省理工上的學
  • 美國麻省理工知名華人教授陳剛被捕
    美國麻省理工知名華人教授陳剛被捕 2021-01-15 10:58 來源:澎湃新聞·澎湃號·媒體
  • 麻省理工教授陳剛被逮捕 外交部:停止搞政治操弄
    【美國麻省理工學院教授陳剛被逮捕,中方回應】當地時間1月14日,美國司法部官網消息顯示,美國工程院院士、麻省理工學院教授陳剛因未能向美國能源部披露其在中國的工作和獲得的獎勵而被起訴和逮捕。