Zig Creator Calls Spade a Spade, Anthropic Blows Smoke
1536 points • 4 days agoArticle Link

Anthropic 目前在推动一种说法:软件工程这门职业即将走到尽头。与其说这是基于技术事实,不如说是为其 1320 亿美元投资和万亿美元估值寻找合理性。公司通过把 coding agents 定位为优于人类开发者的存在,利用恐惧和以自动化取代人工的诉求来影响高层商业决策。 Bun runtime 最近从 Zig 迁移到 Rust,成为这一趋势的一个醒目案例。尽管 Anthropic 和 Bun 将这次重写包装成由 AI 驱动的必然演进,但像 Zig 的创造者 Andrew Kelley 这样的批评者认为,这在很大程度上是对糟糕工程实践、监督缺失以及对 AI agents 过度依赖的回应,而这些 agents 最终并未能发现关键的内存错误。

围绕 Bun 重写的争论反映了业界关于 AI 在软件开发中应扮演何种角色的深刻分歧。 Bun 的管理层认为,转向 Rust 是解决 Zig 中手动内存管理复杂性的必要之举,但他们几乎没有证据表明曾认真探讨过替代方案,比如采纳像 TigerBeetle 数据库中成功使用的严格工程风格指南 TigerStyle 。 Bun 将这种架构纪律视为不切实际,似乎更愿意强调其 AI 模型的速度和能力。外界看来,这更像是为推销新模型而作出的战略选择,而非对软件质量的审慎考量。

在技术讨论之下,是对开发者文化可持续性的担忧。 Bun 的公开信息往往流露出一种"拼命干"的心态,表现为超长工时和对传统管理做法的蔑视。在这样的环境里,人们把大量代码交给 AI 处理却缺乏足够的人为监督,容易产生可维护性问题和技术债务,而这些正是 agents 目前难以解决的。当开发者被鼓励放弃基础技能,转而依赖 agentic workflows 时,产出的软件往往会变成难以审计和调试的黑匣子。

归根结底,把 AI 营销为软件开发的万灵药会造成危险的循环。公司最终在 tokens 和基于 agent 的工作流上投入巨资,去修补那些由他们所谓能取代人工专业知识的工具引发的问题。越来越多的证据表明,AI 只是一个工具,无法替代良好的判断力、形式化方法或稳健的架构设计。与其在"进步"的旗号下以低质量构建产品,不如回归对实际工程成果的关注,构建既可靠又可维护的软件。

782 comments • Comments Link

- 软件开发的价值在于经受实战检验、成熟稳定的代码,这类代码汇集了大量生产环境的反馈,而不是初版实现或匆忙重写。

- 用经实战验证、功能完备的 Zig 代码库去换成转译而来、被视为"不安全"的 Rust 版本,会带来重大风险——这是为了追随一种尚未被现实检验的新范式而放弃已被证明的稳定性。

- AI 驱动项目的快速兴起常被质疑,因缺乏深入的人类参与或"汗水与努力",这些项目可能缺乏长期的韧性与归属感。

- 有人认为 Zig 的利基正在萎缩,越来越多用户转向 Rust 以获得业界通行的内存安全保障和成熟工具链,从而引发了对 Zig 长期适用性的内部担忧。

- Zig 与 Bun 项目间的冲突,反映了业界在企业 AI 营销与开源工艺之间更广泛的紧张关系,同时伴随关于"心理战"和为推销 AI 功能而进行的表演性重写的指控。

- 管理层推动的重写常被当作 AI 公司的营销工具,用特定迁移作为案例来证明其模型的有效性,而不顾工程上这种做法是否具有普遍合理性。

- Zig 社区领导层公开回应时的直率与高度个人化,造成了分歧:有人视之为对工程标准的坦率捍卫,另有人则认为不够专业、损害了语言的声誉。

- 合理的批评是,AI 辅助的代码生成确实加快了开发速度,但往往未能带来同等的生产可靠性,导致感知上的生产力提升与实际产出之间出现脱节。

- Rust 的 borrow checker 提供特定的安全保障,虽然它并不能消除逻辑错误或阻止写出糟糕的代码——这表明 Rust 依然是一把需要自律使用的工具,而非万能灵药。

- 正在进行的辩论凸显了行业格局的转变:AI 公司积极自我定位为软件创作的基础设施,这迫使开发者在快速、 AI 驱动开发的收益与由此产生的供应商依赖、丧失本地化与主权控制之间权衡。

这场讨论凸显了软件工程界在坚持传统、工艺导向开发的人与拥抱 AI 驱动快速迭代的人之间愈发深刻的分歧。有人认为 AI 大幅降低了实现雄心勃勃软件项目的时间和成本,另一些人则认为这种"速度"更多是表演性和营销导向的,并未从根本上改变生产体系。 Zig 与 Bun 项目创建者之间的争论正是这种紧张的缩影,把对语言寿命与工程完整性的担忧,与前沿 AI 公司施加的市场力量和叙事控制对立起来。总体而言,尽管 AI 工具正在重塑编码方式,但构建可靠、可维护软件的核心挑战在很大程度上仍依赖于人类判断、实战测试和长期的架构稳定性。