Skip to main content

Love

 · 

哪种编程语言最适合 Claude Code?

我让 Claude Code 用 13 种语言实现了一个非常简化的 Git 版本。Ruby、Python 和 JavaScript 速度最快、成本最低、稳定性也最好。静态类型语言的速度慢 1.4 到 2.6 倍,而且成本更高。

简而言之

我让 Claude Code 用 13 种语言实现了一个非常简化的 Git 版本。Ruby、Python 和 JavaScript 速度最快、成本最低、稳定性也最好。静态类型语言的速度慢 1.4 到 2.6 倍,而且成本更高。

Cost v1+v2

介绍

哪种编程语言最适合用于人工智能编码代理?

“静态类型可以防止人工智能出现幻觉错误!”
“不,跳过类型注解可以节省令牌!”

关于定性问题的讨论很多,但定量数据却很少。所以我做了一个实验。

实验

我请 Claude Code 用多种语言实现一个“迷你版 Git”(Git 的简化版本),并分别测量了每种语言所需的时间和成本。Git 是 Linus 仅用两周时间就开发的,因此这似乎是一项不错的任务。

这项任务分为两个阶段:

  • v1(新项目) :实现 init 、 add 、 commit 和 log 。
  • v2(功能扩展) :添加 status 、 diff 、 checkout 和 reset 。

提示很简单:“阅读 SPEC-v1.txt ,实现它,并确保 test-v1.sh 通过。” v2 也类似。

比较的语言:

类别

语言

动态的

Python、Ruby、JavaScript、Perl、Lua

动态类型检查器

Python/mypy,Ruby/Steep

静止的

TypeScript、Go、Rust、C、Java

功能

Scheme(动态)、OCaml(静态)、Haskell(静态)

Python/mypy 生成完全类型注解的 Python 代码,并使用 mypy --strict 进行验证。Ruby/Steep 生成 RBS 类型签名,并使用 steep check 进行验证。这使得我们可以直接比较同一语言中类型检查的开销。

每种语言运行了 20 次。模型为 Claude Opus 4.6(高难度)。

结果

20 次试验的平均结果,按平均成本排序。

语言

测试通过(v1+v2)

时间(v1+v2)

平均成本

LOC(v2)

红宝石

40/40

73.1秒±4.2秒

$0.36

219

Python

40/40

74.6秒±4.5秒

$0.38

235

JavaScript

40/40

81.1秒±5.0秒

$0.39

248

40/40

101.6秒±37.0秒

$0.50

324

Java

40/40

115.4秒±34.4秒

$0.50

303

38/40

113.7秒±54.8秒

$0.54

303

Perl

40/40

130.2秒±44.2秒

$0.55

315

Python/mypy

40/40

125.3秒±19.0秒

$0.57

326

OCaml

40/40

128.1秒±28.9秒

$0.58

216

露亚

40/40

143.6秒±43.0秒

$0.58

398

方案

40/40

130.6秒±39.9秒

$0.60

310

TypeScript

40/40

133.0秒±29.4秒

$0.62

310

C

40/40

155.8秒±40.9秒

$0.74

517

哈斯克尔

39/40

174.0秒±44.2秒

$0.74

224

红宝石/陡峭

40/40

186.6秒±69.7秒

$0.84

304

在 600 次运行(15 种语言 × 2 个阶段 × 20 次试验)中,只有 3 次失败(测试未通过)。失败的语言分别是 Rust(2 次)和 Haskell(1 次)。在其中一次 Rust 失败的日志中,智能体声称“测试有误”。由于所有其他 Rust 试验都成功了,这似乎是智能体的幻觉。

总时间和成本

总时间(v1 + v2)的散点图:

Total time

成本:

Total cost

Ruby、Python 和 JavaScript 位列前三:耗时 73-81 秒,成本 0.36-0.39 美元,标准差低——快速稳定。

从第四名(Go、Rust、Java)开始,方差急剧增加。Go 的平均时间为 102 秒,但波动范围为 ±37 秒。

时间和成本密切相关:

Time vs Cost

代码行数

v2 版本完成后的 LOC:

Lines of code

OCaml(216 行)、Ruby(219 行)和 Haskell(224 行)最为精简。C 语言以 517 行代码脱颖而出。

Time vs LOC

有趣的是,代码行数减少并不意味着生成速度更快或成本更低。OCaml 和 Haskell 代码量虽小,但生成速度和成本效益都处于中低水平。

v1/v2 详细结果

