阅读视图

发现新文章,点击刷新页面。
🔲 ☆

Ruby on Rails 之父最新访谈:AI 正在推高顶尖程序员的身价

本文永久链接 – https://tonybai.com/2026/04/10/rails-father-dhh-on-ai-and-programmer-value

大家好,我是Tony Bai。

在这个由 AI 主导的、充满不确定性的 2026 年,整个软件行业似乎都被一种集体性的焦虑所笼罩。我们每天都在讨论:当 AI 能在一分钟内写完我们一周的代码时,我们这些“人类程序员”的价值还剩下多少?

就在所有人都在悲观地预测“程序员即将贬值”时,一位以“毒舌”和“极简主义”著称的硅谷大神,却逆着人潮,抛出了一个极其震撼的“反共识”暴论:

“我们可能已经见证了‘普通程序员’薪资的顶峰。但对于那些顶尖的、真正懂行的开发者来说,AI 正在让他们变得比以往任何时候都更值钱、更有价值。”

说出这句话的,正是 David Heinemeier Hansson (DHH)——Ruby on Rails 框架之父、37signals (Basecamp & HEY) 的联合创始人兼 CTO。

就在几个月前,DHH 还是 AI 编程最坚定的“喷子”之一。他曾公开嘲讽 Copilot 像个烦人的实习生,打断他的思路,生成的代码全是垃圾。

但在一场最新的深度访谈中,他却上演了一场惊天动地的“自我推翻”。他不仅承认自己已经“彻底投降”,更是将他现在的工作流形容为 “Agent First on Everything”(万物皆以智能体为先)

这场 180 度的惊天逆转背后,到底发生了什么?在这场信息量爆炸的对话中,DHH 不仅详细复盘了让他“觉醒”的那个“aha moment”,更对 AI 时代的程序员价值、团队协作、以及“软件匠艺”的未来,给出了极其深刻、甚至有些残酷的终极洞见。

从“令人作呕”到“欲罢不能”:DHH 的“觉醒”之路

DHH 坦言,在 Copilot 和早期 Cursor 的“代码补全(Autocomplete)”时代,他对此类工具的厌恶达到了顶峰。

“我感到无比愤怒。它总是在我还没想清楚的时候就试图猜我想写什么。‘你是想写这个吗?’‘你是想写那个吗?’ 闭嘴!让我自己把话说完!

他甚至一度悲观地认为,整个行业将走向一个由“Tab 键”驱动的、毫无思想的愚蠢未来,并开玩笑说自己可能要去丹麦种土豆了。

转折点发生在 2025 年的冬天。两个关键变量,彻底改变了游戏规则:

  1. 模型的质变:Anthropic 的 Claude Opus 4.5 模型发布。DHH 发现,这个模型生成的代码质量,第一次持续地、稳定地震惊到了他。它产出的代码,在很多时候,是他自己也愿意合并的。
  2. 交互范式的革命:以 Open Code 和 Claude Code 为代表的 Agent Harnesses出现。AI 不再是那个烦人的“代码补全机”,而是变成了一个可以独立使用工具(Bash、网络)、拥有自己终端的“数字同事”。

DHH 形容,当这两个变量结合在一起时,他迎来了职业生涯的“第二次启蒙”——上一次,是 2000 年初他第一次发现 Ruby 语言的优雅。

“我不再是那个在键盘上打字的人,我感觉自己像是穿上了一套超级机甲。我突然长出了 12 只手,可以同时操作 7 个屏幕。我作为程序员的能力,被极度放大了。

我们可能已经度过了“程序员薪资的顶峰”

当被问及 AI 是否会取代程序员时,DHH 毫不避讳地抛出了一个极其冷酷的观点:

我们很可能已经见证了“程序员(作为一种普通职业)”的黄金时代顶峰。

他认为,在过去,程序员之所以能获得极高的薪资,是因为他们是生产软件的“瓶颈资源”。产品经理想出一个绝妙的点子,必须排队等待昂贵的程序员花几周时间才能实现。

但现在,瓶颈正在快速转移。

“当产品经理自己就能用 AI 生成可用的代码时,事情就要变天了。在任何一个软件开发被视为‘成本中心’(而这恰恰是世界上绝大多数的软件开发场景)的公司,降薪和裁员的压力将是不可避免的。”

但这是否意味着所有程序员都会被淘汰?

恰恰相反。DHH 认为,AI 正在引发一场剧烈的“价值两极分化”

  • 中间层的崩溃:那些只会“把需求翻译成代码”的普通程序员,其价值正在被无限稀释。因为 AI 做这件事更快、更便宜。
  • 顶尖人才的价值飙升:那些具备极高“品味(Taste)”、“审美(Aesthetics)”和“架构判断力”的资深工程师,他们的价值正在被 AI 放大 10 倍甚至 100 倍。

因为他们是那个能够判断“AI 生成的东西是对是错、是美是丑”的最终把关人。他们从“体力劳动者”,进化为了“艺术总监”。

当 AI 能写所有代码,我们还剩下什么?

在这场对话中,DHH 反复强调一个词:Aesthetics is truth(美学就是真理)。

他认为,无论是在数学、物理学还是软件工程中,一个优美的解决方案,往往也正是那个正确的方案。

“乔布斯之所以关心 Mac 电脑机箱内部的走线,是因为他凭直觉知道,只有那些在乎印刷电路板布局的人,才会去死磕用户界面的每一个像素。

在 AI 时代,这种对“美”的追求,不仅没有过时,反而变得空前重要。

因为当你拥有了无限的“算力(AI)”时,唯一稀缺的,就是“品味(Taste)”

DHH 认为,未来顶尖的软件工程师,其核心竞争力将不再是“知道多少种排序算法”,而是:

  1. 产品感:深刻理解“我们应该做什么,不应该做什么”。
  2. 系统设计能力:将模糊的业务需求,抽象为清晰、优美的架构。
  3. 极高的审美标准:能够引导 AI 生成不仅能工作、而且看起来赏心悦目、易于维护的代码。

代码的实现,正在变得廉价;而代码的“品味”,正在变得无价。

大神的日常:我是如何指挥 AI “军团”的?

DHH 详细分享了他现在的“Agent-First”工作流,堪称教科书级:

他使用 tmux 在终端里创建了一个三分屏布局:

  • 左侧是 Neovim 编辑器。
  • 右上是跑着 Google Gemini 的 Open Code。
  • 右下是跑着 Claude Opus 的 Claude Code。

“我几乎所有的工作都从其中一个 Agent 开始。我给它一个模糊的指令,然后看着它生成初稿。然后我把初稿扔给另一个 Agent,让它去批判和重构。我让它们俩来回‘吵架’。最后,我再跳到 Neovim 里,做那个最终的‘裁判’。”

他分享了一个让他自己都感到震惊的案例:

37signals 的 Linux 发行版 Omarchy 积压了 250 个无人处理的 PR。他花了 90 分钟,让 Claude 帮他审完了其中 100 个。

  • 10% 直接合并。
  • 20% Claude 觉得思路对,但实现太烂,直接帮他重写了一版。
  • 剩下的大部分,要么被他判定为“不需要”,要么被 Claude 识别为“实现太差且没有好思路”,直接关闭。

“这在以前至少是一周的工作量。更重要的是,其中一半的 PR 涉及我不懂的领域,Claude 在那些领域,是比我更聪明、更优秀的审查者。”

野心的爆炸:探索一个直觉的成本,已被降低一千倍

DHH 在访谈中提到了一个极具启发性的概念:AI 正在让“雄心(Ambition)”变得廉价。

他举例,他让 Agent 在几天内,为一个搁置已久的需求(为 Omarchy 实现 Windows 双系统启动)制定了一套完整的、可执行的方案。而在过去,他连花 4 个小时去调研的意愿都没有。因为这件事“重要但不紧急”,而且“非常麻烦”。

“探索一个直觉的成本,已经被降低了一千倍。我们现在可以去挑战那些过去连想都不敢想的项目。”

他分享了 37signals 内部的一个真实案例:一位名叫 Jeremy 的工程师,利用 AI 发起了一个名为“P1 优化”的疯狂项目。他要去优化系统中那最快的 1% 的请求,让它们变得更快。

这在传统性能优化的世界里,简直是“吃饱了撑的”。

但 Jeremy 仅用了几天时间,通过让 Agent 疯狂分析和重构,提交了 12 个 PR,硬生生把这 1% 请求的延迟从 4ms 压缩到了 0.5ms 以下,实现了 10 倍的性能提升。

当探索的成本趋近于零时,过去那些被视为“无用功”的边缘优化,将共同汇聚成压倒性的产品优势。

小结:这是一场关于“手艺”的文艺复兴

在访谈的结尾,DHH 表达了他对未来的极度乐观。

