2026 年 8 月,知名工程技术学者 danluu 发布了针对 Coding Agent 编程语言效率的评估报告《What’s the best programming language for coding agents?》。长久以来,AI 社区与 Google AI 检索摘要中盛行着「动态语言语法紧凑,比静态语言更省 Token」的说法,原帖甚至测出 C 与 Clojure 之间存在 2.6 倍的差距。danluu 针对 zstd 解码器与 Pandoc 两个真实规模任务进行了多组对比实验,实验结果证实该二分法在真实工程协作中无法成立。
此前传播甚广的语言 Token 评估大多建立在 Rosetta Code 这类几十行的微型算法题上。在极简代码示例中,J 语言以 70 个 Token 解答算法题,而 Clojure 需要 109 个 Token,这类微观代码密度差异被部分开发者推演为大模型时代选型的铁律。然而当 Agent 进入真实项目的开发和调试循环时,初始生成代码所占的 Token 份额急剧下降,这类微观语法差异很快被后续大量的上下文与错误日志稀释。
玩具基准的局限与实际评估缺陷
早期的 Coding Agent 评估不仅存在题目过短的问题,在测试环境构建上也暴露出了明显的缺陷。在部分社区流行的测试集里,某种语言的 Agent 因为误操作把缺失的文件路径建立软链接(symlink)到了自己的二进制可执行文件上,导致后续所有测试都误判为通过。静态语言 Rust 在该测试中的「失败」,实际上属于测试框架读取计分顺序的逻辑漏洞。
为了获得具备工程指导意义的数据,danluu 设计了两套更严谨的基准测试。第一项测试要求 Agent 在完全离线、没有任何预置测试用例的容器环境中,仅凭阅读 zstd 的 RFC(Request for Comments)规范文档和勘误表,从零用特定语言实现完整的 zstd 解码器。第二项测试基于 Pandoc 项目改造的 ProgramBench,采取测试驱动开发(TDD,Test-Driven Development)模式,并使用未公开的 Holdout 测试集对最终代码准确率进行打分。当 Agent 进入真实项目的开发和调试循环时,初始生成代码所占的 Token 份额急剧下降,语法长度差异很快被上下文与测试日志稀释。
zstd 解码器:推理强度稀释语法密集度
在 zstd 解码器实现任务中,中等推理强度(Medium Effort)下的测试数据展现出了某种表面上的动态语言优势。使用 Python 的 Agent 解决该任务的单次平均成本为 3.35 美元(在 34 分制测试中取得 29.85 分),Ruby 为 3.33 美元(得分 28.98),而 C++ 为 4.68 美元(得分 29.68),Rust 为 4.23 美元(得分 28.50)。在低强度单次生成任务中,动态语言的简洁范式降低了首次输入的 Token 数量,表现出微弱的初始性价比。
图:zstd eval 各语言成本 vs 正确率散点图。来源:danluu.com
一旦将推理强度提升至高开销(Ultra Effort)档位,各语言的成本与得分分布便呈现混杂状态,静态语言在多轮纠错后的准确率回升反超。极简与怪异语言在更高强度下彻底掉队,J 语言单次任务花费 8.86 美元仅获得 24.02 分,Factor 语言花费 9.96 美元仅得 24.50 分。凭借密度优势试图节省 Token 的策略在长程工程任务中会遭到反噬,边缘语言更高的调试失败率带来了极高昂的累积 Token 成本。
Pandoc 基准:类型系统与生态盲区带来的隐形账单
在规模更大、依赖复杂 TDD 循环的 Pandoc 评估中,静态语言与主流动态语言的差距进一步收窄。Python 在此项评估中花费 574.68 美元,Holdout 正确率为 30.66%;PHP 花费 620.36 美元,正确率为 30.18%;而 Rust 耗费 693.16 美元,正确率达到 30.19%。Rust 相比 Python 的总成本仅增加约 20%,且二者在工程可用的实际交付指标上处于同一水平。
图:Pandoc eval 各语言成本 vs holdout 得分散点图。来源:danluu.com
某些在微型基准里表现优异的函数式语言,在复杂测试中显现出了明显的盲区。以 Clojure 为例,在 zstd 解码任务的 Medium 强度测试中,40 次运行有 36 次遭遇失败,其故障原因在于字节转换逻辑在处理 128 到 255 之间的数值时会抛出溢出异常(unchecked-byte 机制)。大模型对这类非主流语言的隐式类型转换规则缺乏足够的模式认知,导致 Agent 在单点细节上陷入无限盲目重试。
代码流行度决定大模型的理解深度
跨语言评估数据背后揭示的核心规律,在于语言在开源世界(如 GitHub 托管仓库)的流行度与其表现呈中度正相关。主流语言如 Python、C++、Java 和 Rust 在预训练数据集中拥有海量的代码示例、报错 StackTrace 和重构讨论。大模型对主流语言不仅掌握语法规则,更理解其标准库惯用模式与错误处理陷阱。
相比之下,汇编语言(AArch64 与 x86-64)在 Pandoc 评估中任务单价飙升至 1293 到 1484 美元,Holdout 正确率也跌至 10.71% 到 11.69%。语言训练数据的匮乏导致模型必须消耗数倍的推理 Token 去探索基本的控制流与寄存器分配,招致高成本与低正确率的双重惩罚。选择边缘怪异语言无法降低 Agent 成本,反而因模型缺乏深层先验而付出了极高昂的 Token 尝试费。
Agent 选型逻辑的重新锚定
danluu 的研究同时展现了生成式 AI 赋予软件工程的方法论飞跃。过去要验证 10 种编程语言在 zstd 实现上的差异,必须雇佣多名资深工程师耗时数月,资金成本难以承受。如今使用 Agent 只需 20 美元的 API 额度就能完整跑完单语言实现,使大规模跨语言工程评估在经济上成为可能。
评估数据给研发团队的启示非常清晰:决定 Coding Agent 开发效率和运行成本的核心变量,在于语言本身的生态普及度以及强化学习(RL,Reinforcement Learning)训练数据的覆盖面。在构建企业级 Agent 工作流时,应当优先选择代码库丰富、类型约束明确的主流语言。工程实践应当从追逐语法密度的迷思中脱离出来,转向利用语言工具链与编译器反馈去提升 Agent 的长程任务成功率。
参考链接:
- danluu 博客《What’s the best programming language for coding agents?》
- Hacker News 社区讨论《What’s the best programming language for coding agents?》