歷經10多年默默無聞的折騰和耕耘,2018年才釋出1.0版的開源程式語言Julia,終於站上大型企業程式碼現代化的舞臺中心。
至今,全球已有1萬多家企業採用這個年輕語言,包括科技巨頭Google、微軟、IBM,還有製藥大廠莫德納、AZ和輝瑞,以及全球第5大的保險公司英傑華、紐約聯邦儲蓄銀行、NASA、思科、德勤和澳洲政府。這些重量級用戶都以Julia取代舊有程式語言,來加速各領域的複雜模型運算。
程式語言後浪推前浪,Python的禪意催生Julia
在IT界,新程式語言的誕生,不外乎是要保留舊語言的好,改善舊語言的不足。Python就在這個脈絡下誕生。1980年代,在程式語言ABC開發團隊任職數年的Guido van Rossum,深知這個語言的強項與侷限,於是決定發展一款新語言,既要保留ABC容易上手的好處,又要彌補它難以實用的缺陷。
這就是Python的雛形。在另一位Python創始人Tim Peters撰寫的「Python的禪意」中,也清楚點明這個宗旨:簡單優於複雜,複雜好過繁瑣,稀疏勝於密集,可讀性是關鍵。於是,Python兼具簡單易懂又實用這兩大優點,成為系統管理專用的腳本語言,專門解決日常系統管理工作。
但當時,Python之父從沒想過,這個專為系統工作設計的腳本語言,會在30年後成為另一個目的的專用語言:資料科學,而且還在今年10月的TIOBE熱門程式語言排行中拿下冠軍,擊敗蟬聯榜首20多年的Java和C語言。
Python入門門檻低、功能強大、擁有豐富的套件生態系和社群支援,但它終究不是資料科學而生,因此有著先天的缺陷。比如,Python本身執行效率差,執行模型運算時,得靠其他工具或C語言加速,而且仍存在程式語言界長久難治的雙語言問題,無法兼具好讀好寫、執行效能又高的兩大優點。
Julia的野心:保留Python好讀好寫哲學,還兼具高效能執行力
這些不足,再加上資料科學AI大浪掀起,催生出新一代程式語言Julia。
它是麻省理工學院(MIT)在2009年發起的專案,由一位教授和三位學生組成的團隊負責。他們發豪語要打造一款資料科學專用的程式語言,要簡潔易懂,又要能高效執行,要一次終結雙語言痛點。
四位創始人Viral B. Shah、Alan Edelman、Stefan Karpinski和Jeff Bezanson在Julia正式開源的2012年,開宗明義就說:「我們很貪婪。我們要打造一個開源語言,要擁有自由的版權。它具備C的速度和Ruby的動態性,要像Python一樣用於通用程式任務,像R一般輕鬆處理統計學,像Perl自然地處理字串,要像MatLab般擁有處理線性代數的強大能力,也要像Shell一樣擅長不同程式的串接。我們要它容易上手,也要它讓最厲害的高手愛用。我們要它可以互動,還要能編譯。」
因此,在設計之初,開發團隊就全心全力投注在Julia編譯器上,希望透過編譯器的講究設計,讓程式開發者能以接近人類語言的方式撰寫程式,達到如Python般簡潔易懂,又能以平行編譯技術加速執行效率,來兼顧效能表現。
它還解決雙語言問題。一般來說,開發機器學習應用時,開發者得先使用MatLab、Python、R這類高階語言來測試、建模和建立原型,但到了正式上線或擴展時,得用更快、更有效率的低階語言來改寫程式。但若用Julia,一個語言就能搞定兩種工作。
可以說,Julia一開始就為複雜運算的資料科學設計,與以系統管理為出發點的Python有著本質上差異。另外,Julia在早期發展階段,因套件生態系尚未成熟,因此借用不少Python套件資源,這也是為何Julia對Python、R、MatLab、C等主流語言的支援度很高,使用者可以專屬套件來呼叫。
簡單易懂、高效快速,推動企業程式碼現代化
Julia正式開源後,社群成員數開始大幅增長。2015年,四位創始人共同成立IT公司Julia Computing,來支持Julia語言發展。2018年Julia釋出1.0版,告別每個月需要大幅除錯更新的階段,進入穩定期,2021年更新至1.6版,加入平行編譯技術,也解決使用者最頭痛的第一次編譯必慢速的問題,也就是方法無效(Method Invalidation)。
直至今年7月,Julia已有2,900萬次下載,在GitHub上獲得20多萬顆星星,更擁有數千名開發者貢獻6,000多個套件。這個年輕語言不僅被全球上千所學校採用,包括世界一流學府MIT、史丹佛大學與加州大學柏克萊分校,還被1萬多家企業使用,其中不乏國際知名大廠和政府機關,橫跨天文、物理、生醫、製藥、金融和半導體產業。
這些企業用戶都有一個特點,就是用Julia來執行極其複雜的運算。比如,全球第五大的保險公司英傑華,為因應歐盟最嚴格的新監理法規清償能力II(Solvency II),得每日進行複雜的資產風險模擬,來確保自己有能力應付金融危機。
原本,他們採用IBM Algo系統來執行風險模擬預測,但在法規正式上路前,英傑華金融建模總監Tim Thornham就已發現系統有所不足,於是自行以Julia開發一套風險預測系統IM3。法規上路後半年,該系統正式取代舊有Algo系統,因為IM3不只將上萬行程式碼縮短為1,000行,啟動時間也是Algo的十分之一,甚至原本執行風險預測模型所需的伺服器叢集,也從100臺縮減至5臺。
Julia要解決老舊運算工具的現代化難題
Julia核心開發團隊,對Julia還有另一個期許:要改善產業沿用老舊運算工具的難題。「現今的電腦運算技術停滯不前,」Julia創始開發者暨Julia Computing CEO Viral Shah在今年Julia技術大會前夕強調:「因為,現今的資料科學家和工程師仍使用數十年前設計出來的產品,」這些產品,多少阻礙運算效能。
比如,「1970、1980年代設計的SPICE積體電路模擬程式,」Julia Computing技術長Keno Fischer舉例,SPICE的模擬器是以C語言撰寫,但腳本全以Python寫成。使用者若要執行進階任務,比如參數化或整合機器學習模型,就會受到這些老工具的干擾,「但Julia能改善這些問題。」就連知名資料倉儲新創Snowflake前CEO Bob Muglia也應聲認為,現今業界用來開發模型的工具和系統,仍是幾十年前的產物,無法完全發揮雲端優勢。
這也是為何,Julia核心開發團隊這幾年積極打造公雲平臺JuliaHub,要在Julia語言的基礎上,來加速企業級的建模、測試和部署工作。Julia Computing更將Julia定位為,製藥、金融、HPC甚至是半導體產業等需複雜運算的專用語言,要讓程式碼工作更精簡。
臺灣也開始擁抱Julia,更貢獻重量級套件
這股風潮,也漸漸吹進臺灣。不少需要大量科學運算的學校實驗室開始擁抱Julia,比如臺大、清大、陽交大,範圍更涵蓋生醫、物理、自然語言處理和智慧製造,而專攻生物資訊的中研院博士候選人杜岳華,也發起Julia臺灣社群,自己更是Julia重要開發成員之一。
他所開發的圖類神經網路套件GeometricFlux.jl,在2019年被Julia納入官方重要資源中,同樣被Julia官方看上的,還有臺灣碩士生開發的Transformer.jl套件與NeuralOperators套件,紛紛將影響全球AI社群的模型,以Julia實作出來,壯大Julia套件生態系。
除了學界,臺灣還有少數企業也開始用Julia改善作業效率,像是專攻政府大數據和AI的卡米爾,以Julia改寫重要架構中20%核心程式碼,就得到比原本Python還要快10倍的速度,更省下大筆雲端平臺年租費。
在臺灣,Julia的身影越來越清晰了。
快速秒懂Julia
• 高效運算:用LLVM編譯器進行即時編譯(JIT)
• 直覺語法:簡潔度與Python媲美
• 動態型別:可指定變數型別
• 支援Python和C套件:可以PyCall呼叫Python程式碼
• 內建套件管理器:方便管理、查詢套件
• Metaprogramming:可用來生成其他Julia程式
• 自動記憶體管理:提供一系列垃圾回收方法
• 平行化運算:語法比Python簡單
資料來源:iThome整理,2021年10月
熱門新聞
2024-12-10
2024-12-08
2024-12-10
2024-12-10
2024-11-29
2024-12-10