MoonBit与无资源语言代码生成:IEEE论文评估与改进¶
Ch01.1171 MoonBit与无资源语言代码生成:IEEE论文评估与改进¶
📊 Level ⭐⭐ | 5.1KB |
entities/moonbit-llm-code-generation-no-resource-languages-ieee-2026.md
MoonBit与无资源语言代码生成:IEEE论文评估与改进¶
Background:本文基于量子位对 IEEE TSE 接收论文《No Resource, No Benchmarks, No Problem? Evaluating and Improving LLMs for Code Generation in No-Resource Languages》的报道。论文由瑞士 USI Software Institute 和西班牙塞维利亚大学联合完成,系统评估了大模型在 MoonBit、Gleam 等无资源语言上的代码生成能力,并提出了系统性教学路径。
核心发现¶
论文将编程语言分为三类:高资源语言(Python、Java)、低资源语言(R、Lua、Haskell、Julia、Racket)和无资源语言(MoonBit、Gleam)。核心发现:大模型在新语言上零样本表现极差,但可以通过系统方法显著提升。
零样本 vs 增强方法¶
| 方法 | MoonBit HumanEval | MoonBit MBPP | MoonBit McEval-Hard |
|---|---|---|---|
| 零样本 | 接近 0% | 接近 0% | 0-1% |
| Few-shot | 有限提升 | 有限提升 | — |
| RAG | 比 few-shot 略差 | — | — |
| 继续预训练 (1370M tokens) | 41.62% | 44.76% | 25.86% |
| Instruction Transferring | 50.71% | 53.04% | 32.60% |
实验基于 Qwen 2.5 Coder 32B base model。
方法论¶
基准构建¶
论文构建了三个代码生成 benchmark:HumanEval、MBPP 和 McEval-Hard,全部翻译到 MoonBit 和 Gleam,使用 pass@1 作为评价指标。
Few-shot 与 RAG 尝试¶
- Few-shot:在 prompt 中放入几个 MoonBit 代码示例,让模型模仿。在 MoonBit 的 12 组比较中 few-shot 有 8 组优于 RAG。
- RAG:从 MoonBit 文档中检索相关内容放入 prompt。论文推测,模型从代码示例中抓语法比从文档片段理解规则更直接。
- 两者上限明显:临时塞入 prompt 只能补语法知识,难以让模型真正掌握语言。
继续预训练 (Continued Pre-training)¶
用 MoonBit 真实代码和官方文档继续训练模型: - 训练数据:约 1310 万 code tokens + 60 万 documentation tokens = 约 1370 万 tokens - 对比:可用于 fine-tuning 的 MoonBit 数据仅约 50 万 tokens - 效果:MoonBit HumanEval 从接近 0 提升到 41.62%
Instruction Transferring(指令迁移)¶
两步法: 1. 先用 MoonBit 代码和文档让 base model 学会 MoonBit 语法 2. 再将 instruct model 的"指令跟随能力"迁移到已学 MoonBit 的模型上
结果:HumanEval 50.71%,MBPP 53.04%,McEval-Hard 32.60% — 论文中最强的 MoonBit 结果。
MoonBit 的 AI-Native 语言设计¶
MoonBit 定位为面向云和边缘计算的 AI-native 编程语言,支持 wasm、wasm-gc、js 和 native 后端。其语言设计对 AI 编程有利:
- Flattened design:明确区分 toplevel 和 local definitions,toplevel 强制类型签名,减少嵌套
- KV-cache friendly:减少嵌套有利于 RAG、decoder correction、backtrack 等场景下的模型推理效率
- 工具链反馈:语言设计越清晰,工具链反馈越完整,AI 编程循环越容易自动化
意义与观察¶
- 新语言不是只能等待大模型自然覆盖 — 通过高质量代码、文档、benchmark 和训练方法,可以主动构建模型的编程能力。
- AI 时代编程语言评估新维度 — 除了性能、语法、类型系统、生态外,还需考虑"模型是否容易学会这门语言"。
- 论文提供了可执行路径:构建 benchmark → 知道模型哪里不会 → 用真实代码和文档继续训练 → instruction transferring。
相关概念¶
→ 原文存档