1986年夏天,MIT的两位教授Hal Abelson和Gerald Jay Sussman,在惠普公司的场地里,对着一块黑板和一群工程师,录下了编程史上最著名的一门课——6.001《计算机程序的构造和解释》(SICP)。将近四十年过去,这套粉笔板书的老录像在YouTube上的播放量依然是百万级,第一讲更是被程序员们像传家宝一样转发了无数遍。
这件事本身就很反常。技术圈是个喜新厌旧的地方,三年前的框架都嫌老,为什么一门用Lisp讲课、画面发黄的录像能活四十年?
答案恰恰藏在它的第一句话里。Abelson开口就是一句暴击:“计算机科学是个糟糕的名字。” 他接下来花了整整十分钟论证:这个领域既不是科学,也不真正关于计算机。它研究的东西,比任何一台机器、任何一门语言都活得久。当你被“每个月出一个新框架”追得精疲力尽的时候,这十分钟可能是最好的解药——它告诉你,哪些东西值得学一辈子。
| 项目 | 内容 |
|---|---|
| 视频标题 | Lecture 1A | MIT 6.001 Structure and Interpretation, 1986 |
| 频道 | MIT 6.001 课程录像(YouTube) |
| 时长 | 约55分钟 |
| 播放量 | 百万级(全系列中最高讲次之一) |
| 核心主题 | 什么是“过程”,如何用抽象驾驭复杂度 |
Abelson给出的理由有两条。第一,它不是科学:科学研究的对象是自然界原本就存在的东西,而计算机里的“过程”是人造物,这门手艺更像工程和艺术,不像物理化学。第二,它也不真正关于计算机——他的原话是:就像几何学(geometry)词源上是“丈量大地”、起源于古埃及量地,但没有任何几何学家认为自己在拿仪器量地。
计算机之于这门学问,只是个放大器,不是主角。
【延伸分析】 这个区分在1986年是学究气,在今天成了救命稻草。Dijkstra那句流传更广的话是同一个意思:“计算机科学之于计算机,就像天文学之于望远镜。”工具的半衰期是三年,但“如何组织过程”的半衰期是三十年。你焦虑的“学不动了”,多半是因为你在拼命追放大器,而不是在学放大器放大的那个东西。
Sussman在这讲里给程序员下了一个我见过的最迷人的定义:他说,我们是用咒语(spell)唤起计算机里的精灵(spirit)的人。程序就是咒语,运行起来的过程就是被唤出来的精灵——它看不见、摸不着,只会严格按照咒语行事。
所以这门课的自我定位,是一家“魔法学校”。
【延伸分析】 这个比喻不只是浪漫,它精确描述了程序员的工作困境:你的操作对象是不可见的。木匠刨歪了木头,看得见;你写的条件差了一个等号,精灵只会安静地执行错误指令,直到某天深夜爆炸。正因为对象不可见,精确的语言是唯一的杠杆——这解释了为什么程序员对命名、对语法、对规范有近乎洁癖的执着,那不是矫情,是职业本能。
这讲最硬核的十分钟,是现场手写求平方根的程序。Abelson先写出数学书上的定义:√x 就是那个 y,满足 y 自乘等于 x。这叫声明性知识(declarative knowledge)——它陈述“是什么”,人能看懂,但机器不会执行。
计算机需要的是过程性知识(imperative knowledge):一套逐步执行的步骤。于是他写下牛顿法:先猜一个数,然后不断用“y 与 x/y 的平均值”替换猜测,几次迭代后就能逼近真值。
flowchart TD
Q["求 x 的平方根"] --> D["声明性:y 自乘等于 x"]
Q --> P["过程性:牛顿迭代法"]
P --> P1["先猜一个数"]
P1 --> P2["改进:取 y 与 x/y 的平均"]
P2 --> P3["再猜,直到足够接近"]
【延伸分析】 这个“是什么/怎么算”的分界线,在AI时代出现了历史性的松动——大语言模型第一次让机器能直接回答“是什么”。但只要进入生产系统,你仍然要把它变成可控、可验证、可复现的“怎么算”。理解这条分界线的人,才不会被“AI会不会取代程序员”吓到:机器正在学会陈述,而把陈述变成可靠过程的能力,依然是人的地盘。
接下来是全课最实用的思想武器。写平方根程序时,Abelson在总控逻辑里直接调用了一个还不存在的子过程——假装它已经写好了,先把顶层的思路写通,回头再来兑现这个愿望。他管这叫 wishful thinking(愿望思维),并且明确说这是一种严肃的方法,不是偷懒。
先许愿,再还愿。整棵程序树就是这样从顶上长出来的。
【延伸分析】 你会发现今天所有流行的工程实践,都是这个思想的仪式化:TDD先写测试,等于先把愿望用代码固定下来;contract-first先定接口再写实现,等于先许愿再分活;微服务拆分的第一步也是“假设下游已存在”。1986年没有这些名词,但思想是同一颗:复杂性只能被推迟,不能被消灭——那就把它推迟到可以单独处理的时候。
观众看到满屏括号都会皱眉,Abelson专门为此辩护。他说评价一门语言要看三个维度:基本表达式(有哪些原子)、组合手段(原子怎么拼成复合体)、抽象手段(怎么给复合体命名、当新原子用)。Lisp在这三个维度上都推到了极限——前缀加括号的S表达式,让整个语言只剩下一条语法规则,而且代码和数据长得一模一样。
【延伸分析】 “代码即数据”不是怪癖,是超能力:它意味着程序可以像处理数据一样生成和改写程序,这就是宏、DSL、以及后来无数语言特性(连eval、装饰器都有它的影子)的血统源头。更重要的启示是那个“三维度”框架——你今天学的任何新语言,Rust也好,Swift也好,仍然只是在这三个维度上做不同的取舍。有了这个框架,学新语言的恐惧感会下降一大半:你不是在学一门外语,是在看老三维度的又一次排列组合。
定义了 square 之后,Abelson反问:使用者需要知道里面写的是 x 乘 x,还是把 x 加了 x 遍,还是查了张表吗?不需要。这就是过程抽象——把“怎么做的”封进黑盒,只对外出售“是什么”。
他进一步点题:这门课从头到尾只关心一个问题——当系统大到没人能装进脑子时,怎么控制它的复杂度。答案是唯一的:一级一级地造黑盒。配套的还有书序里那句被引用了四十年的话:“程序是写给人读的,只是顺便能在机器上执行。”
【延伸分析】 从函数到类,从类到API,从API到微服务,四十年来所有架构话术,本质都是这个思想的不同折扣价版本。判断一个抽象好坏的标准也因此变得极其朴素:看它的接口文档会不会被迫解释实现细节。一旦解释了,黑盒就在漏水。
这门课的后续故事很有戏剧性。2008年前后,MIT用更工程化的6.01(Python加机器人)取代了6.001,技术圈一片哀嚎。据Sussman当时的解释,理由很务实:今天的工程师面对的是海量现成组件,拼装系统的能力比从零造轮子更稀缺。
【延伸分析】 但看这门课今天的观看数据——百万级播放,评论区挤满工作多年的工程师——你会发现两件事同时为真:入门靠拼装,天花板靠抽象。这门课没死,只是换了一批观众:从被迫修学分的大一新生,变成了碰过复杂系统、回头补内功的职业程序员。这可能是对它最好的评价——它是那种你越写代码、越能读懂的书。
flowchart TD
ROOT["SICP第一讲知识地图"] --> M1["正名:它不是什么"]
ROOT --> M2["正身:它是什么"]
ROOT --> M3["方法论三件套"]
M1 --> A1["不是科学,是手艺"]
M1 --> A2["不关计算机,像几何不关量地"]
M2 --> B1["研究对象:过程"]
M2 --> B2["程序是咒语,唤起机器里的精灵"]
M3 --> C1["基本表达式"]
M3 --> C2["组合手段"]
M3 --> C3["抽象手段"]
C3 --> D1["命名与黑盒"]
C3 --> D2["愿望思维,先用后造"]
D1 --> E1["把复杂封进盒子"]
D2 --> E2["自顶向下分解"]
看视频是输入,怎么变成输出?给你四条明天就能用的行动指南。
第一,写函数前先写“愿望清单”。 动手前先假设所有理想构件都存在,把顶层逻辑一气写通,再逐个下潜实现。读代码时反过来用:先读主流程许了什么愿,再决定要不要下潜——很多烂代码的问题不是写得差,是根本没许过愿,想到哪写到哪。
第二,给每个抽象做“黑盒体检”。 写完一个模块,问自己:使用它的人,需要知道里面的实现吗?如果接口注释里出现了“内部会先……再……”,说明黑盒漏了。漏水的黑盒是所有系统腐化的起点。
第三,AI结对时代,你的价值从“念咒”变成“审咒”。 Copilot们生成的是过程,但判断一段生成代码对不对、边界齐不齐、半年后能不能维护,靠的正是这门课教的过程思维。工具越自动,审查者的品味越值钱——而品味只能从这种“内功课”里来。
第四,每年重读一门老课。 这讲55分钟的信息密度,不如任何一个新框架的发布会刺激,但它决定的思考层次高得多。工具会旧,判断力不会——这就是四十年前的粉笔板书,能打赢每年新出的精品课的原因。
工具每年都在换,这门课四十年只教一件事:把复杂封进黑盒,用精确的咒语驾驭看不见的过程——这才是程序员真正的内功。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
