Each language version is independently generated for its own context, not a direct translation.
这篇论文就像是一份**“大语言模型(LLM)在函数式编程课堂上的期末考试成绩单”**。
想象一下,你是一位老师,手里拿着 9 位来自不同“家族”的超级 AI 学生(比如 GPT-4o、Claude、Llama 等),你想看看它们能不能帮你的学生学好一门很难的编程语言——OCaml。
OCaml 不像 Python 或 Java 那样随处可见,它更像是一门**“小众的、逻辑极其严密的古典音乐”**。而这篇论文就是要把这些 AI 扔进这个“古典音乐班”,看看它们到底能不能看懂乐谱、修好走调的乐器,或者解释清楚音乐理论。
为了公平考试,作者们设计了三套考题(基准测试):
1. 第一关:写代码(λCodeGen)
- 考题内容:给 AI 一个自然语言的作业题目(比如“写一个函数来反转列表”),让它直接写出代码。
- AI 的表现:
- 优等生(如 o3-mini, Claude 3.7, GPT-4o):大概有 70% 的时间能写出完全正确且符合要求的代码。这就像是一个聪明的留学生,虽然母语不是中文,但能写出很地道的文章。
- 普通生:表现就参差不齐了。有些模型(如 Llama 3.1 8B)写的代码甚至编译都跑不通(就像写了一堆乱码),或者虽然能跑,但逻辑全是错的。
- 对比:以前这些 AI 在 Python 这种“大众语言”上能拿 90 分以上,但在 OCaml 这种“小众语言”上,分数就掉到了 70 分左右。这说明数据量少的语言,AI 学起来确实更吃力。
2. 第二关:修代码(λRepair)
- 考题内容:给 AI 一段有 bug 的学生代码,并附上报错信息,让它把代码修好。
- AI 的表现:
- 修语法错误(Syntax):这是 AI 的强项!就像帮人纠正错别字,顶尖模型能修好 80% 以上的错误。
- 修类型错误(Type):稍微难一点,但优等生依然能修好 70-80%。
- 修逻辑错误(Logical):这是最难的部分。就像让 AI 猜“为什么这个程序算出来的结果不对”,优等生能修好 60-70%,但普通模型就经常修不好,甚至越修越错。
- 有趣发现:给 AI 看一个正确的例子(One-shot learning),它的修图能力就会稍微变好一点点,就像给临摹者看一张范画,它就能画得更像。
3. 第三关:讲理论(λExplain)
- 考题内容:问一些抽象的概念题(比如“什么是尾递归?”、“变量作用域是什么?”),让 AI 用文字解释。
- AI 的表现:
- 优等生:能讲得头头是道,正确率很高。
- 普遍问题:废话太多!即使老师明确要求“简洁回答”,AI 还是喜欢长篇大论,甚至把简单的概念绕得很复杂。这就好比一个学生考试时,明明只要写个公式,他却写了三页纸的读后感,虽然态度端正,但重点不突出。
- 风险:对于理论问题,学生很难像检查代码那样用编译器去验证对错。如果 AI 一本正经地胡说八道(幻觉),学生很容易就被带偏了。
核心结论与启示
AI 不是万能的“作弊神器”:
虽然顶尖的 AI 在 OCaml 这种高难度课程上表现不错(大概能拿 B+ 或 A-),但它们远未达到完美。如果学生完全依赖 AI 写作业,很容易得到一堆看似正确但逻辑有漏洞的代码。“通才”与“专才”的较量:
论文还测试了一个专门针对 OCaml 的旧工具(BURST)。结果发现,这个专门工具在简单任务上很稳,但遇到复杂任务就歇菜了;而通用的大 AI 虽然偶尔会犯错,但适应性更强,能处理各种复杂多变的题目。给老师和学生的建议:
- 对学生:要把 AI 当成**“副驾驶”**而不是“自动驾驶”。你需要有批判性思维,去检查 AI 写的代码对不对,而不是直接抄。
- 对老师:考试不能只考“写代码”,可以考**“找茬”(让 AI 写错代码,让学生去改)或者“挑刺”**(让 AI 解释概念,让学生去评估解释得对不对)。这样能逼着学生真正理解知识,而不是依赖 AI。
一句话总结:
这篇论文告诉我们,大语言模型在编程学习上是个**“很有天赋但偶尔会犯迷糊的超级助教”**。在 OCaml 这种高难度课程上,它们能帮大忙,但学生必须保持清醒的头脑,不能盲目信任,否则很容易在“逻辑陷阱”里迷路。