國產(chǎn)編程語言月兔(Moonbit)嶄露頭角,首發(fā)登頂 Hacker News!
發(fā)布時間:2023-09-04 14:40:12
知乎上有一個熱門問題是:為什么中國出了這么多厲害的互聯(lián)網(wǎng)公司,但沒有自己設計過編程語言?
評論區(qū)的用戶對此眾說紛紜,大部分答主的回答并不樂觀,對中國編程語言的未來并不看好。
一位信息安全方面的知名答主表示
“現(xiàn)在中國的計算機行業(yè)還是處于非?;A的‘應用’階段,基礎理論、基礎設計方法學已經(jīng)斷代十幾年了。發(fā)達的互聯(lián)網(wǎng)公司,其實是商業(yè)模式導致的發(fā)達,互聯(lián)網(wǎng)公司的程序員是被市場和產(chǎn)品經(jīng)理推動的碼農(nóng),沒有精力去研究工具,包括語言?!?/span>
然而近日,事情有了微妙的變化。一個中國團隊開發(fā)的編程語言在Hacker News亮相。不到一天的時間登上了Hacker News的頭版頭條,在IT工業(yè)界引發(fā)了熱議,它就是「月兔(Moonbit)」(以下簡稱:Moonbit)。
國際知名的 Scala 和函數(shù)式編程專家 John A De Goes 在試用 Moonbit 后表示:「Moonbit 看起來非常適合在@GolemCloud(WasmCon 2023 的金牌贊助商、領先的WebAssembly Paas平臺)上構建應用,并表示有興趣嘗試一下?!?/span>
著名前端框架工具Vue.js作者尤雨溪、WebAssembly生態(tài)知名公司W(wǎng)asmedge在試用后在 Twitter(X) 上轉發(fā)了公告。
全球各大技術愛好者紛紛在評論區(qū)留言和評價,技術用戶在試用后,對編譯速度快到難以置信「Moonbit通過自動內存管理使編程更加簡便,從而與Rust區(qū)分開來」、「“我已經(jīng)可以想象下一個 ‘100秒’ 視頻了” “以這個速度,可能只需要500毫秒(就可以完成編譯)”」。
同時,已經(jīng)有技術用戶和語言愛好者結合自己的已有項目,探索與Moonbit結合開發(fā)的可能。
用于Chrome瀏覽器、LLVM以及Android系統(tǒng)等大型項目的構建系統(tǒng)Ninja,其作者Evan Martin在公告發(fā)布后也在評論區(qū)表示對Moonbit的期待:
同時,已經(jīng)有技術用戶和語言愛好者結合自己的已有項目,探索與Moonbit結合開發(fā)的可能。
圍繞著項目本身,目前大家普遍對于Moonbit標準庫、構建系統(tǒng)的發(fā)展表示期待。
在了解 Moonbit 語言后,來自知名公司GreenLabs的工程師Woonki嘗試使用 Moonbit 重新編寫著名的生命游戲,Moonbit 出色的編譯速度讓他深感驚嘆,因此他在Twitter(X)上發(fā)表感想,表示對這門語言的未來充滿了激動和期待。
月兔(Moonbit) 到底是什么?
那備受矚目的 Moonbit 到底是什么?它為什么能在這么短的時間內獲得大家的關注?接下來讓我們一起開 Moonbit的神秘面紗,深入了解這門語言的背景與特點。
深挖它背后的團隊,Moonbit是由IDEA研究院基礎軟件中心負責人張宏波及其經(jīng)驗豐富的團隊打造而成,僅用不到11個月的時間從立項到完成語言設計、IDE、編譯器和構建系統(tǒng)。這個團隊匯聚了多位在語言設計和開發(fā)領域擁有超過十年專業(yè)經(jīng)驗的成員。
值得一提的是,張宏波本人不僅為多種編程語言做出了貢獻,包括 OCaml、ReScript(原 ReasonML/BuckleScript)和 Flow,還曾是 ReScript 語言工具鏈幾乎所有關鍵組件的作者,包括高速編譯器、標準庫以及構建系統(tǒng)等。Moonbit 是一套專為云計算和邊緣計算設計的端到端解決方案。
它不僅包括了通用程序語言設計,還涵蓋了編譯器、構建系統(tǒng)、集成開發(fā)環(huán)境(IDE)、部署工具等各個方面。這個全面的設計使得Moonbit能夠實現(xiàn)高度垂直整合,從而為用戶提供了更出色的開發(fā)體驗和性能。
Moonbit在架構上進行了創(chuàng)新,主要表現(xiàn)在以下兩個方面:
1、設計首個為全局優(yōu)化而打造的編程語言工具鏈
在進行大規(guī)模并行編譯時的同時,Moonbit能夠儲存用于分離式編譯的高層IR,在鏈接時保存完整的代碼信息,從而在鏈接時實現(xiàn)更多優(yōu)化,提升程序的運行性能。這一模式也能更好地進行無用代碼剪枝(DCE),輸出更小的代碼體積。
傳統(tǒng)編譯器上的全局優(yōu)化存在著內存和時間消耗大、難以充分利用多核處理器性能等問題。為了緩解這一問題,Moonbit在語言特性上能更好地支持無用代碼刪除,并可達到在多個編譯階段實現(xiàn)DCE,輔以強大的靜態(tài)類型系統(tǒng)與代碼靜態(tài)分析能力減少無關代碼,有效提高程序的整體運行性能,減少程序的體積。
2、為程序語義分析并行和增量化設計的架構
借鑒以往IDE的架構經(jīng)驗,Moonbit在語言設計之初充分考慮了IDE、構建系統(tǒng)、語言設計的協(xié)同,實現(xiàn)類型檢查和推斷的高度并行化和增量化,進一步提高了編譯效率和開發(fā)體驗。另一方面,Moonbit通過自動內存來簡化編程、避開了指針或左值等危險元素,同時通過高度并行化的架構以及對分離編譯(separate compilation)的原生支持能夠實現(xiàn)云IDE在邊緣端的直接運行。這解決了業(yè)內大多數(shù)程序語言的IDE為桌面操作系統(tǒng)所設計,而未能充分考慮在云原生環(huán)境下與邊緣端的交互的問題。
Moonbit:編譯速度快、Wasm體積小、用戶友好度高的Webassembly語言
那么,Moonbit究竟有哪些功能值得開發(fā)者關注呢?主要包括以下三個方面:
首先是編譯速度快,Moonbit注重全局速度,采用多級中間表示(IR)的整體程序優(yōu)化方法,優(yōu)化內存布局以減少緩存失效,并為數(shù)據(jù)和控制流分析提供卓越的上下文。同時,Moonbit在構建性能方面也表現(xiàn)出色,通過工具鏈的垂直整合,IDE性能得到了極大的提升,這對于開發(fā)人員的體驗至關重要。根據(jù)測試,Moonbit在冷啟動環(huán)境無緩存模式下只需要不到7s就能檢測到4000個package。
第二是Wasm輸出體積小,Moonbit通過有效消除死代碼,省略了妨礙此分析的語言特性,顯著減小了最終代碼的大小。據(jù)GitHub上可用的基準測試結果,Moonbit 輸出的Wasm體積最小,僅約253字節(jié)。
第三是用戶友好度高,讓編程變得更加輕松,Moonbit無需繁復的編程語言,只需用戶掌握基本的編程概念,如變量、條件語句和循環(huán),就可以快速上手。用戶還可以輕松獲取Moonbit提供的廣泛工具集,包括管理器、編譯器、以及一個無需容器支持、具備離線功能的云IDE(集成開發(fā)環(huán)境),具備實時代碼分析和自動補全功能,助力用戶快速編寫正確的代碼。如果出現(xiàn)錯誤,編輯器會及時提供錯誤提示,幫助用戶快速發(fā)現(xiàn)問題并進行修復。
在Hackernews底部的論壇區(qū),針對Moonbit的亮相,有人問起張宏波:「這是否意味著你今后不再主導ReScript的工作,漸而把全部重心放在Moonbit的建設上?」
張宏波回應道,除了Moonbit在設計上學習Go語言和Rust語言優(yōu)點的后來者優(yōu)勢外,“從設計之初就考慮IDE,編譯器和構建系統(tǒng)上的垂直整合,利于日后整個程序語言的生態(tài)發(fā)展和穩(wěn)定”,也從側面回應了Moonbit的開發(fā)初衷——"在Wasm生態(tài)缺乏優(yōu)質供給端的今天,如果能量身為用戶和消費端打造一門與標準高度適配的語言,這在整個程序語言界可以形成后發(fā)優(yōu)勢。"
作為計算機系統(tǒng)軟件運行和網(wǎng)絡環(huán)境的基礎,基礎軟件扮演著至關重要的角色。盡管過去幾十年中計算機性能取得了巨大突破,但令人遺憾的是,軟件體驗并沒有同步提升,軟件性能的潛力仍然未能充分挖掘。在這個背景下,2017年推出的新一代標準指令集WebAssembly因其高效、輕量、安全等特性,引起了廣泛的關注。
然而,目前在WebAssembly平臺上,主流的開發(fā)語言仍然是一些對程序員門檻相對較高的底層編程語言,如C++和Rust。同時,一些應用層的語言,如Go語言,雖然在WebAssembly上運行,但其生成的代碼體積巨大,無法充分發(fā)揮WebAssembly平臺的優(yōu)勢。因此,在WebAssembly生態(tài)系統(tǒng)中,盡管已經(jīng)有數(shù)十種開源的消費端運行時,但高質量供給端的匱乏是當前面臨的最大挑戰(zhàn)。
為了填補這一生態(tài)缺失,Moonbit團隊致力于專注在WebAssembly(簡稱Wasm),打造全新語言和平臺;爭取在這個領域取得后發(fā)優(yōu)勢。正如張宏波在回答知乎熱門問題中所強調的,“做自己的語言是個很需要有情懷的事情,困難很多,但是長遠意義上是一個國家在基礎軟件問題上的話語權的問題”。
盡管中國在學術論文發(fā)表方面已經(jīng)居于世界最前列,但在大部分科技領域尤其是基礎軟件領域中依然處于大而不強的狀態(tài)。其中很大的難點在于國內缺乏自己的開發(fā)平臺。拿Matlab做例子,國內的研究人員可能會發(fā)一些數(shù)值算法或者機器學習很好的論文,論文的成果可能最終轉換成Matlab的工具箱的某個函數(shù)而不能沉淀在自己的生態(tài)里面。
在基礎軟件領域,特別是在程序語言方面也是類似的情況,業(yè)界比較流行的編程語言的社區(qū)主要集中在歐洲,比如Haskell社區(qū)基本都圍繞英國的GHC中,法國和瑞士的PL在業(yè)界公認一流,也是因為像法國INRIA這樣研究機構主導了OCaml、Coq的開發(fā),瑞士的EPFL擁有自己的研究平臺Scala。
開發(fā)Moonbit平臺是一個“道阻且長,行則將至”的過程,開發(fā)編程語言工具鏈以及培養(yǎng)自己的生態(tài)系統(tǒng)需要投入大量的時間和精力,但如果能讓國內的基礎軟件學者和工業(yè)界開發(fā)者能夠在自己的平臺上沉淀積累,這將在工程和學術的角度都具有重要意義。
在這一愿景的推動下,Moonbit誕生了,為編程軟件的未來開辟新的道路。
月兔(Moonbit)的未來之路
在 Moonbit 的未來之路上,有許多令人興奮的計劃和發(fā)展方向。
據(jù)了解,除了給用戶提供現(xiàn)有的在線IDE和VS Code擴展插件,Moonbit正在利用LLM大語言模型開發(fā) Moonbit GPT,以輔助程序員代碼準確性與提高開發(fā)效率,Moonbit將在2024年Q2達到Beta狀態(tài),在穩(wěn)定的同時,具備與Wasm宿主進行交互的外部函數(shù)接口(FFI)。在未來的戰(zhàn)略計劃中,團隊會考慮將Wasm 2.0的Wasm GC集成到Moonbit并且開發(fā)Wasm 1.0 GC。
關于未來的長期計劃,張也在Hackernews的討論區(qū)做出了回答,Moonbit將會是他退休前的最后一個項目,Moonbit團隊有一個非常強烈的決心與長期愿景,將繼續(xù)推動Moonbit的發(fā)展。
讓我們一起期待Moonbit未來的蛻變之路!
以上為本次所有分享內容