高飞 26-02-12 11:26
微博认证:至顶科技创始人 AI博主

#模型时代# Grady Booch:软件工程经历了3个黄金时代,为什么AI不会终结这个行业,反而会开启新纪元

Anthropic CEO Dario Amodei今年1月在达沃斯延续了他AI取代开发的叙事,说:"软件工程将在12个月内被自动化。"

你很难说他在吹牛,毕竟模型迭代很快,然后产业也真焦虑。AI coding工具的进化速度肉眼可见:Claude Code已经贡献了GitHub上4%的公开代码提交,Apple刚在Xcode 26.3里直接内置了Claude Agent和OpenAI Codex的自主编程能力,开源项目OpenClaw几周内收获18万star,GPT-5.3-Codex号称"参与构建了自身"。

不过Grady Booch说这个言论是:bullshit。已经被两拨人批评过Dario了。一波是此前的黄仁勋说Anthropic把大模型说的好像只有少数人能做;再就是现在的软件工程的大佬。

Booch是UML(统一建模语言,软件设计的通用图形语言)的联合创始人,IBM前Fellow,从1970年代起亲历了软件工程的每一次变化。他在The Pragmatic Engineer播客上给出判断是:我们反而正处于软件工程的第三个黄金时代,AI带来的变化历史上已经发生过,而且不止一次。

Booch从1940年代讲到今天,把三个黄金时代的来龙去脉、每次抽象跃迁引发的恐慌与机遇,以及他对Dario的正面回击,讲了个透彻。

一、第一个黄金时代:从插线板到算法抽象(1940s-1970s末)

"软件工程"这个词本身就很年轻。Margaret Hamilton是第一个使用这个称呼的人,当时她在阿波罗计划中工作,周围全是硬件工程师和结构工程师,她需要一个词把自己的工作区分出来。

1、最初根本没有"软件"这回事

早期计算机编程就是往ENIAC(世界上第一台通用电子计算机)的插线板上插线。硬件和软件完全不可分。"数字"(digital)一词直到1940年代末才出现,"软件"要到1950年代才有人提出。Booch感慨说,软件作为一个独立实体被认知,距今不过七八十年,"用Carl Sagan的宇宙日历(把138亿年宇宙史压缩成一年)来算,我们连最后几纳秒都算不上。"

2、算法抽象(Algorithmic Abstraction)是第一代的核心范式

这个时代的主要问题是复杂度,但以今天的标准看"简单得可笑"。软件紧耦合于机器,所以最主要的抽象方式是算法抽象——因为机器就是做数学运算的。Fortran的全称Formula Translation,正是这个时代的缩影。

代表人物包括Ed Yourdon、Tom DeMarco、Larry Constantine,实体关系模型(ER模型)也在这个时期诞生。流程图被发明出来辅助思考。劳动分工也出现了:分析师、程序员、打卡员、操作员各司其职。

3、当时国防才是最大的推动者

这一点很容易被忽略。民用领域在自动化商业流程——会计、工资单,那些"唾手可得的果实"。但真正推动创新的是国防领域。SAGE系统(半自动地面防空系统)据说消耗了当时美国20%-30%的软件开发者。那时候全美可能也就几万名程序员。

Booch用了一个很有力量的表述:"计算史上有两大驱动力,一是商业,二是战争。因此我认为,现代计算很大程度上是织在悲伤之织机上的。"这里的"织机"指Jacquard提花织机,公认的可编程机器鼻祖。互联网、集成电路微型化,这些我们习以为常的东西,最初都来自冷战时期的政府资金。

4、边缘地带的创新比主流更重要

主流是商业和数值计算,但分布式系统、实时处理、图形用户界面这些改变世界的东西,全部诞生在"边缘"。Whirlwind计算机催生了第一个CRT(阴极射线管)图形界面,这是人类第一次在屏幕上看到图形输出。Douglas Engelbart在1968年的"所有演示之母"中展示了鼠标、超链接、视频会议等概念的原型。David Parnas提出的信息隐藏(把模块内部实现细节封装起来)、关注点分离,这些概念在当时还是学术前沿。

教训是什么?每个时代的核心创新往往不在聚光灯下,而在边缘地带。

二、软件危机与第二个黄金时代:面向对象的崛起(1970s末-2000s初)

到1970年代末,第一个黄金时代的裂缝开始显现。

1、软件危机的四重困境

1968年的NATO软件工程会议第一次公开敲响了警钟。问题是什么?四个字概括不了,得四句话:软件明明很有用,但行业造不出足够多的高质量软件;开发太慢、太贵、质量不行,而需求还在疯狂增长。Booch特意指出,"这和我们今天担心的危机性质完全不同——今天我们担心的是监控、崩溃、安全。每个黄金时代的问题都不一样。"

