打开网易新闻 查看精彩图片

远藤裕介最近干了一件事:让Claude Code用13种语言各写20遍简化版Git,跑了600多次测试。结果挺有意思——动态语言把静态类型语言按在地上摩擦。

测试规则很简单。v1阶段从零实现init、add、commit、log;v2加上status、diff、checkout、reset。每种语言跑20轮,用自定义哈希算法(而非SHA-256)抹平库依赖差异。

成绩单出来,前三名被Ruby、Python、JavaScript包揽。Ruby每次0.36美元、73秒;Python 0.38美元、74.6秒;JavaScript 0.39美元、81.1秒。三者方差极低,40次测试全部通过。从第四名Go开始,画风突变:成本跳到0.50美元,标准差高达37秒——这意味着你根本不知道要等多久。Rust更夸张,耗时跨度54.8秒,还两次测试失败。C语言最费钱,0.74美元,生成了517行代码,而Ruby只要219行。

类型系统成了隐形税。Python加上mypy严格检查,速度直降1.6到1.7倍;Ruby配上Steep类型检查,直接慢2到3.2倍。TypeScript也比JavaScript贵,0.62美元对0.39美元,代码行数却差不多。远藤推测,模型不仅在写类型注解,还得额外"思考"类型约束,这些都要烧token。

当然,这项研究有前提。远藤本人是Ruby代码提交者,主动坦白了可能的偏向性;200行代码属于原型规模,静态类型的优势在大型项目里或许才能显现;Anthropic还赞助了六个月Claude Max免费额度。测试只算生成成本和速度,不管代码质量、可维护性、运行时性能。

Lobsters上的质疑也很实在:200行代码能代表什么?实际原型哪有这么小?生态优势被排除了,有成熟包管理的语言明明可以少写很多代码。还有人指出,Rust和Haskell测试失败未必是坏事——严格类型系统本来就是要尽早拦住错误,不让它溜进生产环境。如果生成的代码后期难维护,生成快2倍的优势可能瞬间归零。

远藤的回应算得上诚恳。更大规模的测试确实有价值,但设计一套对15种语言都公平的题目,难度堪比让猫和鱼和平共处。至于30秒和60秒的差距,在迭代开发里对心流的影响是真实的——除非未来模型能把生成时间压到秒级以内。排除库依赖则是刻意为之,否则比较的就是"语言+生态"的混合体,而非语言本身。

600次运行中仅3次失败:Rust两次,Haskell一次。有趣的是,某次Rust失败时,AI声称测试本身有错——远藤判定为幻觉,毕竟其他Rust测试都过了。

完整数据集、每次运行的日志、生成的全部源代码,都在GitHub仓库里公开。想自己验证的,可以去翻。