作者 | 周一笑
編輯 |王兆洋
2022年末,當(dāng)ChatGPT的火種剛剛在全球點(diǎn)燃,引發(fā)第一波的震撼與驚嘆時(shí),張宏波進(jìn)行了一項(xiàng)實(shí)驗(yàn)。他將自己剛剛孕育雛形的編程語(yǔ)言MoonBit的文法(Grammar)——一段描述語(yǔ)言規(guī)則的枯燥文本,喂給了那個(gè)強(qiáng)大的新模型。
結(jié)果讓他始料未及。
“它就能生成 MoonBit 代碼,雖然它之前從未‘見(jiàn)過(guò)’這門(mén)語(yǔ)言,”時(shí)隔兩年多,張宏波回憶起那一刻,依然反復(fù)使用一個(gè)詞:“不可思議。”
那一刻的“不可思議”,如今已結(jié)出果實(shí)。2025年6月18日,經(jīng)過(guò)無(wú)數(shù)次的迭代與優(yōu)化,MoonBit 發(fā)布了它的 Beta 正式版。它正在擺脫“實(shí)驗(yàn)性技術(shù)”的標(biāo)簽,演進(jìn)為一門(mén)適用于企業(yè)正式場(chǎng)景的工具。
或許大多數(shù)人對(duì)“編程語(yǔ)言”的認(rèn)知還停留在大學(xué)課堂上的 C 語(yǔ)言,或是如今因 AI 而無(wú)處不在的 Python。簡(jiǎn)單來(lái)說(shuō),MoonBit 就是一門(mén)全新的編程語(yǔ)言,和它們一樣,是構(gòu)建所有軟件的基石。它的目標(biāo)是成為一門(mén)可以用來(lái)開(kāi)發(fā)網(wǎng)站、APP、服務(wù)器后臺(tái)等各種應(yīng)用的“通用語(yǔ)言”。但在 AI 時(shí)代,它選擇了一條與前輩們截然不同的道路。
近年來(lái),像 GitHub Copilot、Cursor 這樣能幫你自動(dòng)寫(xiě)代碼的 AI coding 工具層出不窮,AI coding 工具的主要目標(biāo)是提升開(kāi)發(fā)者在現(xiàn)有語(yǔ)言上的編程效率,張宏波和他的團(tuán)隊(duì)也是這些工具的重度用戶,他坦言,AI 的輔助讓他“一天提交七八個(gè) PR”。
但這些工具終究是“外掛”,是在現(xiàn)有語(yǔ)言的規(guī)則下進(jìn)行輔助。而 MoonBit 所做的,是從源頭開(kāi)始,重新設(shè)計(jì)一張更適合“AI 副駕駛”來(lái)閱讀和馳騁的地圖。這就是 MoonBit“AI 原生”的核心理念:它并非要自己成為一個(gè) AI,而是要?jiǎng)?chuàng)造一門(mén)能讓 AI 用起來(lái)最得心應(yīng)手、最不容易出錯(cuò)的語(yǔ)言。它的語(yǔ)法、類型系統(tǒng)、錯(cuò)誤處理機(jī)制等,在設(shè)計(jì)之初就深度考慮了如何讓AI更容易地理解、生成和驗(yàn)證代碼,從而解決AI編程中“代碼寫(xiě)出來(lái)但不知道怎么維護(hù)”等痛點(diǎn),保證代碼的可維護(hù)性 。
張宏波舉了一個(gè)例子,MoonBit使用 let x = 3 而不是類似Go語(yǔ)言的 x := 3。因?yàn)?let 關(guān)鍵字為AI提供了一個(gè)明確的“新變量聲明”信號(hào),讓AI在生成代碼時(shí)可以做“受限解碼”,從而更可靠。而后者則有歧義,AI 難以判斷是新聲明還是賦值,容易出錯(cuò) 。
簡(jiǎn)單來(lái)說(shuō),一個(gè)設(shè)計(jì)良好的AI原生語(yǔ)言,能讓通用的AI Coding工具在操作這門(mén)語(yǔ)言時(shí)表現(xiàn)得更好。更進(jìn)一步,MoonBit 團(tuán)隊(duì)正在開(kāi)發(fā)自己的 AI 編程 Agent。因?yàn)橥耆瓶?MoonBit 的工具鏈,所以可以做到通用工具無(wú)法實(shí)現(xiàn)的功能。例如,通過(guò)分析代碼結(jié)構(gòu),并發(fā)地讓AI去修復(fù)多個(gè) Bug,而不是像其他工具那樣只能一個(gè)一個(gè)地串行修復(fù)。
要實(shí)現(xiàn)如此構(gòu)想,需要對(duì)編程語(yǔ)言的整個(gè)工具鏈有極強(qiáng)的掌控力與理解。而這一切,正來(lái)源于張宏波近二十年的技術(shù)積累。時(shí)間撥回到 2009 年,他在清華大學(xué)與微軟亞洲研究院的聯(lián)合培養(yǎng)項(xiàng)目中,完成了自己的本科畢業(yè)設(shè)計(jì)——一門(mén)名為“悟空”的動(dòng)畫(huà)編程語(yǔ)言 。此后,從研究可以創(chuàng)造新語(yǔ)言的“元編程語(yǔ)言”,到進(jìn)入賓夕法尼亞大學(xué)攻讀博士,他的學(xué)術(shù)路徑始終精準(zhǔn)地指向編譯與語(yǔ)言設(shè)計(jì)這個(gè)基礎(chǔ)軟件領(lǐng)域最核心的地帶 。
一個(gè)偶然的機(jī)遇讓他的人生軌跡從學(xué)術(shù)轉(zhuǎn)向工業(yè)。當(dāng)時(shí),金融巨頭彭博社(Bloomberg)急需一位能維護(hù)其核心交易軟件的OCaml編譯器專家,這個(gè)小眾而關(guān)鍵的崗位,讓彭博為還在讀博的張宏波開(kāi)出了難以拒絕的條件,最終使他中斷學(xué)業(yè),投身華爾街 。在彭博,他再次展現(xiàn)了自己的天賦與熱情——為了統(tǒng)一公司上千萬(wàn)行JavaScript前端代碼與OCaml后端的技術(shù)棧,他在業(yè)余時(shí)間,獨(dú)自開(kāi)發(fā)了一個(gè)能將OCaml高效編譯成可讀JavaScript的編譯器。
這個(gè)無(wú)心插柳的項(xiàng)目,后來(lái)演變成了知名的開(kāi)源項(xiàng)目BuckleScript(ReScript的前身),并吸引了另一家科技巨頭 Facebook 的注意。2017 年,當(dāng)張宏波決定回國(guó)時(shí),F(xiàn)acebook 為了留住這位關(guān)鍵的編譯器開(kāi)發(fā)者,破例允許他作為唯一的員工在中國(guó)遠(yuǎn)程辦公 。
在 Facebook 的五年,是他技術(shù)生涯的成熟期,也是一段漫長(zhǎng)的蓄力。直到 2022 年,幾個(gè)關(guān)鍵節(jié)點(diǎn)匯集到了一起:個(gè)人上,他渴望在優(yōu)厚的薪資之外,尋求更大的挑戰(zhàn)和創(chuàng)造空間;外部,他昔日在清華的導(dǎo)師 Harry 沈向洋向他發(fā)出了加入IDEA研究院(粵港澳大灣區(qū)數(shù)字經(jīng)濟(jì)研究院)的邀請(qǐng),在“加入已經(jīng)擁有數(shù)百人團(tuán)隊(duì)的某編程語(yǔ)言團(tuán)隊(duì)”和“從零開(kāi)始組建自己的團(tuán)隊(duì)”之間,他選擇了后者——那個(gè)更具不確定性,也更具想象力的選項(xiàng)。
于是,在深圳,MoonBit項(xiàng)目正式立項(xiàng)。
命運(yùn)的奇妙之處在于它的時(shí)機(jī)。MoonBit項(xiàng)目啟動(dòng)于2022年10月,一個(gè)月后,ChatGPT發(fā)布,引爆了全球的AI浪潮。當(dāng)所有主流編程語(yǔ)言——Java、Python、Rust——都已在AI時(shí)代來(lái)臨前定型,只能在現(xiàn)有基礎(chǔ)上“嫁接”AI能力時(shí),MoonBit這門(mén)“生于AI紀(jì)元之初”的語(yǔ)言,獲得了一個(gè)千載難逢的歷史機(jī)遇。
“我們幾乎是沒(méi)有浪費(fèi)任何時(shí)間,”張宏波說(shuō) 。從使用 Llama 模型第一次在他個(gè)人電腦上成功生成 MoonBit 代碼的那天起,團(tuán)隊(duì)就決定“All-in” AI。他們開(kāi)始從語(yǔ)言設(shè)計(jì)的最底層,從語(yǔ)法的每一個(gè)細(xì)節(jié),去思考如何讓AI能更可靠、更高效地生成代碼。
兩年半后的今天,MoonBit Beta 版本中,在語(yǔ)言層面提供了原生的異步與錯(cuò)誤處理機(jī)制。相較于 Python 需要通過(guò) async/await和第三方庫(kù)實(shí)現(xiàn)的異步模型,MoonBit 提供了一種更自然、零語(yǔ)法負(fù)擔(dān)的并發(fā)范式,并在編譯期就能追蹤錯(cuò)誤傳播路徑,為構(gòu)建穩(wěn)定、可維護(hù)的智能系統(tǒng)打下了堅(jiān)實(shí)基礎(chǔ)。
MoonBit 的故事,既是張宏波個(gè)人技術(shù)生涯的延續(xù),也是對(duì)“AI時(shí)代,編程究竟該如何演變?”的另一種回答。
在MoonBit Beta正式發(fā)布,在架構(gòu)穩(wěn)定性和工程實(shí)用性上取得關(guān)鍵突破,正式進(jìn)入可落地應(yīng)用的新階段,朝著可被實(shí)際部署的基礎(chǔ)設(shè)施技術(shù)前進(jìn)的關(guān)鍵節(jié)點(diǎn),我們和張宏波聊了聊,以下為對(duì)話實(shí)錄,經(jīng)不改變?cè)獾木庉嫛?/b>
AI Coding有時(shí)候提供的只是情緒價(jià)值,我們要從底層做一門(mén)新語(yǔ)言,這才是AI編程的未來(lái)
硅星人:您如何理解“AI原生”編程語(yǔ)言這個(gè)概念?在這個(gè)理念上,MoonBit 與業(yè)界其他探索者有何不同?
張宏波:在大模型時(shí)代,Python 可能并沒(méi)有大家想象中那么大的優(yōu)勢(shì),它只是起步快一點(diǎn)。對(duì)于“AI原生”,很多人有不同的理解。比如 Mojo,它的創(chuàng)始人 Chris Lattner 是 LLVM 項(xiàng)目的奠基人,他對(duì)“AI原生”的理解是,讓 Mojo 這門(mén)語(yǔ)言非常適合開(kāi)發(fā)高性能計(jì)算程序。我們認(rèn)為,AI原生編程語(yǔ)言的核心議題是:如何讓AI更高、更好、更高效地、甚至是并發(fā)地生成目標(biāo)代碼。
為什么我覺(jué)得這個(gè)方向的市場(chǎng)是最大的?開(kāi)發(fā)高性能算子固然重要,但這就像用C語(yǔ)言寫(xiě)操作系統(tǒng)內(nèi)核,是金字塔尖少數(shù)人的工作,需求量有限 。而 AI agent,我們自己也開(kāi)發(fā)了很多,它的生態(tài)其實(shí)很小,核心邏輯可能就幾千行代碼,很難構(gòu)成真正的技術(shù)護(hù)城河,一個(gè)通用的庫(kù)就能解決大部分問(wèn)題。
所以,我們對(duì)“AI原生”的理解聚焦于賦能大模型本身。我們希望大模型可以更高效、并發(fā)地生成可靠、高性能的MoonBit代碼。這意味著最終生成的代碼不僅可信度要更好、性能要高,而且整個(gè)生成過(guò)程也必須是快速且可靠的 。
硅星人:這個(gè)“為AI而設(shè)計(jì)”的理念,具體是如何影響 MoonBit 語(yǔ)言本身的設(shè)計(jì)決策的?
張宏波:這個(gè)理念帶來(lái)了深刻的變化,很多傳統(tǒng)語(yǔ)言設(shè)計(jì)中非常重視的特性,在我們看來(lái)優(yōu)先級(jí)就沒(méi)有那么高了 。最直接的一點(diǎn)就是,我們不會(huì)像過(guò)去那樣,過(guò)度強(qiáng)調(diào)語(yǔ)法是不是要節(jié)省一兩個(gè)字符,因?yàn)槲磥?lái)絕大部分代碼都將由AI生成,為人類節(jié)省幾秒鐘的打字時(shí)間意義不大。
更重要的是,你需要在一個(gè)巨大的設(shè)計(jì)空間里找到一個(gè)精妙的平衡點(diǎn)。這個(gè)空間的兩端,一端是像 Python、 JavaScript 這樣最自由(liberal)的語(yǔ)言,另一端是像 Rust,尤其是 Lean(一種用于形式化數(shù)學(xué)證明的邏輯編程語(yǔ)言)那樣最嚴(yán)格的語(yǔ)言 。Lean 的嚴(yán)格性可以從數(shù)學(xué)上證明代碼的正確性,但正因如此,它對(duì)人類來(lái)說(shuō)極難書(shū)寫(xiě) 。
我們的實(shí)踐經(jīng)驗(yàn)是,如果一門(mén)語(yǔ)言過(guò)于復(fù)雜,以至于人類專家都很難一次性寫(xiě)對(duì),那么AI大概率也無(wú)法穩(wěn)定地生成正確的代碼 。我們發(fā)現(xiàn),如果一個(gè)大模型在某個(gè)問(wèn)題上嘗試一兩次都無(wú)法搞定,那它基本就永遠(yuǎn)也搞不定了,至少以目前的技術(shù)水準(zhǔn)是這樣。
所以,MoonBit 的選擇是在中間找到一個(gè)最佳平衡(sweet spot)。我們既要保證代碼的可靠性,又不能讓類型系統(tǒng)過(guò)于復(fù)雜,以至于超出AI的能力邊界。
硅星人:既然 AI 是核心,那么在您看來(lái),一個(gè)真正的“AI原生”語(yǔ)言,未來(lái)需要在語(yǔ)言層面提供什么樣的功能?
張宏波:我認(rèn)為它會(huì)深度影響語(yǔ)言的設(shè)計(jì),而不僅僅是一個(gè)外掛。我們現(xiàn)在主要關(guān)注的是代碼生成,但這只是開(kāi)始。例如,未來(lái)我們可能會(huì)有新的語(yǔ)法特性來(lái)原生支持 AI。比如我寫(xiě)完一個(gè)函數(shù),我希望語(yǔ)言能直接支持生成它的文檔字符串(doc string),而不是像現(xiàn)在這樣需要通過(guò)外部插件來(lái)完成。
這就像一門(mén)為數(shù)據(jù)庫(kù)設(shè)計(jì)的語(yǔ)言,如果它不在語(yǔ)法層面提供對(duì)數(shù)據(jù)庫(kù)操作的支持,只是通過(guò)外掛庫(kù)來(lái)連接,那么它就不能算“數(shù)據(jù)庫(kù)原生”的。AI原生語(yǔ)言也是同樣的道理,它需要在語(yǔ)言的基因里就植入與AI協(xié)同的能力。
硅星人:很多開(kāi)發(fā)者擔(dān)心,AI生成的代碼雖然快,但項(xiàng)目做大后會(huì)變得難以維護(hù),像一個(gè)“黑盒”。MoonBit 作為一門(mén)“為 AI 而生”的語(yǔ)言,是如何從設(shè)計(jì)上解決這個(gè)“可維護(hù)性”問(wèn)題的?
張宏波:這個(gè)擔(dān)憂非常普遍,也切中了要害。我之前也看到有人吐槽說(shuō),用AI兩天寫(xiě)了一個(gè)視頻編輯器,但完全不知道后續(xù)該怎么維護(hù)。這通常是因?yàn)榇a是用動(dòng)態(tài)語(yǔ)言寫(xiě)的,正所謂“動(dòng)態(tài)語(yǔ)言一時(shí)爽,重構(gòu)火葬場(chǎng)”。
所以,解決這個(gè)問(wèn)題的核心在于代碼的可維護(hù)性,而這正是需要從編程語(yǔ)言的底層設(shè)計(jì)上來(lái)保證的。比如,MoonBit擁有一個(gè)非常強(qiáng)大的靜態(tài)類型系統(tǒng)。我們會(huì)為每個(gè)代碼包(package)自動(dòng)生成一個(gè)形式化的“簽名”(我們稱之為MBI文件),它就像一份精確的接口摘要。當(dāng)你需要理解或維護(hù)一段代碼時(shí),你不再需要去閱讀海量的實(shí)現(xiàn)細(xì)節(jié),只需查看這份由工具保證其正確性的摘要文檔即可,大大降低了維護(hù)成本。
此外,我們還非常注重語(yǔ)言的“局部化”(localization)設(shè)計(jì)。這意味著,當(dāng)你修改一個(gè)函數(shù)時(shí),它的影響應(yīng)該被嚴(yán)格限制在局部,不會(huì)意外地波及到其他不相關(guān)的代碼。很多語(yǔ)言,比如C++或者OCaml,改動(dòng)一個(gè)地方可能會(huì)導(dǎo)致全局語(yǔ)義發(fā)生變化,這對(duì)于人類和AI來(lái)說(shuō)都是一場(chǎng)災(zāi)難。一個(gè)具有良好局部性的語(yǔ)言,能讓AI在處理代碼時(shí),只用聚焦于當(dāng)前的小代碼塊,極大地簡(jiǎn)化了上下文,從而提升了維護(hù)性和可靠性。
硅星人:您認(rèn)為在AI時(shí)代,編程語(yǔ)言本身的價(jià)值會(huì)發(fā)生變化嗎?它會(huì)更偏向于讓人類使用,還是讓AI使用?
張宏波:我認(rèn)為未來(lái)是人機(jī)協(xié)同的模式,而不是單純給AI用的語(yǔ)言。我個(gè)人感覺(jué),AI的智能水平可能正在接近一個(gè)平臺(tái)期,指望它很快變得比人聰明很多并不現(xiàn)實(shí)。只要人類還需要審查(review)、理解和維護(hù)代碼,那么語(yǔ)言就必須同時(shí)兼顧人類和機(jī)器的可讀性。
有趣的是,AI的出現(xiàn),反而可能會(huì)淘汰掉一些“過(guò)度為人類交互而設(shè)計(jì)”的東西。比如曾經(jīng)有一個(gè)叫“結(jié)構(gòu)化編輯器”的概念,它通過(guò)限制你的編輯方式來(lái)確保語(yǔ)法永遠(yuǎn)正確。這種模式對(duì)人類的交互很友好,但對(duì)大模型來(lái)說(shuō)卻是一種束縛,因?yàn)樗茐牧舜a作為純文本的自由格式,反而不利于AI的理解和生成。
所以,未來(lái)的編程語(yǔ)言設(shè)計(jì),需要在兩者之間找到新的平衡:它要足夠結(jié)構(gòu)化和清晰,以便機(jī)器能高效、可靠地處理;同時(shí)也要保持足夠的簡(jiǎn)潔和直觀,讓人類能夠輕松地審查和驗(yàn)證AI生成的結(jié)果。這正是我們?cè)贛oonBit中努力探索的方向。
硅星人:您提到AI能極大提升效率,在MoonBit團(tuán)隊(duì)內(nèi)部,你們具體是如何利用AI來(lái)輔助日常工作的?
張宏波:我們每天都在高強(qiáng)度地使用 AI,可以說(shuō),如果沒(méi)有 AI,我的個(gè)人生產(chǎn)力會(huì)大幅下降。特別是現(xiàn)在我需要花更多精力帶領(lǐng)團(tuán)隊(duì)、考慮各方面的事情,寫(xiě)代碼的時(shí)間越來(lái)越少。AI 的輔助真的可以讓我的生產(chǎn)力翻倍地提高。舉個(gè)例子,就在前一天,我在不到 24 小時(shí)內(nèi),利用 AI 輔助完成了七八個(gè)代碼提交(Commit/PR),這在過(guò)去是難以想象的。這些工作有的是修復(fù)Bug,有的是補(bǔ)充文檔和注釋,AI 都能處理得很好。
除了個(gè)人提效,我們還在探索更有組織性的 AI 用法。比如,MoonBit現(xiàn)在最缺的就是生態(tài)庫(kù),我們暢想在年底之前,能有上百個(gè)“AI Agent”在夜以繼日地為MoonBit寫(xiě)代碼,將其他語(yǔ)言的成熟生態(tài)(比如一些加密算法庫(kù))高效地“搬運(yùn)”過(guò)來(lái)。這比雇傭100個(gè)工程師要容易得多。
更進(jìn)一步,因?yàn)槲覀兺耆瓶豈oonBit的語(yǔ)言和工具鏈,我們可以開(kāi)發(fā)出比通用工具更高效的AI Agent。例如,當(dāng)需要修復(fù)代碼庫(kù)中的多個(gè)警告或Bug時(shí),通用工具可能只能一個(gè)一個(gè)地串行修復(fù)。而我們的Agent可以利用對(duì)MoonBit代碼結(jié)構(gòu)的深度理解,先將代碼庫(kù)智能地拆分成許多互不影響的小塊,然后并發(fā)地讓大模型去并行修復(fù),最后再將結(jié)果安全地合并回來(lái)。這種利用語(yǔ)言設(shè)計(jì)來(lái)優(yōu)化AI工作流的能力,是我們的核心優(yōu)勢(shì)之一。
硅星人:你們團(tuán)隊(duì)也使用Cursor等通用AI編程工具。作為資深開(kāi)發(fā)者和語(yǔ)言設(shè)計(jì)者,如何評(píng)價(jià)這些當(dāng)紅產(chǎn)品?
張宏波:我們團(tuán)隊(duì)確實(shí)都用,包括Cursor、Copilot、Codex,以及我們自己的moon-agent。我個(gè)人感覺(jué),還是小團(tuán)隊(duì)更有活力,比如Cursor的整體體驗(yàn)就要比Copilot強(qiáng)很多。可以說(shuō),如果Copilot做得足夠好,根本不會(huì)留給Cursor這樣的初創(chuàng)公司機(jī)會(huì)。
但同時(shí),我也認(rèn)為像Cursor這類產(chǎn)品的技術(shù)護(hù)城河并沒(méi)有大家想象中那么高。它的核心功能可以分為兩部分:一個(gè)是你打字時(shí)實(shí)時(shí)補(bǔ)全代碼(tap-to-type),另一個(gè)是基于對(duì)話的Agent。前者技術(shù)含量更高,可能需要訓(xùn)練專門(mén)的小模型,但它提供的更多是一種讓你感覺(jué)編碼更快的“情緒價(jià)值”,對(duì)生產(chǎn)力的根本提升有限。真正能大幅提升生產(chǎn)力的是后者,即Agent幫你編寫(xiě)完整的代碼塊,而這部分的技術(shù)門(mén)檻并不算特別高,更多是依賴底層大模型(基模)的能力。
此外,過(guò)度依賴通用AI編程工具還存在被“卡脖子”的風(fēng)險(xiǎn)。比如 Google 之前就限制過(guò)插件的安裝。我們做MoonBit,堅(jiān)持自己寫(xiě)底層的語(yǔ)言服務(wù),就是希望站在產(chǎn)業(yè)鏈更上游的位置,不把自己的命運(yùn)交到別人手里。我們的策略是,不做通用的AI編程工具,而是專注于為MoonBit這一門(mén)語(yǔ)言提供最強(qiáng)大、最深度的AI增強(qiáng)功能,這才是我們自己寬廣的護(hù)城河。
比現(xiàn)有主流語(yǔ)言都好一個(gè)數(shù)量級(jí)以上,才能搶奪市場(chǎng),beta版發(fā)布意味著進(jìn)入穩(wěn)定期
硅星人:我注意到MoonBit初期非常強(qiáng)調(diào)在WebAssembly領(lǐng)域的優(yōu)勢(shì),這是出于怎樣的戰(zhàn)略考量?
張宏波:這是一個(gè)刻意的戰(zhàn)略選擇,很多人會(huì)誤以為MoonBit只做WebAssembly,其實(shí)我們支持所有主流后端,包括JavaScript和原生機(jī)器碼。
我們之所以首先聚焦 WebAssembly,是因?yàn)樾抡Z(yǔ)言的推廣周期非常長(zhǎng),動(dòng)輒需要數(shù)年才能獲得第一個(gè)真正的商業(yè)用戶。作為一個(gè)有資金支持的機(jī)構(gòu)項(xiàng)目,我們不可能像個(gè)人愛(ài)好者那樣“為愛(ài)發(fā)電”,等上十年再拿出成果。我們需要在一年、兩年、三年,每年都交付出實(shí)實(shí)在在的東西,讓大家看到進(jìn)展。
要在這么短的時(shí)間內(nèi)讓開(kāi)發(fā)者愿意嘗試一門(mén)全新的語(yǔ)言,唯一的辦法,就是在某個(gè)特定的、有痛點(diǎn)的平臺(tái)上,做到比所有現(xiàn)有主流語(yǔ)言都好一個(gè)數(shù)量級(jí)以上。我們審視了一圈,發(fā)現(xiàn) WebAssembly 就是那個(gè)機(jī)會(huì)。它在2017年才發(fā)布1.0標(biāo)準(zhǔn),而所有現(xiàn)在的主流語(yǔ)言,其核心設(shè)計(jì)都早已在那之前定型,它們?cè)诰幾g到Wasm時(shí),或多或少都有歷史包袱,導(dǎo)致性能和體積表現(xiàn)都不理想。最典型的例子就是 Go,一個(gè)“Hello World”程序編譯成 Wasm 后體積竟高達(dá) 1.8兆,這與Wasm輕量的初衷背道而馳。
MoonBit 作為一門(mén)沒(méi)有歷史包袱的新語(yǔ)言,完全可以為 Wasm 進(jìn)行深度優(yōu)化。我們的判斷是,我們有希望在這個(gè)單點(diǎn)上做到比所有對(duì)手都好一個(gè)數(shù)量級(jí)。事實(shí)也證明了這個(gè)策略的成功。我們?cè)缙诘纳虡I(yè)客戶,包括付費(fèi)客戶,幾乎都是看中了我們?cè)赪asm后端上的搶眼表現(xiàn),這讓我們獲得了寶貴的初始動(dòng)力。有了這個(gè)根據(jù)地,我們才不會(huì)焦慮,可以更有耐心地去做更宏大的事情,比如完善我們的原生和 JavaScript 后端。
硅星人:你們近期宣布項(xiàng)目進(jìn)入了Beta里程碑,這對(duì)用戶和社區(qū)意味著什么?
張宏波:Beta 版本的發(fā)布主要意味著三件事。第一,語(yǔ)言特性已經(jīng)足夠豐富,覆蓋了工業(yè)級(jí)開(kāi)發(fā)的核心需求,包括完善的異步支持、泛型和錯(cuò)誤處理。坦白說(shuō),我們Beta版的特性比Go 1.0發(fā)布時(shí)還要全面。
第二,也是更重要的,語(yǔ)法進(jìn)入了穩(wěn)定期。在此之前,為了追求最佳設(shè)計(jì),我們迭代非常快,可能今天寫(xiě)的代碼,兩周后就因?yàn)檎Z(yǔ)法變動(dòng)而無(wú)法編譯了。進(jìn)入Beta階段后,我們承諾不會(huì)再輕易進(jìn)行破壞性的語(yǔ)法修改,這意味著用戶可以放心地在生產(chǎn)項(xiàng)目中使用MoonBit,不用再擔(dān)心當(dāng)“小白鼠”了。
第三,我們將建立更正規(guī)的社區(qū)溝通機(jī)制。過(guò)去很多決策是內(nèi)部決定的,未來(lái)任何涉及語(yǔ)言語(yǔ)法的改動(dòng),我們都會(huì)通過(guò)公開(kāi)的RFC(Request for Comments)流程,與社區(qū)提前溝通,讓大家更早地參與進(jìn)來(lái),培養(yǎng)一種共建的參與感。
硅星人:MoonBit作為一門(mén)新語(yǔ)言,如何解決生態(tài)冷啟動(dòng)的問(wèn)題?我注意到你們提到了“無(wú)縫融合Python生態(tài)”。
張宏波:生態(tài)確實(shí)是新語(yǔ)言最大的挑戰(zhàn)。關(guān)于Python生態(tài),我們的策略是“復(fù)用”而非“重造”。Python的官方解釋器CPython是用C語(yǔ)言寫(xiě)的。由于MoonBit現(xiàn)在支持直接編譯到C代碼,我們就能實(shí)現(xiàn)與C的良好互操作,從而直接調(diào)用CPython的運(yùn)行時(shí)。
這意味著,我們可以為成熟的Python庫(kù)(如Matplotlib、PyQt等)編寫(xiě)綁定(binding),讓開(kāi)發(fā)者可以在MoonBit項(xiàng)目中直接使用它們,比如快速搭建一個(gè)UI原型。這提供了一條漸進(jìn)式的遷移路徑:你可以先用Python庫(kù)快速出成果,然后逐步地、在性能瓶頸處用原生的MoonBit代碼重寫(xiě)那部分功能,極大地降低了遷移成本和風(fēng)險(xiǎn)。
硅星人:MoonBit的長(zhǎng)期商業(yè)模式是什么?
張宏波:我們長(zhǎng)期的愿景,是成為一家軟件服務(wù)公司,而非像JetBrains那樣售賣開(kāi)發(fā)工具。
我們的商業(yè)化分兩步走。短期內(nèi),通過(guò)為有深度定制需求(比如修改編譯器)的大客戶提供授權(quán)和服務(wù),我們完全可以覆蓋一個(gè)十幾人團(tuán)隊(duì)的開(kāi)銷,保證生存。我們的早期付費(fèi)客戶,比如那家數(shù)據(jù)庫(kù)公司,就是有這樣的需求。
但我們真正的目標(biāo)在更遠(yuǎn)處。當(dāng)MoonBit生態(tài)成熟,擁有百萬(wàn)級(jí)用戶和我們完全掌控的工具鏈(從IDE到包管理)后,我們將有能力打造一個(gè)前所未有的、高效的代碼交付云平臺(tái)。在這個(gè)平臺(tái)上,用戶只需通過(guò)自然語(yǔ)言提出需求(Prompt),我們的AI Agent就能利用對(duì)MoonBit語(yǔ)言的深度理解,自動(dòng)地為你生成、構(gòu)建、測(cè)試甚至部署一整個(gè)軟件服務(wù)。我們最終向用戶交付的,是一個(gè)可以直接使用的軟件服務(wù),而不僅僅是代碼。為了保護(hù)這個(gè)長(zhǎng)遠(yuǎn)目標(biāo),避免未來(lái)被云廠商“摘桃子”,我們對(duì)編譯器的核心部分保留了所有權(quán),這也是我們開(kāi)源策略中相對(duì)保守一面的原因。
一位編程語(yǔ)言“老兵”的二十年
硅星人:在創(chuàng)立 MoonBit 之前,您已經(jīng)在 ReScript 等多個(gè)編程語(yǔ)言項(xiàng)目上取得了卓越成就。能和我們分享一下您的這段技術(shù)歷程嗎?
張宏波:我從 2009 年的本科畢設(shè)就開(kāi)始做編程語(yǔ)言了。當(dāng)時(shí)在清華大學(xué)和微軟亞洲研究院(MSRA)的聯(lián)合培養(yǎng)項(xiàng)目中,我開(kāi)發(fā)了一款名叫“悟空”的動(dòng)畫(huà)編程語(yǔ)言,算是一個(gè)小型的領(lǐng)域特定語(yǔ)言(DSL)吧。從那時(shí)算起,到現(xiàn)在快20年了。我的碩士課題則是一門(mén)“元編程語(yǔ)言”,即一種可以用來(lái)創(chuàng)造新編程語(yǔ)言的語(yǔ)言 。
我本來(lái)是在賓夕法尼亞大學(xué)讀編程語(yǔ)言的博士,但人生軌跡因?yàn)镺Caml發(fā)生了變化。OCaml是我深度參與維護(hù)的一門(mén)函數(shù)式編程語(yǔ)言。當(dāng)時(shí),紐約的彭博社(Bloomberg)收購(gòu)了一家法國(guó)公司,其核心的金融衍生品定價(jià)軟件就是用OCaml的一個(gè)內(nèi)部方言(dialect)寫(xiě)的。市場(chǎng)上懂OCaml的人才非常稀缺,他們找不到人,于是就找到了我,并給了一份非常優(yōu)厚的錄用信。最終我決定中止學(xué)業(yè),碩士畢業(yè)后就直接去了紐約,負(fù)責(zé)維護(hù)他們那個(gè)私有的OCaml編譯器。
在彭博工作期間,我又利用業(yè)余時(shí)間開(kāi)啟了一個(gè)新項(xiàng)目。當(dāng)時(shí)(大約2014年),彭博已經(jīng)擁有上千萬(wàn)行用JavaScript寫(xiě)的前端UI代碼,而后端則在使用OCaml。為了統(tǒng)一技術(shù)棧,我寫(xiě)了一個(gè)編譯器,可以把OCaml編譯成非常可讀、高效的JavaScript代碼。我的法國(guó)老板(OCaml 正是法國(guó)人開(kāi)發(fā)的)看到后非常喜歡,就讓我放下原來(lái)的業(yè)務(wù),全職投入這個(gè)項(xiàng)目。
硅星人:這應(yīng)該就是后來(lái)知名的BuckleScript/ReScript項(xiàng)目的前身了。聽(tīng)說(shuō)后來(lái)Facebook也因?yàn)檫@個(gè)項(xiàng)目向您拋出了橄欖枝?
張宏波:是的。這個(gè)項(xiàng)目后來(lái)以 BuckleScript 的名字開(kāi)源了,成了當(dāng)時(shí)公司最受歡迎的開(kāi)源項(xiàng)目之一 。到2017年,我個(gè)人想回國(guó)發(fā)展,但就在這時(shí),F(xiàn)acebook 聯(lián)系到我,說(shuō)他們內(nèi)部的 Facebook Chats 和 Messenger 等產(chǎn)品深度使用了我的編譯器,如果我走了,項(xiàng)目就沒(méi)人維護(hù)了,而他們內(nèi)部有幾十人的團(tuán)隊(duì)依賴這個(gè)工具鏈。
為了留住我,F(xiàn)acebook 做出了一個(gè)破例的決定:允許我一個(gè)人在中國(guó)遠(yuǎn)程辦公,繼續(xù)維護(hù)這個(gè)項(xiàng)目。要知道,F(xiàn)acebook 在中國(guó)是沒(méi)有辦公室的 。于是,我回國(guó)后,從 2017 年到 2022 年,一直在 Facebook 遠(yuǎn)程參與這個(gè)項(xiàng)目。它也逐漸從 BuckleScript 演進(jìn)成了一門(mén)獨(dú)立的、專門(mén)用于 Web 開(kāi)發(fā)的編程語(yǔ)言——ReScript。
硅星人:是什么契機(jī)讓您最終決定離開(kāi) Facebook,創(chuàng)立MoonBit呢?
張宏波:到了2022年,幾個(gè)因素匯集到了一起。首先,我在ReScript這個(gè)項(xiàng)目上已經(jīng)投入了五六年,而Facebook的待遇非常優(yōu)厚,我一個(gè)人在國(guó)內(nèi),薪資是按照硅谷頂尖標(biāo)準(zhǔn)來(lái)支付的。對(duì)我個(gè)人而言,我開(kāi)始想追求一些薪資之外的東西。
我之前在微軟亞洲研究院的導(dǎo)師 Harry,他從微軟退休以后,也回到了深圳。我們見(jiàn)了一面,深聊了一次 。
他建議我來(lái) IDEA 研究院這邊,靈活性會(huì)更大,可以組建自己的團(tuán)隊(duì)。和自己的導(dǎo)師合作,彼此知根知底,完全不用擔(dān)心信任問(wèn)題。于是,我便來(lái)到了IDEA,從零開(kāi)始,創(chuàng)立了MoonBit。
套殼與否取決于你的added value
硅星人:提到“國(guó)產(chǎn)編程語(yǔ)言”,很多人會(huì)聯(lián)想到“套殼”的爭(zhēng)議。您如何看待這個(gè)問(wèn)題?
張宏波:“套殼”現(xiàn)象確實(shí)很多 。但我們不擔(dān)心這個(gè)問(wèn)題,因?yàn)镸oonBit的代碼是完全公開(kāi)的,我們甚至幾乎沒(méi)有使用任何第三方依賴,一切都是從零構(gòu)建。
我認(rèn)為,判斷是否“套殼”的關(guān)鍵標(biāo)準(zhǔn)在于,你提供了多大的價(jià)值增量(added value)。比如,用JavaScript的eval函數(shù),五行代碼就能做出一個(gè)“新語(yǔ)言”,但這沒(méi)有價(jià)值。相比之下,微軟的TypeScript,雖然它最終也編譯成JavaScript,但沒(méi)人會(huì)說(shuō)它是套殼,因?yàn)樗峁┝艘惶讖?qiáng)大而完善的類型系統(tǒng),解決了JavaScript的原生痛點(diǎn),帶來(lái)了巨大的價(jià)值增量 。反面例子是曾經(jīng)的CoffeeScript,它在很大程度上只是換了一套語(yǔ)法,提供的價(jià)值增量有限,那更像是一種套殼。
硅星人:作為國(guó)內(nèi)為數(shù)不多投身基礎(chǔ)軟件核心領(lǐng)域的團(tuán)隊(duì),您覺(jué)得目前中國(guó)的技術(shù)環(huán)境缺少什么?
張宏波:我個(gè)人覺(jué)得,我們最缺的可能不是技術(shù),也不是人才,而是兩樣?xùn)|西:信心和伯樂(lè)。
首先是信心。我們需要有一種發(fā)自內(nèi)心的信念,覺(jué)得我們自己能做出世界一流的東西,而不是總想著等國(guó)外做出來(lái)了我們?cè)偃ツ7隆?/b>這種信仰必須是基于真實(shí)實(shí)力的,不是盲目自信。我之所以有信心做MoonBit,也是因?yàn)槲疫^(guò)去的經(jīng)歷,比如ReScript,它的技術(shù)含量其實(shí)已經(jīng)比谷歌的Dart語(yǔ)言高很多,但因?yàn)榉N種非技術(shù)因素,沒(méi)有達(dá)到應(yīng)有的高度,這是我一直的遺憾。這份遺憾,也成了我做MoonBit的動(dòng)力。
其次,我們?nèi)鄙佟安畼?lè)”。中國(guó)的千里馬非常多,尤其是90后、00后這一代,既有天賦又極其勤奮,他們的綜合能力,我個(gè)人覺(jué)得甚至比美國(guó)同齡人要強(qiáng)很多。但我們的文化環(huán)境,可能缺少那種由衷欣賞、不計(jì)回報(bào)去提攜和傳播好技術(shù)的“伯樂(lè)”氛圍。很多時(shí)候,你得先“拜碼頭”,或者用商業(yè)合作的方式才能獲得關(guān)注。
這也是我們想把MoonBit做成的原因之一。我們不僅僅是想做出一門(mén)很多人用的語(yǔ)言,更希望把它成功地商業(yè)化。當(dāng)我們成功之后,我們自己就能成為“伯樂(lè)”,因?yàn)槲覀冋嬲夹g(shù),可以去識(shí)別和扶持下一代更聰明的年輕人,帶動(dòng)一個(gè)良性的產(chǎn)業(yè)鏈發(fā)展。所以,我深切地感受到,我們?nèi)钡氖遣畼?lè),而不是千里馬。
用AI吧,使勁用
硅星人:對(duì)于那些在AI時(shí)代希望提升自己競(jìng)爭(zhēng)力的開(kāi)發(fā)者,您有什么建議?
張宏波:我的建議是高強(qiáng)度地去使用它,并且去理解它的能力邊界。AI不是萬(wàn)能的,你要清楚地知道它擅長(zhǎng)做什么,不擅長(zhǎng)做什么。比如,讓AI串行地去修改一百個(gè)編譯警告,效率可能還不如有經(jīng)驗(yàn)的開(kāi)發(fā)者手動(dòng)修改來(lái)得快。但如果你懂得利用工具,讓AI去并發(fā)地處理這些任務(wù),效率就會(huì)指數(shù)級(jí)提升。
AI無(wú)疑會(huì)加劇馬太效應(yīng),拉大個(gè)體間的差距。厲害的人用上好的AI工具會(huì)變得更厲害。所以,年輕人應(yīng)該更主動(dòng)、更高強(qiáng)度地去擁抱它,了解它的脾性,而不是簡(jiǎn)單地把它當(dāng)成一個(gè)黑盒。
硅星人:對(duì)于那些想要嘗試MoonBit的開(kāi)發(fā)者,您有什么想說(shuō)的?
張宏波:首先,我們的工具鏈非常好用。我們提供了一流的在線IDE,你不需要在本地安裝任何東西,打開(kāi)瀏覽器就能立即開(kāi)始編寫(xiě)MoonBit代碼。
其次,現(xiàn)在加入是一個(gè)非常好的時(shí)機(jī)。MoonBit剛剛進(jìn)入Beta階段,生態(tài)系統(tǒng)還是一片全新的大陸。更早地參與進(jìn)來(lái),你不僅可以見(jiàn)證一門(mén)編程語(yǔ)言從零到一的成長(zhǎng)過(guò)程,更有機(jī)會(huì)成為早期生態(tài)的核心貢獻(xiàn)者,留下自己的印記。MoonBit本身在數(shù)據(jù)處理等方面有很多非常有意思的特性,我們把數(shù)據(jù)變換的體驗(yàn)做得非常好,相信會(huì)給你帶來(lái)不一樣的感受。
硅星人:最后,對(duì)于那些有志于投身基礎(chǔ)技術(shù)領(lǐng)域的年輕人,您有什么經(jīng)驗(yàn)可以分享?
張宏波:我的建議是,要做好打持久戰(zhàn)的準(zhǔn)備,并且先在產(chǎn)業(yè)界充分歷練。基礎(chǔ)軟件是一個(gè)周期特別長(zhǎng)的領(lǐng)域,它不可能讓你一夜暴富,而是一個(gè)慢工出細(xì)活的過(guò)程。以我自己為例,我也是在個(gè)人職業(yè)生涯和財(cái)務(wù)上有了足夠的積累,不再為生計(jì)擔(dān)憂之后,才全身心投入到這件事情中來(lái)的。這個(gè)領(lǐng)域需要深厚的經(jīng)驗(yàn)積累,所以,年輕人如果心懷此志,最好先在相關(guān)的崗位上磨礪數(shù)年,再來(lái)挑戰(zhàn)。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.