🧩 第一章 面向对象:让软件开发变轻松的技术
📄 一句话概括

1967 年的 Simula 到 2004 年的 Rails,37 年,三次跃迁——类、模式与框架、敏捷;每一次都解决上一层管不了的问题。

📝 本节和前面几节的关系

1.1 说它是综合技术,这一节讲这个【综合】是怎么一年一年长出来的。

一、第一次跃迁:类被发明

1967 年 Simula 67 第一次把【类】和【对象】放进语言,动机很实在:模拟系统里的实体。 1972 年 Smalltalk 走得更远——连数字都是对象,一切交互都是发消息。 这一阶段的成果就一件事:代码终于有了【组织单位】,不再是一堆函数。

二、第二次跃迁:设计被总结

有了类,新的问题冒出来:类该怎么摆? 1983 年 C++ 定名,把 OOP 塞进系统级语言——能用,但没人告诉你该怎么用。 1994 年 设计模式成书,把前人反复用的摆法收成套路——从【写代码】升到【抄思路】。 2004 年 Rails 走红,把结构直接做进框架——连抄都不用抄了,填就行。

三、第三次跃迁:人怎么办

类摆对了,还是可能做不出东西——因为需求会变。 2001 年 敏捷宣言,把矛头从【技术】转向【怎么干活】:短迭代、持续交付、拥抱变化。 这一层解决的不是代码问题,是组织问题。

四、为什么这个顺序不可颠倒

没有类,谈设计模式是空谈——模式描述的就是类和对象怎么摆。 没有设计,谈敏捷会变成瞎忙——天天交付一堆没人维护得动的代码。 层级是有依赖的:下面不稳,上面就是空中楼阁。这也解释了 1.1 的三层为什么是叠起来的。

五、动手 Demo:从编程语言演化为综合技术

把关键节点摊在时间轴上,看它分几次跳。 算一算从第一门 OOP 语言到框架走红,一共多少年。

events = [
    (1967, "Simula 67",   "类与对象第一次进语言"),
    (1972, "Smalltalk",   "纯对象:连数字都是对象"),
    (1983, "C++ 定名",    "把 OOP 塞进系统级语言"),
    (1994, "设计模式成书", "从写代码升到抄思路"),
    (1995, "Java 发布",   "虚拟机+标准类库"),
    (2001, "敏捷宣言",    "从技术升到怎么干活"),
    (2004, "Rails 走红",  "框架替你把结构定好"),
]
for y, name, note in sorted(events):
    print(y, name, note)
print("跨度", 2004 - 1967, "年")

实跑输出:

--------------------------------------------------------------------
从编程语言演化为综合技术
--------------------------------------------------------------------

  面向对象不是一天长成的。把它摊在时间轴上:

  年份     事件             那一步多出来了什么
  -----------------------------------------------------
  1967     Simula 67        类与对象第一次进语言
  1972     Smalltalk        纯对象:连数字都是对象
  1983     C++ 定名         把 OOP 塞进系统级语言
  1994     设计模式成书     从【写代码】升到【抄思路】
  1995     Java 发布        虚拟机+标准类库,跨平台
  2001     敏捷宣言         从【技术】升到【怎么干活】
  2004     Rails 走红       框架替你把结构定好

  从 Simula 到 Rails 走红,**37 年**。这 37 年里发生的事,可以归成三次跃迁:

    第一次  【类】被发明——有了组织代码的单位
    第二次  【模式与框架】被总结——有了组织设计的单位
    第三次  【敏捷】被提出——有了组织人的单位

  **每一次跃迁,解决的都是上一层管不了的问题。**
  类管不了【这个类该负责什么】,于是有了设计;
  设计管不了【需求天天变怎么办】,于是有了敏捷。
  这就是本书说【面向对象是综合技术】的由来——**它是三层解决方案叠起来的名字。**

实测:37 年,三次跃迁。 时间轴上的顺序不能乱——没有类就没有模式,没有设计就没有敏捷。

30 秒实验

  1. 把你自己用的框架,归到【类/模式/敏捷】哪一层带来的收益最大。
  2. 想一想:如果明天所有语言都去掉了 class,你手上的项目还剩多少。

常见误区

  1. 以为面向对象是【某一年被发明出来的】。它是一层层长出来的。
  2. 以为三层可以挑着学。下面不稳,上面就是空话。
自测三问(点开对答案) 1. 三次跃迁分别是什么? —— 类被发明(Simula/Smalltalk)、设计被总结(模式与框架)、人怎么办(敏捷)。 2. 从 Simula 到 Rails 走红隔了多少年? —— 1967 到 2004,37 年。 3. 为什么这个顺序不可颠倒? —— 模式描述的是类和对象怎么摆,没有类就无从谈起;没有设计,敏捷只会变成天天交付没人维护的代码。

相关笔记