他认为,AI 并没有让编程变得无趣,反而让他找回了自 2000 年初发现 Ruby 以来最大的快感。

DHH 的这场“觉醒”,不仅仅是一个技术大佬对新工具的拥抱。它更像一个宣言:

在 AI 时代,软件工程的“手艺(Craft)”并没有消亡,它只是从“雕琢代码”的微观层面,升维到了“塑造品味”与“驾驭系统”的宏观层面。

AI 正在无情地淘汰那些只会“拧螺丝”的码农,但同时,它也为那些真正热爱创造、拥有极高审美和品味的“工匠”,递上了一把前所未有的神兵利器。

你,准备好拿起它了吗?

资料链接:https://www.youtube.com/watch?v=JiWgKRgdgpI


今日互动探讨:

在使用 AI 编程后,你是否也像 DHH 一样,感觉自己的“野心”被放大了,敢于去挑战更复杂的项目?在你的工作中,AI 是更多地扮演“体力外包”,还是“创意伙伴”的角色?

欢迎在评论区分享你的真实感受!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

🔲 ☆

硬核测评:哪门语言最受 AI 宠爱?13 种语言横向对比,Go 表现如何?

本文永久链接 – https://tonybai.com/2026/03/09/hardcore-review-13-languages-ai-favorite-go-performance

大家好,我是Tony Bai。

随着 Claude CodeGemini Cli、Codex 等 AI 编程工具的全面普及,“让 AI 写代码”已经从极客的玩具变成了日常的生产力。随之而来的是一个触及灵魂的问题:哪种编程语言最适合交给 AI 去写?

作为 Gopher,我们一直为 Go 语言的“极简语法”、“极速编译”和“强类型安全”感到自豪。我们理所当然地认为,这种没有任何隐式魔法、像白开水一样的语言,绝对是 LLM 的最爱。

然而,现实总是比直觉更骨感。近日,Ruby 核心提交者 Yusuke Endoh(@mame)发布了一份名为 ai-coding-lang-bench 的硬核定量测评报告。他使用 Claude Code(Opus 4.6 模型)对 13 种主流编程语言进行了系统性横向对比。

在这场涵盖了动态语言、静态语言和函数式语言的混战中,Go 语言的表现究竟如何? 是力压群雄,还是黯然失色?那些备受人类推崇的静态类型系统,在 AI 面前是否成了累赘?

本文和大家一起阅读和拆解这份报告,为你揭晓 AI 时代的语言偏好图谱。

实验设计:让 AI 写一个 Mini-Git

在评价这份报告之前,我们先来看看它的实验设计,这是目前业内少见的、针对 AI Agent 的工程化能力的量化评估。

任务目标:让 Claude Code (Opus 4.6) 从零开始实现一个 mini-git(简化版的 Git)。这是一个极具代表性的任务,它包含了文件 I/O、哈希计算、数据结构操作以及命令行接口,足以考验模型对语言生态的综合运用能力。

测试被巧妙地分为两个阶段,模拟了真实的软件生命周期:

  • v1 (新项目构建):实现基础的 init, add, commit 和 log。
  • v2 (特性扩展):在 v1 的基础上,增加 status, diff, checkout, reset, rm, show 等复杂指令。

提示词(Prompt)极其极简:“阅读 SPEC-v1.txt,实现它,并确保 test-v1.sh 测试通过。”这种设计最大程度地减少了人类指令的干预,纯粹考验 AI 代理在闭环环境下的自主编码、调试和测试能力。

参赛选手(13种语言/15种配置)

  • 动态语言:Python, Ruby, JavaScript, Perl, Lua
  • 动态+类型检查器:Python/mypy, Ruby/Steep
  • 静态语言:TypeScript, Go, Rust, C, Java
  • 函数式语言:Scheme (动态), OCaml (静态), Haskell (静态)

每种语言配置运行 20 次,以消除 LLM 生成的随机性带来的误差,并统计其耗时(Time)、成本(Cost,即 Token 消耗)和代码行数(LOC)。

核心发现:动态语言逆袭,Go 位居第二梯队

如果仅看总耗时和总成本(v1 + v2),测试结果呈现出了令人瞩目的阶梯式分布。

第一梯队:Ruby, Python, JavaScript 的绝对统治

在这场 AI 编程竞速中,Ruby(73.1s)、Python(74.6s)和 JavaScript(81.1s)组成了无可争议的第一阵营。

它们不仅生成速度最快、消耗 API 成本最低(均在 $0.40 以下),而且在 20 次测试中表现出了极高的稳定性(标准差极小)。

对于 AI 来说,生成这三种语言的代码就像呼吸一样自然。它们无需繁琐的项目初始化配置(如 Cargo.toml 或 package.json),可以做到“建个文件直接跑”,这种极简的工作流在 v1 阶段(新项目构建)优势极大。

第二梯队:被“强类型”拖慢脚步的 Go 与 Java

现在,来回答大家最关心的问题:Go 表现如何?

答案是:位居第二梯队。Go 的总耗时为 101.6s,平均成本 $0.50。中规中矩。Go 虽然在语法上非常克制,但依然落后于 Python 和 JS 等动态语言。与之类似,Java(115.4s)也因为繁琐的语法结构和强类型约束,留在了这一梯队。

尽管如此,Go 在整个 20 次测试中没有出现一次失败(0 次 fail),这证明了 Go 的编译器在防止 AI 产生“幻觉 Bug”方面,发挥了极其可靠的安全网作用

“后进生”阵营:Rust 与 C 的挣扎

备受人类极客推崇的 Rust(113.7s,且有 2 次失败)和底层的 C(155.8s)在测试中显得步履维艰。

尤为值得注意的是,在总共 600 次的独立运行中,只有 Rust (2次) 和 Haskell (1次) 出现了测试失败(未能最终跑通 Shell 脚本)的情况。这两门语言都以其极高的心智负担和“编译器教你做人”的严格程度而闻名。

这也是将Rust列入“后进生”阵营的主要原因。如果用《飞驰人生》的拉力赛来比喻,Rust 相当于在40站的赛季中,有两站没能完赛!

深度剖析:为什么 AI 更偏爱动态语言?

在传统的工程视角中,“静态类型防止低级 Bug”、“动态语言难以维护”是金科玉律。但在 LLM 驱动的 Agent 开发流中,这个逻辑为何失效了?作者 Yusuke Endoh 提出了几个关键的解释维度。

训练数据的“虹吸效应”

LLM 的能力直接取决于训练语料的规模和质量。Python、JavaScript 和 Ruby 是过去十几年 Web 开发的绝对主流。GitHub 上海量的这三种语言的开源代码、StackOverflow 上的问答,为 Claude Code 提供了极其丰富的“预训练肌肉记忆”。

当 AI 需要实现一个功能时,它在 Python 的隐空间(Latent Space)中寻找最优解的路径,远比在 Haskell 甚至 Rust 中要清晰、笔直得多。

静态类型的“双刃剑”与重构阻力

静态类型系统的初衷是约束人类,防止我们在重构时犯错。但在 AI 的“ Prompt -> 生成 -> 测试报错 -> 思考 -> 再生成”的迭代循环中,严格的类型检查反而成了巨大的“摩擦力”。

  • 编译成本与调试死锁:在 Rust 或 C 中,当 AI 生成的代码出现类型不匹配时,它需要花费大量的 Token 去阅读复杂的编译器报错信息。有时,为了解决一个简单的借用检查器(Borrow Checker)报错,AI 可能会陷入漫长的、无休止的“试错-编译失败”死循环。
  • 重构牵一发而动全身:在 v2 特性扩展阶段,往往需要修改现有的数据结构。对于 Python,AI 只需要在字典里加个 key;而对于 Rust 或 Java,这可能意味着需要重构一系列的 Struct、更新类型签名、甚至修改与之相关的无数个函数的参数声明。这种“爆炸半径”极大地增加了耗时。

“附加类型检查”的巨大损耗

报告中一个非常有意思的对照组是:原生动态语言 vs 附加类型检查器的动态语言。

  • Python (74.6s) vs Python/mypy (125.3s) —— 变慢了 1.6~1.7 倍。
  • Ruby (73.1s) vs Ruby/Steep (186.6s) —— 变慢了 2.0~3.2 倍!

这证明了,迫使 AI 在动态语言中编写严谨的类型注解(Type Annotations),是一项极其昂贵的任务。模型需要耗费额外的算力去推导类型、生成类型声明文件,并且在类型检查器报错时,还要去修复那些在纯动态模式下可能根本不影响运行的“伪 Bug”。

代码量(LOC)的迷思:越短越好吗?

我们通常认为,写得越少,跑得越快。但数据打破了这个迷思。

Haskell 和 OCaml 生成的最终代码行数(224行和 216行)是所有语言中最少的,甚至少于 Python 和 Ruby。然而,它们在生成时间上的表现却排在倒数(Haskell 耗时最长,达 174s)。

