AIProgrammingC++LLM

C++之父开撕AI Coding:资深开发者宁愿退休也不愿伺候AI生成的代码

宇琪··原文链接
收录于 2026/5/24 08:43:42

核心争议

"我已经看到一些高级开发者开始退休了——因为他们不想再处理这种验证工作:你每次改代码、改提示词,生成出来的东西都会变。"——Bjarne Stroustrup

这句话在 X 上被转发、放大,有人浓缩成:"资深开发人员宁愿退休,也不愿处理 AI 生成的代码。"

严格说,这不是 Stroustrup 的原话。但它确实抓住了这段讨论里最让开发者有感触的部分:AI 写代码的争议,已经不只是"它能不能生成代码",而是生成之后谁来验证、谁来理解、谁来承担系统长期运行的后果。

LLM 的局限性

Stroustrup 指出:

"LLM 用旧代码训练,生成的代码在模仿旧代码,得到旧的性能和旧的 bug。"

有网友评论说,Stroustrup 写系统代码的时间,比大多数 AI 工程师活过的时间还长。当他说"验证才是真正的问题"时,这并不是对变化的抵触,而是几十年来一次次看到系统出错、却无法追责问题源头之后留下的经验。

C++ 的起源故事

Stroustrup 回顾了 C++ 的诞生过程:

起点:在贝尔实验室得到一份工作——当时它是世界上最好的应用工程场所,构建了 Unix、C 语言,做了大量背后的理论工作。

需求:需要同时拥有高层抽象能力和底层硬件访问能力——管理内存、进程调度、网络驱动、设备驱动,以及描述"这台计算机上的模块"和"那台计算机上的模块"之间的通信协议。

解决方案:把 Simula 中的类(class)概念拿过来,嵌入到 C 语言中,让它运行得更快,并用于系统编程。同时让类型系统变得更规整,用户定义类型与内置类型的处理方式完全一致。

关键突破:为了支持泛型编程,添加重载(overloading)并推广到用户定义类型和内置类型都适用。

传齐的贝尔实验室

贝尔实验室的哲学:

第一种:管理层精心设计一个项目,投入重金,派二三十个人去解决,然后搞出个大东西。

第二种(更有效):招最牛的人,然后别告诉他们该干什么。一年后,汇报你做了什么。如果喜欢就续约,明年同样条件。

汇告方式:一页纸,字号不能小于 9 磅——如果你连自己做了什么都不能简短说清楚,那大概率没做出什么真正有趣的东西。

这种近乎无政府主义的组织,产出了大量成果:光纤、大量无线技术、摄像头里的电荷耦合器件,都来自那里。手机蜂窝系统则出自另一栋楼。

语言设计哲学

如何设计一门编程语言?

Stroustrup 认为,真正需要问的是:你需要解决什么问题?

很多人只是想造一门语言,比他们现在用的更好一点,专门针对他们正在做的事。但大多数情况下,现有语言已经能做得不错了。如果是通用语言,情况就完全不同了——当你需要和别人协作时,你的专用语言对别人来说并不理想。

C++ 为什么庞大复杂?

  • 历史原因:80 年代无法构建理想的 C++——技术限制、计算机性能不够、当时懂得不够多
  • 标准工程做法:先做到你能做到的最好,然后观察哪些有效、哪些无效,修复问题,再重复

C 与 C++ 的关系

Stroustrup 每周和 Dennis Ritchie(C 语言之父)吃一次午饭,持续了 16 年:

  • Dennis 从没说过 C++ 的坏话,甚至把 C++ 列为 C 的当然继承者
  • C 和 C++ 之间的语言战争完全是荒谬的,根本不该发生
  • Dennis 帮助设计了 C++ 的 const
  • 现代 C 语言里函数定义和声明的语法、核心语义,都来自早期 C++ 的工作

"胖指针"概念:一个指针加上它所指向的元素数量。Dennis 称之为"胖指针",而在 C++ 里称为 span。当有 1 兆字节内存时,这种设计就变得可行了。

给新一代的建议

关于职业发展

  • 去最牛的人聚集的地方,提升自己
  • 如果需要工作,给最好的地方打电话
  • 贝尔实验室面试不靠简历,靠直党和口碑

关于学习

  • 重要的不是学哪些语言,而是获得那些语言中蕴含的思想
  • 你应该学和你当前语言不同的语言

关于坚持

  • 不要因为某工具好用就用它——先确定问题,再找解决方案
  • 如果只想着自己,造出来的就是专用语言
  • 当找到合适问题和解决方案时,领域特定语言很好,但先得识别出问题