开发者生态
morning
Rails 之父 DHH 狂吹 Rust 快 150 倍,被开发者翻代码后群嘲
摘要
“我发自内心地讨厌 Rust。每次看 Rust 代码,我都觉得像有人把酸液倒进了我的眼睛。” 9 月底的 Rails World 2026 上,Ruby on Rails 创始人 David Heinemeier Hansson(DHH)站在台上,把 Rust 称为“过去 40 年里发明的最丑陋的编程语言”。 “如果让人类亲自编写,它就是一种糟糕、糟糕、糟糕透顶的编程语言。要求有血有肉的人类用自己...
Rust
Rails
DHH
Ruby
HEY
37signals
World
Web
2026
Agent
2026-10-10
1 阅读
约10分钟阅读
Tina
字号:
“我发自内心地讨厌 Rust。每次看 Rust 代码,我都觉得像有人把酸液倒进了我的眼睛。” 9 月底的 Rails World 2026 上,Ruby on Rails 创始人 David Heinemeier Hansson(DHH)站在台上,把 Rust 称为“过去 40 年里发明的最丑陋的编程语言”。 “如果让人类亲自编写,它就是一种糟糕、糟糕、糟糕透顶的编程语言。要求有血有肉的人类用自己的眼睛承受这些代码,简直毫无人性。” 然而几句话之后,DHH 话锋一转:“但如果我永远不用看这些代码,只需要享受应用快上 30 倍甚至 100 倍,编译出极小的可执行文件,并在不到一毫秒内启动,那我爱 Rust!” “Agent 喜欢 Rust,这正好形成了完美的分工:我告诉它要做什么,它负责用 Rust 写出来,而我永远不用看那些代码。我很喜欢这种方式。” 两周后,DHH 用一张性能图表进一步证明自己的观点。他让 Agent 将 37signals 的群聊应用 Campfire 分别重写为 Elixir、Go 和 Rust 版本,再与原来的 Ruby on Rails 版本对比。结果中,Rust 几乎横扫全场。仅在加载聊天室页面这项测试中,Rust 就达到每秒 36260 个请求,大约是 Rails 的 150 倍、Elixir 的 50 倍、Go 的 9.4 倍。 DHH 在推文中写道:“没错,Ruby 是最慢的。过去我并不在乎,因为它换来了巨大的生产力和开发乐趣。但如果你已经不再阅读代码了呢?” 这项测试与 37signals 最近的一次重大技术转向有关:DHH 已经开始让Agent 用 Rust 重写自家产品。 Rails 之父,开始转向Rust Basecamp 背后的 37signals 一直是一个重视编程技艺、很少为了赶进度走捷径的团队。DHH 也曾以亲手打磨代码为荣。但在 Rails World 2026 上,他说自己大约在四个月前停止了手工编写代码。 “手工编写代码已经不再是一种具有经济生产力的活动。到今年年底,这种变化将覆盖几乎所有领域、几乎所有程序员和几乎所有公司。” 作为 Ruby on Rails 的创造者和 37signals 的 CTO,他过去二十多年一直是“程序员生产力”和“代码美感”最坚定的拥护者之一。 长期以来,Ruby on Rails 一直被视为“单人开发者框架”:它用约定、抽象和完整的全栈能力,尽可能放大一名程序员的产出,让一个人也能开发和维护完整的 Web 应用。Ruby 的性能并不突出,但它始终拥有一批忠实的拥趸,DHH 就是其中之一。 以前他最喜欢的事情就是使用他最得意的应用Basecamp和Hey 的代码示例来强调Ruby的优美,以及讽刺其他语言的丑陋,这个其他语言包括Rust。 但这次DHH的变化尤其让人感到震惊。这位过去长期用 Basecamp 和 HEY 证明 Ruby 与 Rails 优越性的框架创始人,在这场大会上,站在近千名 Rails 开发者面前宣布:HEY 将采用原生客户端,后端也将转向 Rust。 下一代邮件服务 HEY 将不再以 Web 应用为中心,而会为主要操作系统分别开发原生客户端。过去,一支小团队几乎不可能同时维护六款原生应用,只能依靠 Web、React Native 或 Hotwire Native 等方案控制成本。如今,DHH 认为这件事已经从团队规模和开发周期的问题,变成了需要消耗多少 Token 的问题。 前端转向原生应用后,HEY 的后端也不再需要承担 HTML 渲染等职责。37signals 准备将它改造成一个更加纯粹的邮件服务器,并通过 Agentic Coding 使用 Rust 重写。 这个决定让 Rails World 的现场一度陷入沉默。 DHH 并没有宣告 Rails 死亡,但他自己的选择已经表明,开发体验不再是唯一需要优先考虑的因素。运行性能、资源占用、编译结果大小等过去可能为生产力让路的指标,正在重新获得更高权重。 DHH 还给出了新版 HEY 后端的初步数据:CPU 使用量降低了 99%,内存使用量降低了 95%,服务器数量可以缩减到十台,而且保留这些服务器主要是为了冗余。按照团队的粗略估算,一台 Raspberry Pi 甚至可能承担 HEY 后端的全部峰值负载。 而他最新发布的 Campfire 的多语言测试,则直接拿出了一张更加直观的成绩单:Rust 比原来的 Ruby on Rails 版本快约 150 倍。在 DHH 的测试中,Rust 实现轻松胜过其他所有实现,在所有五种工作负载下都表现出色,有时甚至优势明显。 100万次浏览后,评论区开始翻代码 如今,用 Rust 重写应用程序似乎是一项流行举措,微软的Copilot 运行时、pnpm JavaScript 安装程序和Bun JavaScript 工具链都采用了Rust 进行重写。 DHH的推文浏览量接近 100 万,但开发者没有顺着 DHH 的思路,讨论是否应该在 Agent 时代重新选择Rust编程语言。很多人的第一反应是:这组结果明显不对,几个版本很可能没有站在同一条起跑线上。 Google 工程师 Jaana Dogan 的回应传播最广:“真正让我担心编程未来的是,你看到这样的结果后,居然没有立刻意识到,测试结果或者实际测量的东西肯定有问题。” 虽然Dogan没详细解释这项测试具体存在哪些缺陷,但一些其他语言倡导者给出了详细信息。 一名 Elixir 开发者直接把这份实现称为“愚蠢至极”。他指出,Agent 把所有 SQL 查询都交给同一个 GenServer,并通过同步的 GenServer.call 等待结果,相当于让原本可以并发执行的数据库查询排队逐个完成,主动废掉了 Elixir/BEAM 的并发优势。 另外几个人直接重写了 Elixir 代码,使其性能达到与 Rust 相当的水平。重写之后,Elixir 版本在部分任务上的性能甚至超过了 Rust,尽管第三方后来又对 Rust 版本做了进一步优化。 还有观察者指出,与 Go 和 Elixir 实现相比,Rust 重写版在编码完成后得到了多得多的关注。Go 和 Elixir 版本似乎在完成最初的 Agent 请求后,就被匆忙收尾了。 “DHH 比较的,其实是一个经历了 300 次提交的 Rust 版本,以及只有两三次提交的 Elixir 和 Go 版本。” “300 次对两三次”还只是当时的概括。Jared Smith 随后检查了三个公开仓库的完整记录。截至 10 月 6 日,Rust 版本的 main 分支已经有 398 次提交,Elixir 和 Go 则各自只有 3 次。 Rust 的 398 次提交中,380 次来自 DHH,10 次来自 Abdelkader Boudih,8 次来自 Daniel Collin。其中 397 次集中发生在 9 月 26 日至 10 月 1 日之间。Elixir 仓库只有一次移植提交和两次文档提交;Go 仓库则包含一次移植、一次性能优化和一次 README 更新。 Rust 仓库还有 44 个 PR,其中 39 个已经合并
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