按阶段分解:

语言

v1 时间

v1 转弯

v1 LOC

v1 测试

v2 时间

v2 转弯

v2 LOC

v2 测试

总时间

平均成本

红宝石

33.2秒±2.5秒

6.0

107

20/20

40.0秒±3.0秒

7.0

219

20/20

73.1秒±4.2秒

$0.36

Python

32.9秒±1.3秒

6.0

113

20/20

41.8秒±4.5秒

7.1

235

20/20

74.6秒±4.5秒

$0.38

JavaScript

36.0秒±3.5秒

6.0

123

20/20

45.1秒±4.1秒

7.2

248

20/20

81.1秒±5.0秒

$0.39

47.5秒±34.5秒

7.7

143

20/20

54.1秒±12.3秒

9.7

324

20/20

101.6秒±37.0秒

$0.50

Java

64.3秒±31.1秒

8.7

152

20/20

51.2秒±8.1秒

9.6

303

20/20

115.4秒±34.4秒

$0.50

53.6秒±36.7秒

9.4

139

19/20

60.1秒±19.2秒

10.1

303

19/20

113.7秒±54.8秒

$0.54

Perl

84.4秒±43.1秒

9.2

173

20/20

45.7秒±6.8秒

7.5

315

20/20

130.2秒±44.2秒

$0.55

Python/mypy

52.7秒±8.3秒

9.2

171

20/20

72.6秒±14.4秒

12.2

326

20/20

125.3秒±19.0秒

$0.57

OCaml

80.9秒±28.8秒

11.2

111

20/20

47.1秒±6.0秒

9.2

216

20/20

128.1秒±28.9秒

$0.58

露亚

96.4秒±42.8秒

10.1

226

20/20

47.2秒±5.2秒

8.1

398

20/20

143.6秒±43.0秒

$0.58

方案

66.7秒±36.7秒

8.9

171

20/20

63.9秒±10.0秒

10.6

310

20/20

130.6秒±39.9秒

$0.60

TypeScript

69.9秒±18.8秒

12.2

149

20/20

63.1秒±17.8秒

11.3

310

20/20

133.0秒±29.4秒

$0.62

C

65.0秒±18.2秒

8.2

276

20/20

90.8秒±39.1秒

13.7

517

20/20

155.8秒±40.9秒

$0.74

哈斯克尔

74.3秒±39.1秒

10.3

119

19/20

99.6秒±32.4秒

16.4

224

20/20

174.0秒±44.2秒

$0.74

红宝石/陡峭

105.0秒±65.2秒

20.2

150

20/20

81.6秒±8.8秒

17.2

304

20/20

186.6秒±69.7秒

$0.84

“Turns”是指在一次提示执行过程中 API 的往返次数(工具调用 → 结果 → 下一个响应)。

v1(新项目)时间

v1 time

v1 版本显示了不同语言之间最大的差距。Python(32.9 秒)和 Ruby(33.2 秒)领先,其次是 JavaScript(36.0 秒)。Ruby/Steep 耗时 105.0 秒,比纯 Ruby 慢 3.2 倍。Lua(96.4 秒)和 OCaml(80.9 秒)的速度也很慢。

v1 版本从一个空目录开始,因此需要项目配置文件( Cargo.toml 、 package.json 等)的语言会产生额外的开销。Python、Ruby 和 JavaScript 只需要生成一个 minigit 文件,这或许可以部分解释两者之间的差异。

v2(功能扩展)时间

v2 time

在 v2 版本中,差距缩小。排名前三的仍然是 #Ruby (40.0 秒)、Python(41.8 秒)和 JavaScript(45.1 秒)。Perl(45.7 秒)、OCaml(47.1 秒)和 Lua(47.2 秒)紧随其后。

Haskell 在 v2 版本中仍然是最慢的,尽管代码行数最少(224 行),平均运行时间却高达 99.6 秒——它似乎在思考令牌上花费了大量时间。C 语言的运行时间为 90.8 秒,主要原因是其代码行数过高(517 行)。

类型检查器开销:Python/mypy 比 Python 慢 1.6-1.7 倍;Ruby/Steep 比 Ruby 慢 2.0-3.2 倍。

数据和复制

所有实验代码和结果均可在 GitHub 上获取:

https://github.com/mame/ai-coding-lang-bench

每次运行的结果都保存在 report.md 文件中。执行日志和生成的源代码位于数据分支上。