2、编程语言的巴别塔

美国政府发现国防系统中至少使用了14000种不同的编程语言。在那个软件体量比今天小得多的年代,这个数字令人咋舌。这直接催生了Ada项目——试图用一种语言统治所有国防软件。

与此同时,抽象数据类型、信息隐藏、文学编程(literate programming,Knuth提出的将代码和文档交织在一起的写法)等概念正在学术界酝酿。Bjarne Stroustrup在Bell实验室搞C++,把Simula(第一个面向对象语言)的思想嫁接到C上。

3、面向对象(Object-Oriented)成为新的核心抽象

这是第二个黄金时代的标志性转变。简单说,第一代程序员看世界的方式是"过程":先做A,再做B,然后C,像写菜谱一样一步步告诉电脑该干什么。但当软件越来越大,这种线性思维就不够用了。面向对象换了一个视角:别管步骤了,先想想你的系统里有哪些"东西"——用户、订单、账户——每个东西有什么属性、能做什么动作,让它们之间互动。

Booch说这两种看世界的方式根本不是程序员发明的,柏拉图的对话录里两千多年前就吵过了:一派认为应该从事物的流动和变化来理解世界,另一派认为应该从事物本身来理解。他顺带补了一刀:"对,就是那个柏拉图,他的著作现在在某些美国大学被禁了的那位。"

面向对象的威力在于:不再把数据和算法分开看,而是将它们组合到一起。Mac Write和Mac Paint的源码就是用Object Pascal写的,"我见过的最漂亮的软件之一",其中的设计决策至今仍延续在Photoshop中。

当然也犯了错。"我们过度强调了继承(子类自动获得父类特性的机制)的重要性,以为它会是伟大的东西。那有点错了。"

4、开源和平台经济的种子都在这个时代种下

IBM Share是最早的开源实践——用户自发分享软件,IBM只是支持但不主导。到第二个黄金时代,同样的逻辑在更高的抽象层上重演:大家共享面向对象的库和组件。

然后是平台的崛起。从面向服务架构(SOA,把软件拆成可独立调用的服务)到SOAP协议(让不同系统通过网络互相通信),从HTML到HTTP,层层抽象堆叠,最终形成了今天AWS、Salesforce这样的平台型企业。Booch对平台的定义很直白:"经济上有趣的城堡,周围围着护城河,平台公司让你花钱过桥——费用还不低。"

三、第三个黄金时代:我们已身处其中(2000s至今)

很多人以为第三个黄金时代是AI带来的。Booch说不对,它从千禧年前后就开始了。

1、抽象层级再次跃升:从组件到系统

第三个黄金时代的标志是抽象层级从单个程序/组件,跃升到完整的库、包、平台。"我需要做消息传递?不用自己写,用外部库。我需要管理海量数据?用Hadoop之类的东西。"这是又一次抽象的飞跃。

AI编程工具在这个背景下出现,本质上是对这种趋势的加速——"我们有太多库,没有足够多的人了解它们,所以我们需要辅助工具来加速使用。"

2、这个时代的核心问题和前两代完全不同

前两代解决的是"怎么写软件"和"怎么写更复杂的软件"。第三个黄金时代面对的问题是:
• 软件太多了,怎么管理?
• 安全和供应链攻击(通过污染第三方依赖库来入侵下游系统)——怎么防止有人往依赖里塞恶意代码?
• "大到不能倒"的公司——微软或Google倒闭会怎样?
• 伦理问题——我能追踪你的每一步行踪,但我应该这样做吗?

3、AI的三次浪潮与软件工程的三个时代平行发展

Booch顺带梳理了AI的历史:1940-50年代的符号主义(用逻辑规则模拟智能,第一波),1980年代的专家系统和机器学习(用if-then规则做推理,第二波),以及现在的大语言模型(第三波)。每次AI浪潮都经历了"这次不一样"的兴奋和随后的"AI寒冬"。

他讲了一个细节:第一代AI中,建造一个人工神经元需要5个真空管。当时英国出了一份报告说"我们花了很多钱但没什么用",于是神经网络被判了死刑——主要是因为算力根本不够。

四、为什么Dario Amodei的预言是错的

这是整期播客火药味比较浓的部分。Booch对Dario的"12个月内软件工程将被自动化"的回应,他先正经地说"让我用一个科学术语来评价Dario的说法",然后来了一句:utter bullshit(纯属扯淡)。