这表明,对于 AI 来说,函数式语言那种高度抽象、信息密度极大的代码,生成和推理的成本远高于像 Python、Go 那种稍微啰嗦但逻辑平铺直叙的“大白话”代码。浓缩的未必是精华,对于 LLM 来说,高度浓缩往往意味着更高的生成熵和更高的试错概率。

行业启示:我们需要重新思考 AI 时代的技术栈选型

面对这份详实的基准测试报告,无论你是 CTO 还是普通开发者,都必须开始重新审视未来的技术选型逻辑。

动态语言是快速原型的“绝对王者”

如果你正在启动一个新项目,或者需要用 AI Agent 快速验证一个业务流程,Python 和 TypeScript 是首选(报告中 JavaScript 表现优于 TS,但在实际工程中 TS 的综合权衡更佳)。

不要迷信“大型项目必须一开始就上强类型编译语言”。在需求快速变化的初期,让 AI 用动态语言狂飙突进,是获取业务反馈最高效的手段。

性能王者们的困境:Go 与 Rust 在 AI 时代掉队了吗?

看到测评数据,很多 Gopher 可能会感到失落:难道注重工程严谨性和系统级性能的静态语言,真的在 AI 时代掉队了吗?

结论并非如此悲观。我们需要明确一点:Agent 测评的速度,不等于软件最终运行的速度。

  • 业务试错 vs 基础设施:AI Agent 目前最擅长、也最快速能完成的,是写“胶水逻辑”和“业务 CRUD”。在这些领域,Python 确实快。但当你的系统涉及到高并发、内存精细控制、或者需要打包为轻量级容器部署时,人类依然需要 Go。
  • 容错的底线:在这场 600 次的庞大测试中,只有 Rust 和 Haskell 出现了最终测试失败,而 Go 保持了完美的 100% 成功率。这恰恰说明,Go 在“极度灵活(易幻觉)”与“极度严格(难生成)”之间,找到了一个非常微妙的平衡点。它可能不是 AI 写得最快的,但它一定是 AI 写出来最让人放心的系统级语言。

我们不应期待 AI Agent 能够像写 Python 脚本一样,如德芙般丝滑地生成出一个复杂的 Go 并发系统。但在 AI 给出的初稿之上,Go 语言极佳的可读性和统一的规范,将为人类工程师的最终审查(Code Review)节省巨大的精力。

小结:下一个十年的编程语言,长什么样?

ai-coding-lang-bench 给我们上了生动的一课。它揭示了当前 LLM 的偏好:它们喜欢有海量训练数据的、灵活的、不需要应对死板编译器的语言。

但我们必须认识到,这只是一份基于 2026 年初模型(Claude Opus 4.6)的快照。未来的 AI 编程语言形态,可能会朝着两个方向演进:

  1. AI Native 语言的诞生:抛弃目前设计给人类阅读的语法,出现一种专门为了降低 LLM 生成 Token 成本、且天然抗幻觉的机器中间语言。
  2. 现有静态语言的“Agent 友好化”编译模式:Go 和 Rust 可能会进化出一种特殊的编译模式。在这个模式下,编译器不仅是冷冰冰地报错,还能以结构化的、对 LLM 更友好的方式提供“修复建议”,从而大幅缩短 Agent 修复编译错误的反馈回路。

无论如何,浪潮已经来临。在 AI 主导代码生成的新时代,我们评价一门编程语言的标准,正在从“它对人类大脑是否友好”,悄然转变为“它对大模型推理是否友好”

而在这场新赛道上,动态语言们,已经抢跑了。

本文核心数据与图表均来源于 GitHub 项目 mame/ai-coding-lang-bench


你的 AI 编程初体验

看完这个排名,你是感到意外,还是早已感同身受?在你日常使用 AI 编程时,你觉得它写哪种语言最让你省心?你是否也曾为了修一个 AI 写的编译错误而陷入“死循环”?

欢迎在评论区分享你的“AI 协作”红黑榜!


“语言的严格性正在变成 AI 的摩擦力?在 AI 时代,掌握一套能驱动 Agent 自动化、自修复的‘工作流’比死磕语法更重要。我的新专栏 AI原生开发工作流实战 将教你如何利用 Claude Code 结合 Spec 驱动开发,构建真正高产出的‘软件工厂’。”

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

🔲 ☆

AI 时代的新王座:为什么说 Go 可能是开发 AI Agent 的最佳语言?

本文永久链接 – https://tonybai.com/2026/03/07/why-go-is-the-best-language-for-ai-agents

大家好,我是Tony Bai。

当我们在谈论 AI 编程时,Python 似乎是那个无需讨论的“默认选项”。

然而,随着 AI 应用从模型训练(Training)走向自主智能体(Agents)和复杂的工程落地,基础设施层的语言选型正在悄然发生变化。近日,开源数据编排工具 Bruin 的作者发表了一篇题为《Go 是开发 AI Agents 的最佳语言》的文章,在 Hacker News 上引发了数百条跨语言阵营的激烈辩论

为什么一位有着 10 年 Python 和 JS 经验的开发者,最终选择用 Go 来构建现代 AI 基础设施?在 AI 生成代码(AI-Generated Code)日益普及的今天,编程语言的“静态类型”、“编译速度”和“语法极简主义”又被赋予了怎样的新维度价值?

本文将深度拆解这场争论,带你探讨在“Vibe Coding(氛围编程)”时代,Go 语言如何凭借其独特的设计哲学,意外地命中 AI Agent 开发的甜点。

为什么是 Go?来自生产一线的工程反思

Bruin 是一个开源的 ETL(提取、转换、加载)工具。在数据工程领域,Python 拥有统治级的地位(Pandas, Airflow 等),按理说,Bruin 完全应该用 Python 编写。

但作者最终选择了 Go。原因在于,AI Agent 和数据编排工具在本质上属于基础设施(Infrastructure),它们面临的工程约束与模型训练截然不同:

  1. 极致的并发需求:Agent 绝大部分时间都在等待外部 API 的响应(OpenAI, Anthropic)。Go 极其轻量的 Goroutine 机制(2KB 栈空间,极低的上下文切换成本)允许在单机上轻松维持数万个并发请求,而 Python 的 GIL(全局解释器锁)即使配合 asyncio,在 500-1000 RPS 后也会遇到明显的线程竞争瓶颈。(注:最新版Python已经去除了GIL的限制。)
  2. 极简的部署体验:Go 编译出的单一静态二进制文件,无需像 Python 那样处理复杂的虚拟环境(venv)、依赖冲突和运行版本问题。对于需要在用户机器上运行的 CLI 工具来说,Go 是“分发即运行”的典范。
  3. 跨平台验证的便利:Go 一等公民的跨平台编译能力,意味着不仅开发者可以轻松构建多平台产物,未来的“后台 AI Agent”也能在一个隔离的沙箱中快速验证代码的跨平台兼容性。

除了上述硬核的工程指标外,作者还坦诚地分享了一个极其主观,但对初创团队至关重要的考量:开发体验(Developer Experience)与情绪价值。

作者将在很长一段时间内作为项目的核心贡献者,他深刻地意识到:

“对于一个小型团队来说,在构建大型项目时,快乐和活力(Joy and Energy)是最稀缺的资源之一。因此,至关重要的是,我不能对自己每天要面对的技术栈感到畏惧或厌烦。”

Go 语言或许在某些特性上不如 Python 灵活,也不如 Rust 表达力强,但它带来的那种“一切尽在掌握”的确定性和快速获得反馈的成就感,能让开发者在漫长的马拉松式开发中保持心流状态。这种心理层面的正向反馈,在 AI Agent 这种充满不确定性的前沿领域探索中,往往是支撑团队走过低谷、坚持到黎明的关键力量。

如果说以上只是 Go 作为“云原生王者”的常规操作,那么在引入大语言模型(LLM)作为“代码生成器”后,Go 的语言特性产生了奇妙的化学反应。

静态编译:给 AI 戴上“紧箍咒”

当 Coding Agent 开始每分钟吐出成千上万行代码时,最大的挑战不再是“如何生成”,而是“如何证明它有效”。

在解释型语言(如 Python 或 JavaScript)中,代码的正确性往往只有在运行到特定分支时才能被验证。作者指出,这是 Go 在对抗 AI 幻觉时最大的优势之一:Go 是一门强类型的编译型语言。

编译器的“守门员”效应

当你用 LLM 生成 Go 代码时,go build 成了一道天然且严苛的防火墙。类型不匹配、未使用的变量、错误的函数签名——这些占据了 AI 幻觉相当大比例的低级错误,会被 Go 编译器瞬间无情地驳回。

正如一位 HN 网友 所言:

