软件工程领域的奠基人之一,现代软件开发的活化石。他的工作直接塑造了我们今天构建软件的方式。
在谈论时代之前,Grady 清晰地界定了软件工程的定义。它不仅仅是写代码,而是一种在多重约束下寻找最优解的工程学科。
谁发明了"软件工程"?
在阿波罗计划期间,Margaret Hamilton 为了将自己的工作与硬件工程师区分开来,首次创造了"Software Engineering"一词。
随后,NATO 会议正式采纳了这一术语,标志着学科的独立。
软件工程师究竟在做什么?
就像土木工程师平衡重力与材料一样,软件工程师必须平衡:
这是一个软件试图从硬件中剥离出来的时代,也是被战争和数学驱动的时代。
这一时期的核心思维是过程与函数(如 FORTRAN - 公式翻译)。
数据被视为分离的、被动的存在,程序是一系列操作数据的指令流。
为了防御苏联轰炸机,美国建立了 SAGE 系统。它不仅消耗了当时全美 20-30% 的程序员资源,还催生了实时处理、分布式计算和最早的图形交互界面(CRT光笔)。
到了70年代末,美军发现其系统使用了超过 14,000 种不同的编程语言。这种混乱促使了标准化的尝试(如 Ada 语言项目),试图统一混乱的局面。
随着微型化技术带来个人电脑(PC),复杂度迫使我们寻找新的管理方式。这是一次从"过程"到"对象"的哲学飞跃。
受到柏拉图哲学的启发(将世界视为过程还是事物?),软件工程转向了对象。
将数据和行为封装在一起(Class/Object),极大地提升了对复杂系统的管理能力。C++ (Stroustrup) 和 Java 是这一时代的旗手。
早在第一时代末期(IBM Share 用户组),开源精神就已存在。到了第二时代,随着库(Libraries)和框架的复用变得普遍,开发者不再从零开始写每一行代码,而是基于他人的工作构建。
"功能式编程(Functional Programming)让做困难的事情变得容易,但也让做简单的事情变得几乎不可能。这就是为什么它有它的位置,但没有完全统治世界。"
Grady Booch 认为我们正处于第三个时代。这是一个软件"消失"在背景中,却无处不在的时代。
现在的开发者不需要手写消息队列,而是调用云服务。抽象层级再次提升。
AI Agent(如 Cursor)是这一趋势的延续:它们帮助我们更快地操作这些高层组件。
面对庞大的 AI 和分布式系统,Grady 建议回归系统理论(Simon & Newell)。
理解反馈循环、层级架构、多智能体交互(Society of Mind),比单纯学习一门语言的语法更重要。
针对 Anthropic CEO Dario Amodei 提出的"软件工程将在 12 个月内被 AI 自动化"的观点,Grady 进行了犀利的反驳。
1. 混淆概念: Dario 混淆了"Coding"(编码)与"Software Engineering"(软件工程)。AI 擅长模式匹配和生成代码(Coding),但这只是工程的一小部分。
2. 缺乏工程思维: 软件工程的核心是决策——在约束条件下平衡技术、经济和伦理。目前的 LLM 没有任何能力处理这些复杂的权衡。
3. 历史押韵:
• 当编译器出现时,汇编程序员担心失业。
• 当高级语言出现时,底层程序员担心失业。
• 结论: 工具的进化(AI)只会移除低级的重复劳动,让我们能去解决更难、更宏大的问题。
AI 使得我们可以用自然语言描述意图(Pattern),然后由机器生成实现。这意味着:
好消息: 你的想象力不再受限于你的打字速度或对某个库的生疏。
坏消息: 如果你只会"默写代码"而没有任何系统设计能力,你将被淘汰。
工具在变,但基础不变。深耕:
"不要害怕深渊。面对巨大的变革(AI),你可以看着深渊说'我要掉下去了',也可以说'这正是我飞翔的机会'。现在正是飞翔的时候。"