宗恩投稿
量子位 | 公眾號 QbitAI
對於Python、Java、Java這些語言,大模型通常能給出相當成熟的答案論文。
但如果換做小眾的、樣例不足的年輕語言呢論文?
大模型到底是真的掌握了通用程式設計能力論文,還是更擅長那些在訓練資料裡出現過無數次的語言?
一篇新論文把這個問題拉到了臺前論文。
論文題為《No Resource, No Benchmarks, No Problem? Evaluating and Improving LLMs for Code Generation in No-Resource Languages》,已在arXiv釋出,並標註被IEEE Transactions on Software Engineering接收論文。研究物件不是Python、Java這類高資源語言,而是兩門較新的語言:MoonBit和Gleam。
論文作者來自瑞士USI Software Institute/SEART研究組和西班牙塞維利亞大學SCORE Lab/I3US Institute論文。SEART長期研究軟體分析、開發者推薦系統和AI4SE,這讓這項工作更接近一次來自軟體工程研究界的外部評估。
論文把它們稱為no-resource programming languages,可以理解為“無資源程式語言”論文。
這裡的“無資源”,不是說語言本身能力不足,而是指它們太新,公開程式碼、教程、問答和專案樣例還不夠多,大模型在預訓練階段很可能沒有充分見過它們論文。
注:本篇論文統計資料時節點為24年論文,MoonBit截止26年6月語料相對豐富
注:本篇論文統計資料時節點為24年論文,MoonBit截止26年6月語料相對豐富
換句話說論文,這篇論文問了一個現實問題:
如果一門語言還沒有被網際網路語料充分覆蓋論文,大模型還能寫好它嗎?
答案是:一開始很難論文。
但更重要的是,論文也展示了另一件事:新語言並不是只能等待大模型自然學會論文。只要有足夠清晰的語言設計、文件、程式碼和工具鏈,它可以被系統性地教給大模型。
程式語言被放進了新語言考場
論文構建了三個程式碼生成benchmark:HumanEval、MBPP和McEval-Hard論文。
測試方式很直接:給模型自然語言描述和函式簽名,讓模型補全函式實現,再用測試用例判斷是否正確論文。
展開全文
評價指標主要是pass@1論文。
也就是模型只有一次生成機會論文。一次寫出的程式碼能透過測試,就算成功;否則失敗。
論文對比了三類語言論文:
高資源語言:Python、Java論文。
低資源語言:R、Lua、Haskell、Julia、Racket論文。
無資源語言:MoonBit、Gleam論文。
高資源語言:Python、Java論文。
低資源語言:R、Lua、Haskell、Julia、Racket論文。
無資源語言:MoonBit、Gleam論文。
參與評測的模型包括GPT-4o、o3-mini、Qwen 2.5 Coder、Qwen 3等論文。論文說明,HumanEval和MBPP被翻譯到MoonBit和Gleam,McEval-Hard則基於McEval中的hard tasks構建,最終形成跨語言比較用的函式級程式碼生成任務。
△論文中對不同語言GitHub倉庫規模和資源型別的劃分零樣本幾乎失靈
結果並不意外,但很有代表性論文。
在Python、Java這類高資源語言上,大模型表現依然很強;在低資源語言上,表現有所下降但仍可用;但到了MoonBit和Gleam這樣的新語言,零樣本程式碼生成能力明顯下滑論文。
尤其是在更難的McEval-Hard上,高資源語言的pass@1大約在59%到89%之間,低資源語言大約在27%到84%之間,而無資源語言只有0%到1%論文。論文還指出,無資源語言在多個模型和benchmark上的表現通常處於0%到20%之間,平均約9%。
△零樣本設定下,不同模型在不同語言上的pass@1對比
更關鍵的是,失敗原因不只是“演算法沒想明白”論文。
論文分析發現,在Gleam和MoonBit上,大量失敗來自語法錯誤論文。也就是說,模型經常連合法程式碼都生成不出來。
這並不說明MoonBit不行論文。
更準確地說,是模型還沒有真正學過MoonBit論文。
大模型寫Python很穩,很大程度上是因為它見過太多Python論文。MoonBit作為一門年輕語言,公開語料規模遠小於成熟語言,因此天然更適合用來觀察一個問題:
AI時代的新程式語言論文,如何被模型學習和理解?
臨時給示例有用論文,但不夠
論文先測試了兩種常見方法:few-shot和RAG論文。
few-shot是在prompt中放入幾個MoonBit程式碼示例,讓模型模仿論文。
RAG是從MoonBit文件中檢索相關內容,放進prompt中,讓模型參考論文。
這兩種方法都有提升論文。論文觀察到,few-shot通常比RAG略好:在MoonBit的12組比較中,few-shot有8組優於RAG。作者推測,面對陌生語言時,模型從程式碼示例中抓語法,往往比從文件片段中理解規則更直接。
但這類方法的上限也很明顯論文。
臨時把幾段程式碼或文件塞進prompt,只能補一些語法知識,很難讓模型真正掌握語言本身論文。
繼續預訓練論文:讓模型真正學會
真正有效的是繼續預訓練論文。
簡單說,就是不再讓模型臨時查資料,而是直接用MoonBit程式碼和官方文件繼續訓練模型論文。
論文中,MoonBit的繼續預訓練資料包括約1310萬code tokens和60萬documentation tokens,總計約1370萬tokens;相比之下,可用於fine-tuning的MoonBit資料只有約50萬tokens論文。
△論文中用於MoonBit/Gleam的預訓練與微調資料規模
結果明顯提升論文。
以Qwen 2.5 Coder 32B Base為例論文,繼續預訓練之後,模型在MoonBit上的pass@1達到:
HumanEval論文:41.62%
MBPP論文:44.76%
McEval-Hard論文:25.86%
HumanEval論文:41.62%
MBPP論文:44.76%
McEval-Hard論文:25.86%
也就是說,從幾乎不會寫,到能在相當一部分任務上寫出可透過測試的程式碼,MoonBit可以被模型系統性學會論文。
指令遷移:既懂程式語言論文,也聽懂開發者
不過,繼續預訓練還沒有解決全部問題論文。
它能讓模型學會語言知識,但不一定讓模型更擅長遵循使用者指令論文。而真實的AI程式設計助手,不只是續寫程式碼,還要能理解開發者需求,比如解釋型別錯誤、重構程式碼、補測試、根據反饋修改實現。
所以論文進一步使用了instruction transferring論文。
它的思路是:先用MoonBit程式碼和文件讓base model學會MoonBit;再把instruct model的“指令跟隨能力”遷移到已經學過MoonBit的模型上論文。
這樣得到的模型,既懂MoonBit,又更像一個能對話、能聽懂需求的程式設計助手論文。
這一方法給出了論文中最強的MoonBit結果:在Qwen 2.5 Coder 32B上論文,instruction transferring後,MoonBit的pass@1達到:
HumanEval論文:50.71%
MBPP論文:53.04%
McEval-Hard論文:32.60%
HumanEval論文:50.71%
MBPP論文:53.04%
McEval-Hard論文:32.60%
尤其是最難的McEval-Hard,MoonBit從零樣本接近0,提升到了32.60%論文。
△進一步預訓練與instruction transferring的效果對比
這組數字背後有一個關鍵訊號:新語言的AI支援,不一定只能等待更大的通用模型自然覆蓋論文。透過高質量程式碼、官方文件、benchmark和合適的訓練方法,可以主動構建。
觀察價值論文:讓模型更容易學會新語言
這也是MoonBit值得觀察的地方論文。
MoonBit官方將其定位為面向雲和邊緣計算的AI-native程式語言工具鏈,支援wasm、wasm-gc、js和native後端,並支援在一個模組中構建混合後端專案論文。官方文件還將更小的WASM輸出、更快執行時效能、先進編譯效能,以及簡單實用、面向資料的語言設計列為主要優勢。
對AI程式設計來說,這一點很重要論文。
因為AI寫程式碼不是一次性生成文字,而是一個迴圈論文。語言設計越清晰,工具鏈反饋越完整,這個迴圈就越容易自動化。
MoonBit的AI-native設計也體現在語言結構上論文。其官方部落格曾討論過flattened design:明確區分toplevel和local definitions,toplevel definitions強制型別簽名,並採用structural interface implementation,減少額外巢狀程式碼塊。部落格還提到,這種減少巢狀的設計不只提升可讀性,也更KV-cache friendly,有利於RAG、decoder correction、backtrack等場景下的模型推理效率。
對開發者來說,這意味著更清晰的程式碼組織;對模型來說,則意味著更適合線性生成論文。模型不用在複雜巢狀結構裡頻繁來回跳轉,上下文組織更穩定,生成錯誤也更容易被工具鏈及時發現。
過去評價一門程式語言,通常看效能、語法、型別系統、標準庫、工具鏈和生態等論文。到了AI程式設計時代,還要多一個維度:模型是否容易學會這門語言。
這篇論文的價值也正在於此論文。它不只是指出“大模型不會天然寫新語言”,更重要的是給出了一條可執行路徑:先構建benchmark,知道模型哪裡不會;再利用真實程式碼和官方文件繼續訓練,讓模型掌握語言;最後透過instruction transferring,把指令跟隨能力遷移回來。
MoonBit在這條路徑中的表現說明,AI-native程式語言不只是一個概念,而是可以體現在模型學習效率、程式碼生成質量和工具鏈閉環中的工程優勢論文。
大模型寫Python很強,是因為它見過太多Python論文。大模型一開始不熟悉MoonBit,是因為MoonBit足夠新。但當模型真正接觸MoonBit的程式碼、文件和語言設計之後,它可以快速提升。
這也許正是AI時代新語言生態的核心問題論文:
不是等待模型某一天自然支援你,而是從語言、文件、工具鏈和資料開始,讓模型更容易理解你論文。
MoonBit提供了一個值得觀察的樣本論文。
論文標題論文:《No Resource, No Benchmarks, No Problem? Evaluating and Improving LLMs for Code Generation in No-Resource Languages》
連結論文:
MoonBit相關資料來源論文:swe-agi (