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