“在这个人人都在‘氛围编程(vibing left and right)’的时代,你迫切需要一个编译器在背后支持你。Go 让你可以写稍微随意一点的代码,但又不会像 Python 或 JS 那样毫无底线。编译器扮演了看门人的角色,将混乱控制在一定范围内。”

为什么不是 Rust?

讲到编译期安全,Rust 绝对是无可争议的王者。但为什么作者认为 Go 比 Rust 更适合 AI Agent?

  • 迭代速度决定一切:AI Agent 的工作流是一个“生成 -> 编译 -> 报错 -> 修复”的紧密反馈循环(Feedback Loop)。Go 的编译速度几乎是瞬时的,这使得 LLM 的试错循环可以极快地运转。而 Rust 漫长的编译时间,在这里成为了致命的瓶颈。
  • 借用检查器的“认知负荷”:Rust 的内存模型(生命周期、借用)极其复杂。现阶段的 LLM 在处理复杂的借用关系时,常常会陷入“为了让编译器闭嘴而无脑 clone()”的陷阱,导致生成的代码偏离 Rust 的最佳实践。
  • 更平缓的试错成本:Go 的垃圾回收(GC)机制让 AI(以及审查代码的人类)可以专注于业务逻辑,而不必在内存管理上耗费计算 token 和审查精力。

简单来说:Rust 的上限极高,但门槛太陡;Go 用 20% 的努力(快速编译+GC),换取了 80% 媲美 Rust 的安全性,这恰好是 AI 迭代的最优解。

极简主义与“无聊”的胜利

Go 语言自诞生起,就因为其语法的“无聊”和“死板”(比如缺乏灵活的宏、长期没有泛型、繁琐的错误处理)而饱受争议。然而,在 AI 时代,这种“无聊”却意外地成为了巨大的优势。

“只有一种做法”的红利

Python 和 JavaScript 以“灵活”著称。在一个 JS 项目中,有人用 CommonJS,有人用 ES6 Modules;有人用 npm,有人用 pnpm。对于人类来说,这叫“生态繁荣”;但对于 LLM 来说,这叫“状态空间爆炸”(High Entropy)。

Go 是极其“固执”的语言(Opinionated)。

  • 格式化代码?只有 gofmt。
  • 怎么处理错误?永远是 if err != nil。
  • 怎么写测试?标准库 testing 包。

正如作者指出的:“要求 Agent 格式化 JS 代码,它会去引入一个新工具并尝试配置它;而在 Go 中,它只需要运行 gofmt。”

这种高度统一的代码风格,意味着在 LLM 的训练语料库中,Go 代码的“信噪比”极高。模型不需要在多种编程范式中猜测你的偏好,它输出的 Go 代码通常具有高度的同质性和可预测性。

人类可读性:代码审查的最后防线

当 AI 成为主要的“代码编写者”时,人类的角色将不可避免地向“代码审查者(Code Reviewer)”倾斜。

如果 AI 生成了一段高度抽象的 Haskell 代码,或者使用了大量宏的 Rust 代码,人类审查者需要耗费极大的脑力去反编译这些逻辑。

而 Go 代码是出了名的“所见即所得”。没有隐藏的控制流,没有复杂的运算符重载。当 AI 生成了几百行 Go 代码时,即使是一位初级开发者,也能相对轻松地顺着逻辑线读懂它在干什么。

在 AI 编程的下半场,“代码易读”将比“代码易写”重要一万倍。

跨越阵营的交锋:Hacker News 的不同声音

当然,这篇文章在 Hacker News 上并非一边倒的赞同。不同语言阵营的开发者提出了极其犀利的反思。

反思一:Python 真的过时了吗?

Python 拥护者指出,文章混淆了“运行时性能”和“开发生态”。

虽然 Go 在高并发和 I/O 上碾压 Python,但如果 AI Agent 的核心逻辑涉及大量的数据科学计算、复杂的概率模型,或者需要直接调用底层的 C++ 机器学习库,Python 依然是不可替代的粘合剂。对于许多初创团队来说,“让代码先跑起来”远比“让代码跑得快”更重要。

反思二:类型系统能否取代测试?