1、Dario根本不理解软件工程是什么

"回到我开头说的:软件工程师是平衡各种力量的工程师。代码只是我们的工具之一,但不是唯一驱动力。他和他同行谈论的那些东西,没有任何一个涉及软件工程师必须处理的决策问题。"

这些决策问题包括什么?技术约束(物理定律、算法极限)、人的约束(团队组织、技能获取)、经济约束(投入产出比)、法律约束(数字版权)、伦理约束(该不该做)。这些AI一个都碰不到。

2、"Dario的身份决定了他的立场"

"他在领导一家需要赚钱的公司,需要对利益相关者讲话。所以会说出一些出格的话。我觉得他是在达沃斯说的这些?"Booch的意思很清楚:CEO的预言和工程现实之间,差着一个华尔街。

3、AI编程工具本质上是在自动化"见过一万遍的模式"

Cursor、Copilot这些工具的训练数据来自我们反复做过的那些事情。如果你要在CRUD(增删改查,最常见的数据库操作模式)上面搭一个UI,它们干得很好。但Booch引用莎士比亚说:"计算世界比你哲学所能梦见的要大得多,Dario。"("There are more things in computing, Dario, than are dreamt of in your philosophy.")

网页为中心的系统只是软件世界的一部分。嵌入式系统、实时系统、分布式系统、安全关键系统……太多领域还根本没被这波AI碰到。

4、历史上每次抽象跃迁都引发过同样的恐慌——而且每次都是错的

编译器出现时,汇编程序员说"你永远不可能比我们手写的更高效"——被证明是错的。高级语言出现时,同样的恐惧再次蔓延。"当时没有那么大的危机感,因为那时候只有几千个程序员。现在我们有几百万人在问同一个问题:这对我意味着什么?"

五、该学什么、该做什么

1、回归系统思维

Booch反复推荐的是系统理论。Herbert Simon和Allen Newell的《人工科学》(The Sciences of the Artificial),Santa Fe Institute关于复杂性和系统的研究,Marvin Minsky的《心智社会》(Society of Mind,核心观点是智能来自大量简单Agent的协作而非单一中枢)——"我们现在搞Agent编程,这些人几十年前就研究过多智能体问题了。"

还有Rodney Brooks的subsumption架构(包容体系结构),来自对蟑螂等生物系统的研究。"蟑螂没有中央大脑,但能做出很厉害的事情。"

2、从写程序转向思考系统

"技能转型的方向是:从处理程序和应用,转向处理系统本身。如果你有管理大规模复杂性的技能,如果你作为软件工程师知道如何应对这些既是人文的也是技术的多重力量,你的工作不会消失。需求只会更大,因为这些人文技能太稀缺、太微妙了。"

3、把约束的消失看作机会而非威胁

"以前限制我们的一些摩擦力、一些成本正在消失。这意味着我现在可以把注意力放在想象力上,去做以前根本不可能做的事情。以前我雇不起团队、负担不起开发成本,现在这些障碍正在移除。"

Booch用了一个比喻:个人电脑时代,艺术家、游戏玩家、嬉皮士都拥抱了这个新工具,产生了无数创新。今天的AI编程工具正在重演同样的故事——更多非专业人士会写软件,这不是灾难,这是"最了不起的事情"。

总结

Booch的核心信息可以浓缩成一句话:你的工具在变,但你的问题没变。

Q1: AI编程工具到底在做什么?
本质上是又一次抽象层级的跃迁。就像编译器让你不用写汇编,高级语言让你不用管内存,AI编程工具让你用自然语言描述需求就能生成代码。它们擅长自动化"已经被做过上百次的模式",但对没有先例的新问题、对需要权衡多重约束的系统级决策,目前无能为力。

Q2: 什么样的人最危险,什么样的人最安全?
最危险的是只会写代码但不理解系统的人——这些工作正在被自动化。最安全的是能够管理大规模复杂性、在技术/经济/伦理等多重力量之间做出权衡的系统思维者。Booch建议具体学习方向:系统理论(Simon/Newell)、复杂性科学(Santa Fe Institute)、多智能体架构(Minsky的Society of Mind、Brooks的包容架构)。

Q3: 历史给我们什么启示?
软件工程史上每一次重大工具变革都引发过"程序员要被取代"的恐慌,从编译器到高级语言到面向对象,每一次恐慌都被证明是多余的。淘汰的是旧技能,不是工程师这个角色。区别在于以前受影响的是几千人,现在是几百万人——恐慌的音量更大了,但底层逻辑没变。

发布于 日本