image

在 AI 圈子里,Python 几乎是神一般的存在。

数据科学、机器学习、大模型训练……Python 就像是 AI 时代的“母语”。如果你是个算法工程师,不会 Python 简直寸步难行。

但最近,一个略显刺耳的观点浮出水面:对于 AI Agent(智能体)来说,Python 可能是最烂的选择,Go 才是天选之子。

这听起来像是某种故意挑起流量的暴论,毕竟,谁不知道 Python 的生态最丰富?然而,当我仔细读完 Bruin 联合创始人 Burak Karakan 的长文论证后,我不得不承认,这哥们儿可能真摸到了点门道。

一场误打误撞的“押注”

说实话,Burak Karakan 当初选 Go 语言开发 Bruin(一款开源 ETL 工具)时,根本没想这么远。

image

那是一个纯粹的技术决策。Bruin 是个 CLI 工具,需要高并发、跨平台、还得快。Python 虽然生态好,但在并发和性能上确实差点意思;Go 虽然数据类库少点,但胜在简单、强悍。

更重要的是,Burak 自己写得爽。

Joy and energy is one of the rarest resources a small team can have.
快乐和精力是一个小团队最稀缺的资源。

他当时甚至有点担心,选 Go 意味着要造很多轮子,这是不是个战略错误?

结果,Agent 时代来了。他发现自己误打误撞,进了个“神仙局”。

为什么?因为 Agent 写代码的方式,和人类完全不同。

Agent 需要的是“严师”,不是“慈母”

Agent 生成的代码,有个致命特点:看着对,其实全是坑。

LLM(大语言模型)吐出来的代码,语法通常都很漂亮,逻辑也能自圆其说。但一跑起来,类型错误、参数不匹配,各种奇葩 Bug 层出不穷。

这时候,Python 的“灵活性”反而成了灾难。

Python 是解释型语言,写得对不对,跑起来才知道。Agent 写了一堆代码,你也得跑一遍才能发现它写错了。这就好比你让个小学生写作文,老师不批改,直接让他上台朗读,读了一半才发现全是错别字。

Go 语言就不一样了。

Go 是编译型语言。Agent 写完代码,一编译——报错。

只要编译通过,至少说明类型是对的,语法是没问题的。 这就像给 Agent 配了个严厉的教导主任,作业交上来先查错别字,改对了再让你进门。

Burak 在文章里提到,虽然 Rust 也是编译型语言,但对 Agent 来说,Rust 太复杂了。类型系统太高级,编译时间太长,Agent 的反馈循环会被拉得很长。

而 Go?简单、粗暴、编译快。

Go’s syntax and concepts are simpler than Rust's.
Go 的语法和概念比 Rust 简单得多。

Agent 不需要理解什么所有权、生命周期,它只需要把代码写对,然后快速编译通过。

拒绝“选择困难症”

除了编译,还有一个被很多人忽视的痛点:标准化。

如果你用过 JavaScript,你一定懂那种痛苦。这周流行 Webpack,下周就是 Vite;有人用 CommonJS,有人用 ESM;格式化工具也是一堆,Prettier、ESLint 配置满天飞。

Agent 也是懵的。

你让 Agent 去格式化一个 JS 项目,它可能会愣住:我该用哪个工具?我要不要先装个包?

但在 Go 的世界里,这根本不是问题。

Go 只有一种格式化工具:gofmt

Go 只有一种测试写法。

Go 只有一种构建方式。

Burak 提到了一个非常有意思的观察:模型在训练数据里看到的 Go 代码,几乎长得一模一样。

这意味着,Agent 在生成 Go 代码时,不需要在“哪种写法更好”上纠结。它只需要照着标准答案抄就行了。

Ask an agent to format a JS code, and it’ll import a new tool... Ask it to do the same with Go, it’ll just run gofmt.
让 Agent 格式化 JS,它会引入新工具……让它格式化 Go,它直接运行 gofmt 就完事了。

这种“独裁”式的标准,反而成了 Agent 的温床。

95% 的“一次成功率”

image

Burak 给出了一个惊人的数据(虽然是他自己的体感):Agent 生成 Go 代码的一次成功率高达 95%。

这数据怎么来的?

他对比了 Python 和 Go。虽然 Python 的训练数据量吊打 Go,但 Python 的写法太多了。同一个功能,你可以用 Pandas 写,可以用纯 Python 写,还可以用各种奇技淫巧。

Agent 容易在 Python 的“多样性”里迷失方向。

而在 Go 里,路只有一条。Agent 只要走上去,大概率是对的。

当然,这个观点在评论区引发了激烈的撕逼。

有人现身说法,表示 “完全相反”

一位网友评论道,他让 Claude 和 Cursor 分别用 Python 和 Go 重写项目,结果 Python 完胜。Python 代码量更少、生成速度更快、错误更少。Go 项目写到一半,Agent 还在跟类型系统搏斗,Python 项目已经跑通了。

还有人为 Rust 摇冤。有人认为,Rust 的类型系统虽然难,但只要编译通过,运行时几乎零错误。Go 的类型系统太弱,有时候编译过了,运行时还是得崩。

更有意思的是,有人让 Agent 自己“设计一门语言”。

结果 Agent 设计出了一个类似 Forth 的怪胎,有强类型、合约、原生测试……唯独不像任何现有的主流语言。这说明什么?也许人类现有的语言,对 Agent 来说都不是最优解。

留给 Python 的时间不多了?

image

说实话,我并不认为 Go 会彻底取代 Python 在 AI 领域的地位。

Python 那庞大的生态库,是几十年积累下来的护城河。做数据分析、做模型训练,Python 依然是王。

但在 Agent Coding(智能体编程) 这个垂直领域,Go 确实展现出了惊人的适应性。

它简单、标准、编译快、跨平台容易。这些特性在人类程序员眼里可能是“枯燥”,但在 Agent 眼里,就是“确定性”。

Burak 最后说了一句很意味深长的话:

I believe programming languages are going through a weird phase...
我觉得编程语言正在经历一个奇怪的阶段……

image

以前我们看重的东西,现在可能不重要了;以前我们忽略的东西,现在可能成了关键。

如果未来真的是 Agent 在写代码,我们人类是不是该重新审视一下,到底什么样的语言,才适合这群“硅基程序员”?

也许,Go 语言真的只是运气好,恰好撞上了这个风口。

又或者,这只是编程语言进化史上的一个小插曲。

谁知道呢?反正我现在让 Claude 写 CLI 工具时,也会试探性地加一句:"Please write it in Go."

参考链接:
https://getbruin.com/blog/go-is-the-best-language-for-agents/