👨‍💻
本期嘉宾

Grady Booch

软件工程领域的奠基人之一,现代软件开发的活化石。他的工作直接塑造了我们今天构建软件的方式。

UML 联合创始人 IBM Fellow IEEE Fellow ACM Fellow 面向对象设计先驱 Rational Software 首席科学家

软件工程的起源与本质

在谈论时代之前,Grady 清晰地界定了软件工程的定义。它不仅仅是写代码,而是一种在多重约束下寻找最优解的工程学科。

👩‍🚀

名词的诞生

谁发明了"软件工程"?

点击翻转答案

Margaret Hamilton (阿波罗计划)

在阿波罗计划期间,Margaret Hamilton 为了将自己的工作与硬件工程师区分开来,首次创造了"Software Engineering"一词。

随后,NATO 会议正式采纳了这一术语,标志着学科的独立。

⚖️

工程的本质

软件工程师究竟在做什么?

点击翻转答案

平衡多重力量 (Balancing Forces)

就像土木工程师平衡重力与材料一样,软件工程师必须平衡:

  • 技术力: 算法、延迟、光速限制。
  • 经济力: 成本、团队规模、上市时间。
  • 伦理与人性: 是否应该构建?对他人的影响?

第一黄金时代 (1940s - 1970s)

这是一个软件试图从硬件中剥离出来的时代,也是被战争和数学驱动的时代。

抽象范式:算法

Algorithmic Abstraction
点击查看详情

关注"过程"而非"事物"

这一时期的核心思维是过程与函数(如 FORTRAN - 公式翻译)。

数据被视为分离的、被动的存在,程序是一系列操作数据的指令流。

超级工程:SAGE

半自动地面防空环境
点击查看详情

计算史上的奇迹

为了防御苏联轰炸机,美国建立了 SAGE 系统。它不仅消耗了当时全美 20-30% 的程序员资源,还催生了实时处理、分布式计算和最早的图形交互界面(CRT光笔)。

巴别塔问题

The Problem of Babel
点击查看详情

14,000 种语言

到了70年代末,美军发现其系统使用了超过 14,000 种不同的编程语言。这种混乱促使了标准化的尝试(如 Ada 语言项目),试图统一混乱的局面。

第二黄金时代 (1980s - 2000s)

随着微型化技术带来个人电脑(PC),复杂度迫使我们寻找新的管理方式。这是一次从"过程"到"对象"的哲学飞跃。

抽象范式:面向对象

Object-Oriented (OO)
点击查看详情

从 Process 到 Atom

受到柏拉图哲学的启发(将世界视为过程还是事物?),软件工程转向了对象

将数据和行为封装在一起(Class/Object),极大地提升了对复杂系统的管理能力。C++ (Stroustrup) 和 Java 是这一时代的旗手。

开源的萌芽

IBM Share & Community
点击查看详情

代码共享的传统

早在第一时代末期(IBM Share 用户组),开源精神就已存在。到了第二时代,随着库(Libraries)和框架的复用变得普遍,开发者不再从零开始写每一行代码,而是基于他人的工作构建。

"功能式编程(Functional Programming)让做困难的事情变得容易,但也让做简单的事情变得几乎不可能。这就是为什么它有它的位置,但没有完全统治世界。"

—— John Backus (FORTRAN 之父) 对 Grady 的解释

第三黄金时代 (2000s - 至今)

Grady Booch 认为我们正处于第三个时代。这是一个软件"消失"在背景中,却无处不在的时代。

抽象范式:系统与代理

Systems & Agents
点击查看详情

组装而非建造

现在的开发者不需要手写消息队列,而是调用云服务。抽象层级再次提升。

AI Agent(如 Cursor)是这一趋势的延续:它们帮助我们更快地操作这些高层组件。

推荐学习:系统论

Systems Theory
点击查看详情

回归基础

面对庞大的 AI 和分布式系统,Grady 建议回归系统理论(Simon & Newell)。

理解反馈循环、层级架构、多智能体交互(Society of Mind),比单纯学习一门语言的语法更重要。

AI 威胁论:软件工程会消亡吗?

针对 Anthropic CEO Dario Amodei 提出的"软件工程将在 12 个月内被 AI 自动化"的观点,Grady 进行了犀利的反驳。

GRADY 的直接回应:"完全是胡说八道 (Utter BS)"

1. 混淆概念: Dario 混淆了"Coding"(编码)与"Software Engineering"(软件工程)。AI 擅长模式匹配和生成代码(Coding),但这只是工程的一小部分。

2. 缺乏工程思维: 软件工程的核心是决策——在约束条件下平衡技术、经济和伦理。目前的 LLM 没有任何能力处理这些复杂的权衡。

3. 历史押韵:
• 当编译器出现时,汇编程序员担心失业。
• 当高级语言出现时,底层程序员担心失业。
结论: 工具的进化(AI)只会移除低级的重复劳动,让我们能去解决更难、更宏大的问题。

给开发者的生存建议

英语是新的编程语言

English as Code
点击查看详情

降低实现摩擦

AI 使得我们可以用自然语言描述意图(Pattern),然后由机器生成实现。这意味着:

好消息: 你的想象力不再受限于你的打字速度或对某个库的生疏。

坏消息: 如果你只会"默写代码"而没有任何系统设计能力,你将被淘汰。

深耕基础

Fundamentals
点击查看详情

不变的真理

工具在变,但基础不变。深耕:

  • 系统架构:各组件如何交互?
  • 复杂性管理:如何解耦?
  • 伦理判断:代码对人类的影响。

"不要害怕深渊。面对巨大的变革(AI),你可以看着深渊说'我要掉下去了',也可以说'这正是我飞翔的机会'。现在正是飞翔的时候。"

—— Grady Booch

原文

源链接