支持函数式语言(如 OCaml, F#)的开发者指出,Go 的类型系统依然过于薄弱。

Go 缺乏代数数据类型(ADT)和模式匹配,导致其虽然能抓住低级语法错误,但难以像 Rust 或 OCaml 那样“在编译期保证业务逻辑状态的正确性”。

对于他们而言,如果 AI 真的足够聪明,应该让 AI 生成具有极强类型约束的代码,把正确性完全交给编译器,而不是像 Go 那样依然需要编写大量的单元测试。

反思三:长远来看,语言还重要吗?

这是一个终极的哲学问题:如果未来 AI 不再犯错,能够零成本生成正确的机器码,高级编程语言还有存在的意义吗?

有评论认为,当模型能力足够强时,我们甚至不需要编译型语言的保护,直接用自然语言(英语)+ LLM 生成运行时的 WebAssembly 可能才是终局。在这个维度上,争论 Go 还是 Python,就像在争论用什么牌子的算盘(意指已经被时代所抛弃的东西)一样没有意义。

小结:实用主义者的狂欢

在 AI 技术日新月异的当下,我们往往容易陷入一种对“前沿”的盲目崇拜,认为只有最复杂的语言、最先进的模型才能构建出优秀的系统。

但 Bruin 作者的实践和 Go 社区的繁荣告诉我们另一个故事:工程的本质是权衡(Trade-off)。

Go 并不是世界上最完美的语言,它的类型系统不如 Rust 严谨,它的生态不如 Python 庞大。但它用极致的编译速度、简单的并发模型、出色的内存管理和统一的编码规范,构建了一个容错率极高的工程基座。并且在这个基座上,无论是人类还是 AI Agent,都能以最低的“认知摩擦力”输出可靠的工业级代码。

资料链接:

  • https://getbruin.com/blog/go-is-the-best-language-for-agents/
  • https://news.ycombinator.com/item?id=47222270

你更相信谁?

在 AI 编程的下半场,语言的地位正在重构。你是坚守 Python 的生态优势,还是更看好 Go 在“基础设施级 Agent”中的爆发?你认同“编译器是 AI 的最佳守门员”这个观点吗?

欢迎在评论区留下你的“阵营宣言”!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

🔲 ☆

当“安全性”遭遇“交付速度”:2026 年,我为什么告别了 Rust

本文永久链接 – https://tonybai.com/2026/02/21/safety-vs-delivery-speed-why-farewell-rust-in-2026

大家好,我是Tony Bai。

在软件工程的铁三角中,Rust 占据了“安全性”与“性能”的绝对高地。凭借借用检查器(Borrow Checker)和极其严格的类型系统,它向开发者承诺了一个没有内存错误、没有空指针崩溃的完美世界。

然而,在商业软件开发的战场上,还有一个至关重要的维度往往被技术纯粹主义者忽视,那就是——交付速度(Delivery Speed)

近日,资深工程师 Dmitry Kudryavtsev 发表了长文《Farewell, Rust》,详述了他为何忍痛将一个运行了多年、已盈利的 Rust 项目全盘重写为 Node.js 的心路历程。这篇文章也引发了一场关于“为了极致的安全性,我们是否值得牺牲过多的交付速度?”的深刻辩论。

缘起:一个 C/C++ 老兵的“安全梦”

Dmitry 绝非那些被即时编译(JIT)宠坏的脚本小子。相反,他的技术底色是硬核的 C/C++。

早在高中时代,他就沉迷于指针的魔力,痴迷于手动管理内存的掌控感。他写过 3D 渲染器、IRC 机器人,甚至操作系统内核。然而,由于第一份工作是 PHP Web 开发,他被迫进入了动态语言的世界。虽然 PHP、Python 和 Ruby 带来了 Web 开发的极速体验,但在内心深处,他始终怀念 C 语言那种“压榨硬件每一滴性能”的快感,同时也痛恨 C 语言中防不胜防的内存安全漏洞。

直到 Rust 横空出世。

对于像 Dmitry 这样的工程师来说,Rust 简直就是“鱼与熊掌兼得”的梦想:

  • 低级控制力:像 C 一样精确控制内存布局。
  • 安全性:编译器在编译阶段就能消除一整类内存错误。
  • 现代体验:拥有像 Cargo 这样优秀的包管理工具。

于是,他做了一个所有热血工程师都会做的决定:为了追求极致的质量与安全,用 Rust 从零构建一个商业 Web 应用。

起初,一切都很完美。他在 2023 年底成功上线了项目,甚至因此受邀在两个技术大会上发表演讲。但随着时间的推移,业务逻辑日益复杂,“安全性”的红利开始被“交付速度”的损耗所抵消。到了 2026 年初,为了项目的生存,他不得不做出了那个艰难的决定:告别 Rust

深度复盘:Rust 在 Web 交付中的“五大减速带”

Dmitry 的文章之所以珍贵,是因为他用亲身经历证明了:在 Web 开发的特定场景下,Rust 引以为傲的“安全性”机制,如何一步步变成了拖慢“交付速度”的罪魁祸首。

1. 模板与视图:类型安全 vs. 迭代速度

在后端逻辑中,Rust 的类型系统坚不可摧。但当数据流向前端(HTML/Email 模板)时,这种为了安全而设计的严格性,变成了修改 UI 时的噩梦。

  • 安全性的代价:为了保证编译时的类型安全,Rust 社区诞生了 Maud 或 Askama 这样的编译时模板库。它们通过宏(Macro)在编译期检查 HTML 模板中的每一个变量引用。这听起来很棒,意味着你永远不会渲染出错误的变量。
  • 速度的牺牲:但这带来的副作用是,每次修改 HTML 哪怕一个标点符号,都会触发漫长的重新编译。在 Web 前端开发这种需要“所见即所得”的高频迭代场景下,这种等待是毁灭性的。
  • 对比 Node.js:TypeScript 配合 JSX/TSX 提供了全链路的类型安全,同时保持了极快的热重载(Hot Reload)速度。重构一个字段,VS Code 会立即标红所有受影响的视图组件,修改后毫秒级生效。这种“安全且快”的体验,是 Rust 目前无法提供的。

2. 国际化(i18n):生态缺失带来的效率黑洞

对于商业应用,支持多语言是刚需。

虽然 Mozilla 开发了 Project Fluent,但 Rust 生态中缺乏成熟的、开箱即用的 i18n 解决方案。你往往需要为了“正确性”而去处理繁琐的加载逻辑和类型绑定,编写大量的胶水代码。而Node.js生态中的i18next 等库不仅极其成熟,还能配合 TypeScript 提供键值级别的类型安全。Node.js 原生内置了完整的 ICU 标准(Intl API),处理货币、日期、复数格式化信手拈来。在这一点上,Rust 开发者需要花费数倍的时间来实现同样的功能,严重拖慢了产品推向全球市场的速度。

3. “动态”业务 vs. “静态”约束

Web 业务充满了动态性:用户提交的 JSON 结构可能是不确定的,筛选条件的组合可能是无穷的。Rust 试图用静态类型系统去约束这些动态行为,结果就是开发效率的暴跌。

  • 序列化之痛:serde 是 Rust 的瑰宝,但在处理复杂的、充满 Option 的业务数据时,为了安全地取出一个嵌套字段,你不得不编写大量的 match 或 unwrap 处理代码。为了优雅地处理错误,Dmitry 定义了十几个自定义错误枚举。虽然代码很健壮,但写起来太慢了。
  • SQL 的僵局:sqlx 提供了极其强大的编译时 SQL 检查,这在静态查询时非常棒。但是,一旦你需要根据用户输入动态构建查询(例如:用户选了 A 筛选条件就加个 WHERE 子句),Rust 的强类型系统就变成了噩梦。你无法像在 Node.js 中使用 Kysely 或 Prisma 那样,流畅地拼接查询片段。为了“安全”地构建 SQL,你付出了巨大的代码复杂度成本。

4. 编译时间:CI/CD 的隐形杀手

这是最让 Dmitry 崩溃的一点,也是“交付速度”最直观的体现。

  • Rust 的等待:随着依赖增多(尤其是使用了大量宏的 Web 框架),编译时间呈指数级增长。Dmitry 的 CI 流程需要 12-14 分钟 才能完成部署。“每次我在 Sentry 上看到一个简单的 Bug,想到修复它需要等待 15 分钟的构建流程,我就失去了修复的动力。”
  • Node.js 的极速:迁移到Node.js后,完整的 CI 流程(含 Lint 和测试)仅需 5 分钟。部署速度提升了 3 倍。这意味着“发现 Bug -> 修复 -> 上线”的反馈闭环被大大缩短了。在商业竞争中,修复速度往往比绝对的“无 Bug”更重要。

5. 生态成熟度:造轮子的时间成本

Rust 的 Web 生态虽然在成长,但面对长尾需求时仍显稚嫩。

  • 场景:你需要集成一个冷门的第三方支付网关,或者处理一个特定的 Webhook 签名验证。
  • Rust 的困境:官方 SDK?没有。社区库?两年前就不更新了。为了安全,你不得不对着 API 文档,自己手写 HTTP 请求、自己实现加密验签逻辑。这占用了大量本该用于开发业务核心功能的时间。
  • Node.js 的便利:npm install 通常能解决一切。几乎所有 SaaS 服务商都会提供第一方的 Node.js SDK。“拿来主义”是提升交付速度的最佳捷径。

总结与反思:我们到底为了什么而编程?

Dmitry 的文章并没有否定 Rust 的价值。相反,他依然热爱 Rust,依然怀念那些与编译器“斗智斗勇”并最终获得完美代码的日子。

他的结论非常客观,为所有正在做技术选型的团队提供了一把衡量“安全”与“速度”的标尺:

  1. 资源占用 vs. 开发效率的账本
    Rust 版本的应用内存占用仅 60-80MB,而 Node.js 版本约为 117MB。
    Rust 确实更省资源。但对于业务应用来说,这 50MB 的内存差异,在云服务器几美元一个月的成本面前不值一提。然而,为了节省这 50MB 内存,开发者付出了几倍的开发时间、调试精力以及心智负担。这笔账,在商业逻辑上是划不来的。

  2. 技术选型的“黄金法则”

    • 何时拥抱“安全性”(选 Rust):如果你在构建数据库内核、搜索引擎、高频交易系统、嵌入式设备固件,或者像 Lambda 这样对冷启动时间极度敏感的 Serverless 函数。在这些场景下,性能和稳定性是核心竞争力,为了安全牺牲开发速度是值得的。
    • 何时拥抱“交付速度”(选 Node.js/Go/Python):如果你在构建 CRUD 后端、SaaS 业务逻辑、内部管理工具,或者处于需要快速试错、频繁变更需求的初创阶段。在这些场景下,迭代速度(Velocity)才是核心竞争力。
  3. 给 Go 开发者的启示
    有趣的是,Dmitry 在注脚中提到了 Go:“Yes, there is Go. But I never really had the chance to like Go.”
    这其实是一个非常有意思的信号。在 Rust 的“极致安全”和 Node.js 的“极致速度”之间,Go 恰恰占据了那个“黄金平衡点”

    • 它有静态编译和类型系统,比 Node.js 更安全、性能更好。
    • 它有极快的编译速度和简单的语法,比 Rust 的心智负担低得多。
    • 它有极其成熟的中间件和微服务生态。

    对于那些厌倦了 Node.js 运行时错误,又被 Rust 借用检查器拖慢脚步的 Web 开发者来说,Go 依然是当下最务实的选择。

小结

技术选型从来没有绝对的优劣,只有“最适合当下约束条件的工具”。

Dmitry 的故事提醒我们:不要因为手里拿着“安全性”这把锤子(Rust),就无视了“交付速度”这个钉子。在商业软件的世界里,有时候,为了让产品活下去,为了让用户更快用上新功能,“足够好”且“跑得快”的代码,往往比“完美但迟到”的代码更有价值。

Rust 是系统编程的未来,但这并不意味着它是所有 Web 业务的终点。对于独立开发者或初创团队而言,“快”,本身就是一种极其重要的功能。

资料链接:https://yieldcode.blog/post/farewell-rust/


你会为了“安全”放弃“速度”吗?

软件工程永远是权衡的艺术。在你的项目中,你是否也曾为了追求某种“先进特性”,而导致项目进度失控?如果给你 50MB 的内存节省,你愿意多等 10 分钟的编译时间吗?

欢迎在评论区分享你的选型纠结!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

🔲 ☆

算法神话的祛魅:Russ Cox 与浮点数转换的 15 年求索之路

本文永久链接 – https://tonybai.com/2026/02/03/russ-cox-15-year-war-on-floating-point-conversion

大家好,我是Tony Bai。

“浮点数到十进制的转换一直被认为很难。但本质上,它们非常简单直接。” —— Russ Cox (2011)

“我错了。快速的转换器也可以很简单,这篇文章将展示如何做到。” —— Russ Cox (2026)

在计算机科学的深处,潜伏着一条名为“浮点数转换”的恶龙。将一个二进制浮点数(如 float64)转换为人类可读的十进制字符串(如 “0.1″),看似简单,实则是一个困扰了业界半个世纪的难题。

2011 年,Go 语言的核心人物 Russ Cox 写下了一篇博文,试图用一种简单的算法来“驯服”这条龙。然而,在随后的十几年里,学术界和工业界爆发了一场军备竞赛:Dragon4, Grisu3, Ryū, Schubfach, Dragonbox… 每一个新算法都试图在速度上压倒前一个,但也让代码变得越来越复杂,数学证明越来越晦涩。

2026 年初,Russ Cox 带着他的新系列文章强势回归。这一次,他不仅带来了一套比所有已知算法都更快的全新算法,而且证明了:极致的性能不需要极致的复杂性。

这套算法已被确定将在 Go 1.27 (2026年8月) 中发布。今天,我们就来深度解析这项可能改写浮点数处理历史的技术突破。

历史的迷宫与“不可能三角”

要理解 Russ Cox 的成就,我们首先要理解这个问题的难度。一个完美的浮点数打印算法,必须同时满足三个苛刻的条件(“不可能三角”):

  1. 正确性 (Correctness):转换必须是双射的。Parse(Print(f)) == f 必须恒成立。这意味着你不能随意丢弃精度。
  2. 最短性 (Shortest):输出的字符串必须是所有能转回原值的字符串中最短的。例如,0.3 在二进制中无法精确表示,打印时应该是 “0.3″ 而不是 “0.2999999999999999889″。
  3. 速度 (Speed):在大规模数据处理(如 JSON 序列化)中,转换速度直接决定了系统的吞吐量。

历史的演进:
* Dragon4 (1990):实现了正确性和最短性,但依赖大整数(BigInt)运算,慢如蜗牛。
* Grisu3 (2010):Google 的 V8 引擎引入。速度极快,但不保证最短性,约 0.5% 的情况会失败并回退到慢速算法。
* Ryū (2018) & Dragonbox (2020):通过复杂的数学技巧(查表法),终于在不使用 BigInt 的情况下实现了正确且最短。这是性能的巅峰,但代码极其复杂,充满魔术数字。

Russ Cox 的目标,就是打破这个迷宫:能不能既像 Ryū 一样快且正确,又像 2011 年的那个算法一样简单?

核心技术——“未舍入缩放” (Unrounded Scaling)

Russ Cox 的新算法核心,源于一个极其精妙的数学原语:快速未舍入缩放 (Fast Unrounded Scaling)

什么是“未舍入数”?

在传统算法中,我们总是纠结于“何时舍入”。Russ Cox 引入了 “未舍入数” (Unrounded Number) 的概念 ⟨x⟩。它由三部分组成:

  • 整数部分: floor(x)
  • ½ bit: 标记 x – floor(x) >= 0.5
  • sticky bit (粘滞位): 标记 x 是否有非零的小数残余。

这种表示法不仅保留了用于正确舍入(Round half to even)的所有必要信息,而且可以通过极其廉价的位运算(| 和 &)来维护。这就像是在计算过程中保留了一个“高精度的尾巴”,直到最后一步才决定如何截断。

缩放的魔法

浮点数打印本质上是计算 f = m * 2^e 对应的十进制 d * 10^p。核心步骤是将 m * 2^e 乘以 10^p。

Russ Cox 使用查表法(预计算 10^p 的 128 位近似值)来实现这一缩放。但他最惊人的发现是:在 64 位浮点数转换的场景下,我们甚至不需要完整的 128 位乘法!

他证明了:只需计算 64 位 x 64 位的高位结果,并利用低位的“粘滞位”来修正,就能得到完全正确的结果。这意味着,曾经需要几十次乘法或大整数运算的转换过程,现在被缩减为极少数几次 CPU 原生乘法

这一发现被称为 “Omit Needless Multiplications”(省略不必要的乘法),它是新算法性能超越 Ryū 的关键。

从理论到 Go 1.27

基于这个核心原语,Russ Cox 构建了一整套算法家族:

  • FixedWidth: 定点打印(如 %.2f)。
  • Shortest: 最短表示打印(如 %g)。
  • Parse: 字符串转浮点数。

性能碾压

Russ Cox 在 Apple M4 和 AMD Ryzen 9 上进行了详尽的基准测试:

  • 定点打印:新算法 (uscale) 显著快于 glibc 和 double-conversion,甚至快于 Ryū。
  • 最短打印:在纯算法层面,新算法与业界最快的 Dragonbox 持平或更快,但代码逻辑要简单得多。
  • 解析:同样基于该原理的解析算法,性能超越了目前业界标杆 fast_float (Eisel-Lemire 算法)。

更令人兴奋的是,Go 1.27 将直接集成这套算法或算法的一部分。对于 Gopher 来说,这意味着你的 fmt.Sprintf、json.Marshal 和 strconv.ParseFloat 将在下个版本中自动获得显著的性能提升,而无需修改一行代码。

证明的艺术

除了代码,Russ Cox 还做了一件很“极客”的事:他用 Ivy(一种 APL 风格的语言)编写了完整的数学证明。

他没有选择形式化验证工具(如 Coq),而是通过编写可执行的代码来验证算法在每一个可能的 float64 输入下都是正确的。这种“通过计算来证明” (Proof by Computation) 的方法,不仅验证了算法的正确性,也为后来者留下了一份可交互的、活生生的文档。

小结:简单是终极的复杂

从 2011 年的初次尝试,到 2026 年的最终突破,Russ Cox 用 15 年的时间完成了一个完美的闭环。

这一系列文章是一种工程哲学的胜利。它告诉我们:当我们面对复杂的遗留问题时,不要只是盲目地堆砌优化技巧。回到数学的源头,重新审视问题的本质,或许能找到那条既简单又快的“捷径”。

现在的 Go 标准库中,即将拥有一颗比以往任何时候都更强大、更轻盈的“心脏”。

资料链接:https://research.swtch.com/fp-all


你更看重哪一点?

在算法的世界里,正确性、最短表示、运行速度,这“不可能三角”总是让我们反复权衡。在你平时的开发中,有哪些场景曾让你被浮点
能或精度困扰?或者,你对 Russ Cox 这种“死磕 15 年”的工程精神有何感触?

欢迎在评论区分享你的看法!如果这篇文章让你对浮点数实现算法方面有了新的认识,别忘了点个【赞】和【在看】,并转发给你的Go开发朋友们!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

🔲 ☆

20 年 Java 老店的“背叛”:WSO2 为何高呼“Goodbye Java, Hello Go”?

本文永久链接 – https://tonybai.com/2026/01/29/wso2-goodbye-java-hello-go-tech-stack-shift

大家好,我是Tony Bai。

“当我们 2005 年创办 WSO2 时,开发服务端企业级基础设施的正确语言毫无疑问是:Java。然而,当我们走过第 20 个年头并展望未来时,情况已经变了。”

近日,全球知名的开源中间件厂商 WSO2 发布了一篇震动技术圈的博文——《Goodbye Java, Hello Go!》。

这是企业级软件在云原生时代技术风向标的一次重要偏转。作为 Java 时代的既得利益者,WSO2 曾在 API 管理、集成中间件领域构建了庞大的 Java 帝国。为何在今天,他们会做出如此激进的转向?Java 真的不适合未来了吗?Go 到底赢在哪里?

让我们深入剖析这背后的技术逻辑、架构变迁与社区的激烈争议

时代的变迁——从“服务器”到“函数”

WSO2 的转向并非一时冲动,而是基于对过去 15 年基础设施软件形态深刻变化的洞察。其博文中极其精准地总结了这一变迁:

“服务器”概念的消亡

在 2010 年代之前,中间件是以独立“服务器”(Server)的形式交付的。

  • 应用服务器 (App Servers):如 WebLogic, WebSphere, Tomcat。
  • 企业服务总线 (ESB):集成了各种协议适配器的庞然大物。
  • 业务流程服务器 (Process Servers):管理长周期的业务状态。

那是一个“重量级”的时代。你部署一个服务器,然后把你的业务逻辑(WAR 包、JAR 包)扔进去运行。这正是 Java 和 JVM 的黄金时代——JVM 作为一个强大的运行时环境,提供了热加载、动态管理、JIT 优化等一系列高级功能,完美匹配了这种“长时间运行、多应用共享”的服务器模式。

然而,容器化时代终结了这一切。

现在的“服务器”不再是一个独立的实体,而变成了一个库 (Library)

  • 你的业务逻辑不再是“寄生”在服务器里,而是包含了服务器。
  • 整个应用打包成一个 Docker 镜像,作为一个独立的进程运行。
  • 任务完成后,容器销毁,进程结束。

在 WSO2 看来,“独立软件服务器的时代已经结束了”。这对于 Java 来说,是一个底层逻辑的打击。

生命周期:从“月”到“毫秒”

在过去,一个服务器启动慢点没关系,因为它一旦启动,可能会运行数月甚至数年。JVM 的 JIT(即时编译)机制通过预热来换取长期运行的高性能,这是一种非常合理的权衡。

但在 Kubernetes 和 Serverless 主导的今天,服务器变得极度短暂 (Ephemeral)。

  • 容器根据负载自动扩缩容,新实例必须瞬间就绪。
  • Serverless 函数可能只存活几秒钟。

在这种场景下,启动时间就是服务质量 (SLA)。

WSO2 指出:“容器应该在毫秒级内准备好起舞,而不是秒级。” Java 庞大的生态依赖(Spring 初始化、类加载、注解扫描)和 JVM 的启动开销,在云原生环境下显得格格不入。内存膨胀(Memory Bloat)也直接推高了云厂商的账单。

生态位的错位:修补 vs. 原生

面对挑战,Java 社区并非无动于衷。GraalVM Native Image 试图通过 AOT(提前编译)解决启动速度问题;Project Loom 试图通过虚拟线程解决并发资源消耗问题。

但在 WSO2 的架构师们看来,这些努力更像是一种“追赶式的修补”

“这些解决方案感觉就像是在为一个不同时代设计的语言和运行时进行翻新。”

GraalVM 虽然强大,但带来了构建时间的剧增、反射的限制以及调试的复杂性。相比之下,Go 语言在设计之初就原生 (Native) 地考虑了这些问题:编译即二进制,启动即巅峰,并发即协程。这是一种“原生契合”与“后天适配”的本质区别。

WSO2 的架构重构——前端不动,后端大换血

WSO2 并没有盲目地全盘推翻,他们对企业级软件的三层架构(前端、中间层、后端)进行了冷静的评估:

前端 (Frontend):维持现状

  • 现状:Web (JS/TS), iOS (Swift/Flutter), Android (Kotlin/Java)。
  • 未来No Change
  • 理由:前端技术栈受限于终端设备(浏览器、手机 OS),且更新换代极快(“fad-driven”,时尚驱动)。目前没有改变的必要。

中间层 (Middle Tier):Ballerina 的独角戏

  • 现状:Java, Ballerina。
  • 未来Ballerina
  • 核心逻辑:这一层通常被称为 BFF (Backend for Frontend),负责 API 聚合、编排。WSO2 自研的 Ballerina 语言正是为此而生,它将网络原语(Network Primitives)作为语言的一等公民,极其适合做集成工作。

后端 (Backend):Go 与 Python 的双雄会

  • 现状:Java, Go, NodeJS, Python。
  • 未来Go, Python
  • 核心逻辑:这是基础设施逻辑的核心。Python 将继续统治 AI/ML 领域,而 Go 将彻底接管原本属于 Java 的领地,成为构建高性能、高并发基础设施的首选。

为什么是 Go,而不是 Rust?

这是一个每个技术决策者都会面临的灵魂拷问:既然要追求性能和原生编译,为什么不选 Rust?它不是更快、更安全吗?

WSO2 的回答展现了极高的工程务实精神。他们确实评估了 Rust,但最终选择了 Go。理由如下:

抽象层级的匹配

  • Rust 的战场:操作系统内核、浏览器引擎、嵌入式设备。这些场景需要对内存布局、生命周期做极致的微操,且进程几乎永不重启。
  • Go 的战场:中间件、API 网关、编排系统。

WSO2 构建的是中间件基础设施(如 API Gateway, Identity Server)。在这个层级,“我们总是比裸金属 (Bare Metal) 高那么一点点”。Go 提供的自动垃圾回收 (GC) 和高效的并发原语,恰好处于这个“甜点”位置。

避免“过度杀伤” (Overkill)

Rust 的所有权模型 (Ownership) 和借用检查器 (Borrow Checker) 虽然保证了内存安全,但也带来了极高的学习曲线和开发摩擦。对于大多数企业级业务逻辑来说,Rust 提供的控制力是多余的,而为此付出的开发效率代价是昂贵的。

云原生生态的引力

这是一个无法忽视的因素。Go 是云原生的“普通话”。

Kubernetes、Docker、Prometheus、etcd、Terraform…… 几乎所有现代基础设施的基石都是用 Go 构建的。选择 Go,意味着:

  • 库的复用:可以直接调用 K8s 的库,而不是通过 API。
  • 人才的复用:DevOps 工程师和 SRE 通常都懂 Go,可以无缝参与开发。
  • 社区的共鸣:更容易融入 CNCF 生态,获得社区贡献。

实战验证——WSO2 的 Go 之旅

WSO2 并非纸上谈兵,他们在过去十年中已经在多个关键项目中验证了 Go 的能力:

OpenChoreo (CNCF Sandbox Project)

这是 WSO2 最具野心的项目之一,一个面向 Kubernetes 的开发者平台(IDP)。

  • 挑战:需要深度集成 K8s,处理复杂的 GitOps 流程,且自身必须轻量、快速。
  • Go 的价值:作为 K8s 原生语言,Go 让 OpenChoreo 能够像原生组件一样运行在集群中,资源占用极低。

Ballerina 编译器的彻底重写

这是一个惊人的决定。Ballerina 语言最初是基于 Java 实现的(运行在 JVM 上)。现在,WSO2 正在用 Go 完全重写 Ballerina 编译器。

  • 目标:摆脱 JVM 的束缚,实现瞬间启动。
  • 新架构:前端编译器用 Go 编写,直接生成基于 Go 的中间表示 (BIR),这让 CLI 工具的体验得到了质的飞跃。

Thunder:下一代身份认证平台

身份认证(IAM)通常处于请求链路的关键路径上,对延迟极其敏感。Thunder 利用 Go 的高并发处理能力,实现了在高负载下的低延迟认证,且在容器化环境中具备极快的冷启动能力。

社区激辩——理性的探讨与情绪的宣泄

这篇博文在 Reddit 的 r/golang 板块引发了数百条评论的激烈讨论。这不仅仅是语言之争,更是两种工程文化的碰撞。

反方阵营:Java 依然是王者

  1. “这是管理层的愚蠢决定”
    一位愤怒的网友评论道:“计算资源是廉价的,开发人员的时间才是昂贵的。” 他认为,虽然 Go 节省了内存,但在业务逻辑极其复杂的企业级应用中,Java 强大的 IDE 支持、成熟的设计模式和庞大的生态库能显著降低开发成本。强行切换到 Go,可能会导致开发效率的崩塌。

  2. “Java 并没有停滞不前”
    很多 Java 支持者指出,WSO2 对 Java 的印象似乎还停留在 Java 8 时代。现代 Java (21+) 引入了 Virtual Threads (Project Loom),在并发模型上已经可以与 Go 的 Goroutine 媲美;而 GraalVM 的成熟也让 Java 能够编译成原生镜像,启动速度不再是短板。

  3. “生态位的不可替代性”
    在处理遗留系统(如 SOAP, XML, 复杂的事务处理)方面,Java 积累了 20 年的库是 Go 无法比拟的。用 Go 去重写这些复杂的业务逻辑,无异于“重新发明轮子”,且容易引入新的 Bug。

正方阵营:Go 是未来的选择

  1. “运维友好才是真的友好”
    一位 DevOps 工程师反驳道:“在微服务架构下,运维成本是巨大的。” Go 生成的静态二进制文件(Static Binary)是运维的梦想——没有依赖地狱,没有 JVM 版本冲突,所有东西都打包在一个几 MB 的文件里。这种部署的便捷性,是 Java 永远无法达到的。

  2. “简洁是一种防御机制”
    Java 项目容易陷入“过度设计”的泥潭——层层叠叠的抽象、复杂的继承关系、魔法般的注解。Go 的强制简洁性(没有继承、显式错误处理)虽然写起来啰嗦,但读起来轻松。在人员流动频繁的大型团队中,Go 代码的可维护性往往优于 Java。

  3. “云原生的网络效应”
    正如 WSO2 所言,如果你在写 K8s Controller,如果你在写 Sidecar,如果你在写网关,Go 就是默认语言。这不仅仅是语言特性的问题,这是生态引力的问题。逆流而上使用 Java 编写这些组件,会让你失去整个社区的支持。

小结:没有终极语言,只有最适合的工具

WSO2 的声明并非要“杀死” Java。他们明确表示,现有的 Java 产品线将继续得到长期支持。但在新一代的云原生基础设施平台上,他们坚定地选择了 Go。

这一选择揭示了软件行业的一个趋势:通用编程语言的时代似乎正在结束,“领域专用语言”的时代正在到来。

  • 做前端?选 TS/JS。
  • 做 AI 模型训练?选 Python。
  • 做操作系统、浏览器或者嵌入式系统?选 C/Rust/C++。
  • 做企业级业务逻辑(尤其是遗留系统)?Java 依然稳健。
  • 做云原生基础设施、中间件、高并发服务?Go 是当之无愧的王者。

对于 Gopher 而言,WSO2 的转型是一个强有力的信号:你们选对了赛道。Go 不仅是 Google 的语言,它正在成为定义未来十年企业级基础设施的通用语。

资料链接:

  • https://wso2.com/library/blogs/goodbye-java-hello-go
  • https://www.reddit.com/r/golang/comments/1qomr6g/goodbye_java_hello_go/

你的技术栈“保卫战”

WSO2 的转身,是时代的缩影,也是个体的写照。在你的团队中,是否也发生过类似的“去 Java 化”或“拥抱 Go”的讨论?你认为在云原生时代,Java 还能守住它的江山吗?

欢迎在评论区分享你的观点或经历,无论是坚守者还是转型者,我们都想听听你的声音!

如果这篇文章引发了你的思考,别忘了点个【赞】和【在看】,并转发给你的架构师朋友,看看他们怎么选!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

🔲 ☆

别读代码了,看着它流过就行:ClawdBot 作者的 AI 开发工作流

本文永久链接 – https://tonybai.com/2026/01/28/clawdbot-author-ai-development-workflow

大家好,我是Tony Bai。

在过去的一年里,我们见证了 AI 编程工具的井喷。从 Copilot 到 Cursor,从 Windsurf 到 Claude CodeGemini CLI和Codex,每个人都在寻找那个“完美的开发助手”。

最近,爆火的个人AI助理开源项目 ClawdBotPSPDFKit 的创始人 Peter Steinberger 发布了一系列关于他AI 开发工作流的深度博文。他以一种近乎“未来主义”的视角,描述了一个令传统程序员既兴奋又恐惧的景象:

“I stopped reading code and started watching it stream by.”
(我不再读代码了,我只是看着它流过。)

这可真不是一句狂言,而是一种全新的且现实可行的工程范式

当 AI 的可靠性达到临界点,软件交付的速度不再受限于人类的打字速度,而是受限于模型的推理速度(Inference Speed)

今天,我们结合 Peter 的最新实践,为你拆解这套“以人为核心、AI 为手脚”的顶级开发工作流。

质变时刻:学会了“深思熟虑”的模型+工具链的“极简回归”

根据 Peter 的观察,真正的质变发生在 GPT-5.2 这一代模型发布之后。

早期的模型(如 Claude 3.5 Sonnet),虽然聪明但急躁,往往“顾头不顾腚”。而新一代的 Codex 模型学会了“沉默”

在面对一个复杂的重构任务时,模型可能会静默阅读代码长达 10 到 15 分钟,一言不发。这种“Think before Act”的特性,让它能够构建出极其完整的上下文图谱。结果就是:它能一次性(One-shot)搞定跨越数十个文件的大型重构,且几乎零 Bug。

这也宣告了 Plan Mode(规划模式)的消亡。以前我们需要强制 AI 先写计划再写代码,那是为了给旧模型的智商打补丁。现在,开发者可以直接与 AI 对话,像与一位资深架构师协作一样流畅。

此外,在尝试了市面上几乎所有工具(VS Code, Zed, Cursor, Gemini)之后,Peter 最终回归了一套极简的组合:
Ghostty + Claude Code + Minimal Tooling

为什么?因为 “Less is More”

  • 终端的复兴: 他抛弃了不稳定的 VS Code 终端,全面回归 Ghostty。因为在 AI 时代,终端才是最纯粹的交互界面。
  • 屏幕即战场: 他使用 Dell 40寸带鱼屏(3840×1620),同时平铺 4 个 Claude 实例 + Chrome。他不需要切换窗口,他像监控仪表盘一样监控着 4 个并发任务的进展。
  • 摒弃复杂 MCP: 他甚至反主流地删除了大部分 MCP(Model Context Protocol)。因为 AI 有时候会自作聪明地启动 Playwright 去抓取网页,而直接读取代码反而更快、更准、更省 Token。

Peter的这些实践告诉我们:不要被花哨的工具迷了眼。一个稳定、高性能的终端,加上一个聪明的 CLI Agent,就是最强大的武器。

像工厂一样生产:并行工程学

当“写代码”不再占用人类的脑力带宽时,Peter 的工作方式从“工匠”变成了“工厂厂长”

并行处理 (Parallel Processing)

他通常同时推进 3 到 8 个项目

  • 窗口 1:重构后端架构;
  • 窗口 2:优化前端交互;
  • 窗口 3:跑全链路测试。

开发者只需要在这些 Session 之间切换,确认结果,给出下一个指令。

线性推进,绝不回滚 (Never Revert)

“软件开发就像登山,走错路了就绕回来,而不是读档重来。”

他几乎不再使用 git reset。如果 AI 写歪了,直接告诉它“换个思路”,它会在现有基础上自我修正。甚至连 Plan Mode(规划模式) 都变得不再必要,就像前面提到的,新一代模型(GPT-5.2等)学会了“深思熟虑”,能一次性搞定复杂重构。

跨项目“抄作业” (Cross-Referencing)

代码复用从未如此简单。他不再写 Prompt 描述需求,而是直接说:

“Look at ../vibetunnel project, and implement the same logging system here.”

AI 会自动跨目录读取代码,提炼模式,并完美适配到当前项目。

基础设施的重构:CLI First

为了配合这种极速开发,Peter 彻底重构了他的技术栈选择逻辑。

拥抱 CLI (Command Line Interface)

“Whatever you build, start with a CLI.”

无论做什么 App,先做 CLI 版本。因为 Agent 调用 CLI 最方便,测试 CLI 最容易。GUI 只是 CLI 的一层皮。只要内核跑通了,让 AI 套个 React 壳只是分分钟的事。

Oracle(预言机)

当 Agent 遇到知识盲区(比如最新的 API 变动)时,它会自动调用 Oracle ——一个Peter开源实现的、联网的、专门负责爬取文档并总结答案的“元智能体”。知识获取的闭环,彻底自动化了。

文档驱动 (Docs-Driven)

他不再维护复杂的 Prompt 库,而是维护项目的 docs/ 目录。

想规范 AI 的行为?写一个 docs/architecture.md。

想让 AI 学会用 Vercel?在 CLAUDE.md 里加一行:logs: axiom or vercel cli。

文档,就是 AI 的“长期记忆”和“员工手册”。

给开发者的启示:核心竞争力迁移

在 Peter 的工作流中,我们看到了程序员核心竞争力的转移:

  1. 系统设计 (System Design) 是王道:
    当前的 AI 搞不定分布式系统设计,搞不定数据库 Schema 的前瞻性规划。这些“硬骨头”,才是人类的领地。
  2. 选择 AI 友好的生态:
    TypeScript (Web), Go (CLI), Swift (App),这三者是 AI 掌握得最好的。Peter 特别提到了 Go——以前他并不感冒,但后来发现 AI 写 Go 写得极好。为什么?因为 Go 简单的类型系统让 Lint 检查极快,AI 能迅速修正错误。相比之下,那些类型系统过于复杂或编译检查极其严格的语言,可能会增加 AI“一次做对”的难度,拖慢你的推理速度。

  3. 自动化一切 (Automate Everything):
    不要手动注册域名,写个 Skill 让 AI 去做。不要手动发推特,写个 CLI 让 AI 去发。为你自己,也为你的 AI 员工,构建大量的自定义基建

小结:享受创造

有人担心 AI 会让程序员失业,但 Peter 的实录告诉我们:这可能是程序员最好的时代。

在这个时代,限制你产出的不再是你的手速,也不再是你对某个库的熟悉程度,而仅仅是你的想象力

当你可以以推理速度交付软件,当你看着代码像瀑布一样流过屏幕时,编程就不再是枯燥的搬砖,而是一场纯粹的、创造性的游戏

资料链接:

  • https://steipete.me/posts/2025/optimal-ai-development-workflow
  • https://steipete.me/posts/2025/shipping-at-inference-speed

你的“未来工作流”

Peter 的工作流让我们看到了未来的一角。你敢想象自己“不再读代码”的那一天吗?在你的理想中,AI 应该帮你接管哪些“脏活累活”,让你能专注于更高维度的创造?

欢迎在评论区分享你的脑洞或对未来的担忧!让我们一起定义属于自己的 AI 工作流。

如果这篇文章点燃了你对 AI 编程的全新想象,别忘了点个【赞】和【在看】,并转发给你的极客朋友,邀请他们一起见证未来!


还在为“复制粘贴喂AI”而烦恼?

Peter 描述的“看着代码流过”的未来并非遥不可及。我的新专栏 AI原生开发工作流实战 将带你提前掌握这套高效范式:

  • 告别低效: 摒弃“聊天式编程”,重塑以文档和 CLI 为核心的开发范式。
  • 驾驭 Agent: 深入实战 Claude Code,像 Peter 一样构建自动化工作流。
  • 角色进化: 从“手动写代码”进化为“规范驱动开发”的工作流指挥家

扫描下方二维码,开启你的 AI 原生开发之旅。


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

© 2026, bigwhite. 版权所有.

❌