注意:benchmark.rb 使用了 --dangerously-skip-permissions ,因此如果您想重现该实验,请务必小心(我是在 Docker 中运行的)。

讨论

以下是我个人的解读。我是一名 Ruby 代码提交者,所以请注意我的主观倾向。此外,我也没有详细分析所有生成的代码。

造成速度/成本差异的原因是什么?

这项实验无法指出单一原因,而且我认为也不存在单一原因。但我们可以根据这些趋势提出假设:

  • 类型系统 :动态语言始终速度更快、稳定性更高。
  • 简洁性 :较短的代码通常意味着更快的生成速度——但 OCaml 和 Haskell 虽然代码紧凑,但生成成本却很高,这显然是由于大量使用了思考标记。
  • 过程式与函数式 :除了排名前三的语言之外,过程式语言和函数式语言之间的差距并不大。值得注意的是,OCaml v2 的 TIME 为 47.1s,足以与 JavaScript 相媲美(尽管 OCaml 可以用过程式风格编写,因此很难进行纯粹的函数式比较)。
  • 语言特有的困难 :C 语言的内存管理和 Rust 的所有权模型可能会增加开销。
  • AI 熟悉度 :Python、Ruby 和 JavaScript 拥有远超其他语言的训练数据。Scheme 和 Haskell 的训练数据可能较少,结果也反映了这一点。Ruby/Steep 的开销(2.0-3.2 倍)高于 Python/mypy(1.6-1.7 倍),这可能也反映出 AI 对 Steep 的熟悉度低于对 mypy 的熟悉度。

很可能是这些因素共同作用导致了观察到的结果。

缺少类型岂不是会导致更多 bug 吗?

有可能。测试通过了,但动态类型语言中未经测试的路径可能存在类型错误。

也就是说,类型错误是最容易检测和修复的错误之一。如果一个代理程序在没有类型检查器的情况下频繁引入类型错误,那么它很可能也会以类似的频率引入逻辑错误——这时问题就不仅仅是类型检查就能解决的了。

值得注意的是,在 600 次运行中,仅有的 3 次失败分别发生在 Rust(2 次)和 Haskell(1 次)中——这两种语言都是静态类型语言,都具有所有权和 monad 等独特概念。这或许只是巧合,但类型并不能完全杜绝 bug。

2倍的差距不算太大,对吧?

我认为是的。

在实际开发中,你会不断迭代:提示 → 等待 → 思考下一个任务 → 再次提示。等待 30 秒和等待 60 秒之间的差别至关重要——不仅体现在总时间上,还体现在专注度和流程效率上。响应时间在迭代开发中至关重要。

“花更多时间打造稳健的产品”这种说法固然有道理,但当竞争对手的出货速度是我们的两倍时,等待真的是正确的选择吗?开发速度本身就是质量的一个维度。

也就是说,如果未来两者之间的差距缩小到 1 秒对 0.5 秒,那么就真的无关紧要了。

任务规模太小。静态类型应该在大规模场景下才能发挥优势。

我同意。但是,要设计一个能够公平地涵盖15种语言的大规模基准测试,确实很有挑战性。应该有人尝试一下。

难道生态系统和运行时性能对于语言选择不是更重要吗?

当然。从代码生成的角度来看也是如此——如果你能利用现有的生态系统,需要生成的代码量就会减少,速度更快,成本更低。如果运行时速度对你的应用程序至关重要,那就没有理由选择速度慢的动态语言。

为了进行这项实验,我特意选择了一个不依赖任何外部库的任务,以隔离语言层面的差异。因此,规范中使用了自定义哈希值而非 SHA-256。

结论

我使用 Claude Code 对哪些编程语言最适合代码生成进行了定量评估。至少对于原型开发规模的任务而言,Ruby、Python 和 JavaScript 似乎是最佳选择。

静态类型在大规模应用中可能具有优势——应该有人测试一下。

经典策略——先使用动态语言,然后随着项目成熟迁移到静态语言——或许仍然是正确的选择。编码代理似乎非常擅长跨语言迁移(尚待验证),这使得该方案越来越现实可行。

笔记

  • 评估时间为 2026 年 3 月。鉴于人工智能的发展速度,几个月后结果可能会有所不同。
  • 这项实验得到了 Claude for Open Source Program 的支持。感谢 #Anthropic 公司提供 6 个月的免费 #Claude Max 20x!

Download Pickful App

Better experience on mobile

iOS QR

iOS

Android QR

Android

APK QR

APK