![]()
600次API调用,15门编程语言,Anthropic工程师花了两周让Claude Code重写Git。结果出来那天,静态类型的拥趸可能要重新算账——Ruby、Python、JavaScript包揽前三,速度是Rust、Java的1.4到2.6倍,成本还低40%。
这场实验的起因很直接:AI编程时代,选什么语言最省token、最不容易翻车?社区吵了两年,"类型安全派"和"动态灵活派"互相甩论文,但没人拿真实数据说话。Anthropic的工程师Sidney Keith决定自己跑一遍。
实验设计:让AI两周内"学会"Git
任务原型是Linus Torvalds两周写出来的Git。Keith把它拆成两个阶段:v1从零开始读SPEC实现基础功能,v2在此基础上追加需求。每门语言跑20次,模型统一用Claude Opus 4.6(高努力模式),总共600次运行。
语言名单覆盖了主流阵营:动态类型的Ruby、Python、JavaScript、Perl、Lua;静态类型的Rust、Go、Java、C、OCaml、Haskell;还有混合对照组——Python/mypy和Ruby/Steep,用来隔离"同一语言加类型检查"的纯开销。
评判指标很实在:总耗时、API成本、代码行数、往返轮次(Turns)。失败率也记录在案——600次里只挂了3次,Rust占2次,Haskell占1次。其中一次Rust失败时,Claude直接甩锅说"测试用例错了",但其他19次都过了,判定为幻觉。
动态语言包揽前三:Ruby 73秒,Python 78秒,JavaScript 81秒。成本在0.36到0.39美元之间,标准差极低——又快又稳。
从第4名Go开始,画风突变。Go平均102秒,但标准差±37秒,波动比前三名的总和还大。Rust、Java、C依次排开,时间冲上110到130秒区间。最慢的是Haskell,v2阶段平均99.6秒,尽管它的代码行数只有224行,全场最精简。
时间和成本几乎完全挂钩。Ruby完成双版本任务花0.36美元,Haskell要0.79美元,C更是冲到0.93美元。静态类型省下的调试时间,在AI编程场景里似乎换不来真金白银。
![]()
类型检查的隐形税:Ruby加Steep慢3.2倍
对照组的数据最扎心。纯Ruby v1阶段平均33.2秒,加上RBS类型签名和Steep检查后飙到105.0秒——正好3.2倍。Python/mypy相对温和,从32.9秒涨到52秒左右,但涨幅仍达58%。
Keith分析,v1从零开始时差距最大。Rust需要Cargo.toml,Java要pom.xml或build.gradle,这些配置文件的生成和维护都要消耗额外轮次。Python、Ruby、JavaScript只需要一个单文件就能跑,启动成本几乎为零。
v2阶段差距收窄,但排序没变。Ruby 40.0秒,Python 41.8秒,JavaScript 45.1秒, Perl、OCaml、Lua咬在45到47秒区间。静态类型的Java和Rust仍在60秒开外,C因为代码膨胀到517行,拖到90.8秒。
代码行数和效率的关系也被打破。OCaml(216行)、Ruby(219行)、Haskell(224行)最精简,但后两者在速度和成本榜上垫底。C的517行是全场最长,时间却只排倒数第三。LOC不再是预测AI编程效率的可靠指标。
往返轮次(Turns)揭示了另一个真相:动态语言平均比静态语言少3到5轮对话。每轮都是API调用,都是token消耗,都是等待时间。
为什么静态类型在AI手里不吃香?
传统认知里,类型系统能防bug、省调试。但Keith的实验指向另一个变量:AI编程的核心瓶颈不是"写出正确代码",而是"用最少交互达成目标"。
类型检查在这个场景里变成了额外负担。Claude需要生成类型签名,等待编译器反馈,再根据错误调整——这些轮次对人类开发者可能是"快速反馈",对按token计费的API调用就是纯成本。Ruby/Steep的3.2倍 slowdown,本质上是一遍写代码、一遍写类型、再一遍对类型的三重开销。
![]()
动态语言的"跑通再打磨"模式反而更适配AI的工作流。Python和Ruby允许Claude先生成能工作的实现,再逐步优化,中间没有编译器打断节奏。JavaScript的弱类型在此刻成了优势:少写类型注解=少消耗token=少花时间和钱。
失败率数据也耐人寻味。Rust的2次失败和Haskell的1次失败,恰好来自类型系统最严格的阵营。Claude在Rust里出现的"测试错了"幻觉,暗示强类型约束可能加剧模型的固执——当代码通不过编译器时,AI更倾向于质疑外部世界而非自己的实现。
OCaml的意外:精简代码换不来效率
OCaml在实验里是个异类。216行代码全场最短,v2时间47.1秒却能挤进第二梯队,成本0.52美元介于动态语言和静态语言之间。Keith没有深入解释,但数据暗示:ML家族的类型推断可能减少了显式类型注解的负担,部分抵消了静态类型的开销。
但这只是猜测。OCaml的样本量、社区工具链成熟度、Claude训练数据中的OCaml代码质量,都是未被控制的变量。唯一确定的是:它的表现打破了"静态类型=慢且贵"的简单等式,却没有动摇整体格局。
Perl和Lua的表现也值得玩味。Perl 45.7秒、Lua 47.2秒,双双超过Java和Rust。两门"过时"语言在AI编程场景里复活,靠的是极简的语法和零配置启动。Perl的一行式传统、Lua的单文件哲学,意外契合了"少即是多"的token经济学。
C语言的517行代码是个警示。Claude在C里写了大量手工内存管理和错误处理样板,这些对人类是"可控的底层细节",对AI是重复的token消耗。越接近硬件,AI的效率越低——至少在代码生成阶段如此。
实验的局限Keith自己也承认。单一任务(mini-git)、单一模型(Claude Opus 4.6)、20次样本量,都不能覆盖真实开发的复杂度。类型系统的长期维护价值、大型项目的重构安全、团队协作的可读性,这些人类视角的核心诉求被排除在指标之外。
但数据已经够尖锐了。当AI编程从尝鲜变成生产工具,语言选择的计算方式正在改写。不是"哪种语言最好",而是"哪种语言让AI最快 cheapest 地到达正确结果"。在这个等式里,动态语言暂时领先,类型系统的溢价还没找到买单的理由。
Keith在实验笔记里留了句话:「我原本期待静态类型能显著减少幻觉bug,但600次运行里类型相关的失败并没有明显差异。」类型安全的人类价值,在AI的统计样本里被稀释了。
如果Claude Code下个月更新版本,或者换成GPT-5、Gemini 2.5,这个排序会洗牌吗?更重要的是——当你的团队开始用AI写核心代码,你会为了那40%的成本差距,把新项目从TypeScript迁回JavaScript吗?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.