<!-- title: 四十年前的神课：编程即造语言 -->
<!-- domain: programming -->

# 四十年前的神课：编程即造语言——MIT SICP第一讲深度解读

## 这条视频为什么值得读

在AI能替你写代码的2026年，一段录制于1986年的粉笔板书课程，反而是YouTube上被程序员反复重修的编程神课。它不教你任何框架——教的是框架出现之前，编程这个行当到底在干什么：什么是“过程”，什么是“抽象”，为什么说写程序的本质是造一门语言。看过它的人常说：大学四年不如这一讲。本文替你把这一讲的知识精华全部拆开、溯源、验收，并告诉你它在AI时代为什么突然变得更值钱了。

## 视频基本信息

| 项目 | 内容 |
|---|---|
| 视频标题 | Lecture 1A: Overview and Introduction to Lisp（第一讲A：总览与Lisp入门） |
| 所属课程 | MIT 6.001《计算机程序的构造和解释》（SICP） |
| 主讲人 | Harold Abelson（阿贝尔森）、Gerald Jay Sussman（萨斯曼） |
| 频道 | MIT OpenCourseWare（MIT官方开放课程频道） |
| 录制与发布 | 1986年7月录制于惠普公司礼堂，后由MIT OCW官方上传至YouTube |
| 时长 | 约1小时 |
| 热度 | 长期位列该频道播放量最高的课程视频之一，播放量达百万级（据频道页面，本文数据为撰写时近似值） |
| 配套教材 | 《Structure and Interpretation of Computer Programs》（1985年初版，MIT Press） |

> 注：本文所引热度数据均据MIT OpenCourseWare频道页面及公开渠道的长期稳定信息，为近似值；视频发布于互联网早期存档，历次平台改版数据仅供参考。

## 一、开场祛魅：计算机科学是个“坏名字”

这一讲最出名的，恰恰是它开场的“劝退式祛魅”。阿贝尔森开门见山地说：computer science（计算机科学）是个 terrible name（糟糕透顶的名字）——它既不是一门科学，也和计算机本身关系不大。天文学不是关于望远镜的学问，几何学也不是关于三角板的学问，同理，计算机科学的内核不是那台机器。

那它是什么？阿贝尔森给出了这堂课流传最广的比喻：**程序员是巫师的学徒（sorcerer's apprentice），程序就是咒语（spell）**。咒语是思想世界里最没有约束的造物——不像工程师造桥要受材料与重力管束，程序员的“咒语”可以凭空组织出千军万马，唯一的约束是自己的思维是否清晰。这也意味着危险：咒语念错了，灾祸也是凭空放大的。这层比喻不是段子，它为全课定调：这门学问的核心是**控制复杂度**，而不是驯服机器。

顺带一提，主讲人甚至调侃了Lisp这个名字——圈子里素有" Lots of Irritating Silly Parentheses（一堆惹人烦的多余括号）"的玩笑，但两位主讲人仍然坚持：这可能是表达计算思想的最佳语言。为什么？这是后面第三刀要解开的悬念。

## 二、第一刀：知道“是什么”与知道“怎么做”

祛魅之后，课程立刻切入全讲最重要的知识分界：**声明性知识（declarative knowledge）与过程性知识（imperative knowledge）**。

“什么是平方根”——这是个声明性问题：存在某个数y，使 y² = x 且 y ≥ 0。中学数学给出的是这种“是什么”的答案。

“怎么算出平方根”——这才是过程性问题。阿贝尔森搬出了近两千年前亚历山大港的**海伦（Heron of Alexandria）**在《Metrica》中记载的迭代法：猜一个数y，取 y 与 x/y 的平均，作为新的猜测，反复迭代，结果会迅速逼近真平方根。这一小段“猜测—修正—再猜测”的机械步骤，就是人类最早有记录的“算法”之一。

这一刀切得极深：**数学书里写的是真理的清单，程序里写的是动作的序列**。声明性知识说“什么为真”，过程性知识说“如何去做”。整个计算机科学的桥梁，就是把前者翻译成后者——把“存在这样的y”翻译成“按这个步骤你就能得到y”。这也是本讲标题里“过程（procedure）”概念的真正含义：过程是用声明性知识压铸出来的可执行物。

今天回头看，这条分界线比1986年更加显眼：SQL、Prolog、Haskell乃至正则表达式，都是声明式家族的成员；而C、Python的大多数代码是过程式的。数据库里你声明“我要什么”，查询优化器决定“怎么拿”——你每天都在享受这条分界线带来的红利，只是未必意识到它。

## 三、第二刀：黑盒抽象——全课自称“最重要”的技术

接下来萨斯曼抛出他自称**本课最重要的思想：黑盒抽象（black-box abstraction）**。内容可以压缩成三个关键词——一门语言必须提供：

1. **基本表达（primitive expressions）**：语言最小、最原子的构件；
2. **组合手段（means of combination）**：把简单构件组装成复杂构件的语法；
3. **抽象手段（means of abstraction）**：给复杂构件起名字、把它当作整体使用的方法。

有了这三样，你就可以玩本讲最精彩的教学魔术——**“许愿式思考”（wishful thinking）**：要算平方根，先假装一个叫sqrt的黑盒已经存在，直接在主程序里“许愿”调用它；然后回头兑现愿望——把sqrt拆成“判断收敛”和“迭代修正”两个更小的黑盒；如此层层拆解，直到落到语言原语为止。

这个演示的妙处在于：**你还没写实现，系统的骨架已经立起来了**。每个黑盒只需要向外界承诺“我做什么”（接口），而不必暴露“我怎么做”（实现）。这和David Parnas在1972年CACM经典论文《On the Criteria That Systems Should Be Used to Decompose Systems》中提出的**信息隐藏**原则，是同一枚硬币的两面——模块化的依据不是流程图的步骤，而是“哪些设计决策可能变化、可以藏进黑盒”。

而“黑盒”三个关键词，其实就是一张永久有效的代码评审清单：你设计的每个函数、每个模块，能不能说出它的基本操作是什么？组合规则是什么？调用方需要知道多少内部细节？四十年后看依然一针见血。

## 四、第三刀：为什么是Lisp——代码与数据的同一性

谜底揭晓。两位主讲人选Scheme（Lisp方言，1975年由Guy Steele与Sussman设计）作为教学语言，理由并不是“上古情怀”，而是一个技术判断：**Lisp的表达方式异常统一**。

在Lisp里，一切皆S表达式：`(+ 1 2)`、`(define (square x) (* x x))`——程序和数据是同一种东西（列表）。这带来一个惊人的推论：**用程序去操作程序，和用程序去操作数据，是同一件事**。所以在Lisp里，“写一个求值器（解释器）”不是高不可攀的神技，而是一个顺理成章的练习。

萨斯曼在此给出了本讲最硬核的一击：支撑起整个Lisp语言的，其实只需要屈指可数的几个原语——其他一切都能由“基本表达+组合+抽象”这三板斧构造出来。当语言的核心小到可以被完整理解时，程序员第一次获得了**创造语言而不只是使用语言**的自由。

这也是整门课程的终极伏笔：SICP系列的后续讲座（尤其是著名的第4A讲）会带着学生**用Lisp亲手写出一个Lisp解释器**——所谓的元循环求值器（metacircular evaluator）。学到最后你会发现：所谓编程范式、所谓新框架，本质上都是一门“新语言”；而理解一门语言的最好方式，就是把它的求值器写出来。这就是标题那句话的出处——**编程的最高形态，是造语言**。

## 五、理论与史实溯源

这门课不是空中楼阁，每个主张都有扎实的来路：

- **SICP教材**：Abelson、Sussman与Julie Sussman合著，1985年由MIT Press出版，1996年出第二版，全书现已免费公开在线阅读，长期被誉为“改变程序员思维方式的十本书之一”。
- **Scheme语言**：1975年，Steele与Sussman在MIT AI Memo 349《SCHEME: An Interpreter for Extended Lambda Calculus》中首次描述，把 Steelman风格的词法作用域与lambda演算带到了脚本语言尺度。
- **Lisp的源头**：John McCarthy于1958年提出构想，1960年在CACM发表《Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I》，首次把“代码即数据”的观念形式化。
- **海伦迭代法**：记载于公元1世纪海伦的《Metrica》，本质是牛顿迭代法在平方根上的特例，收敛速度可严格证明（二阶收敛）。
- **许愿式思考与信息隐藏**：与Parnas 1972年论文、以及后来David Wheeler的名言"All problems in computer science can be solved by another level of indirection"一脉相承。
- **课程的落幕与余波**：据MIT校方当时公开讨论与媒体报道，2008年前后MIT用基于Python的6.01课程取代了Scheme版的6.001，理由是学生更需要“工程实用技能”。这场“神课之死”的争论至今未息——颇具讽刺的是，这反而让1986年版视频成了绝版珍品。

## 六、批判性审查：哪些主张站得住，哪些要打折

**证据充分的部分**：声明性/过程性二分是计算理论的标准框架；黑盒抽象与信息隐藏是软件工程界四十年反复验证的原则；海伦法的收敛性有严格数学证明。这三块闭眼收下。

**被浪漫化的部分**：其一，“巫师与咒语”的比喻精彩但危险——它美化了不受约束的创造力，却弱化了现代软件工程赖以存活的约束：测试、评审、版本控制、类型系统。真实的工程是在“咒语自由”与“桥梁纪律”之间找平衡。其二，“黑盒万能”有代价：抽象层数堆太高，性能账单会找上门；性能敏感系统经常要“打穿黑盒”做数据布局优化，这在1986年的课堂里几乎没有讨论。其三，“计算机科学不是科学”的断言在机器学习时代更微妙了——今天的ML研究大量依赖实证测量，科学味反而变浓。

**最大的争议发生在教学法层面**：SICP以“对新手太难”闻名。连MIT自己都在2008年前后用Python课程取而代之——支持者说这是务实，反对者（包括部分原班教师）说这是教学生“调库”而非教学生“思考”。平心而论，两派都有道理：6.001的前提假设是面向已经被筛选过、且未来要写复杂系统的学生；对今天的多数学习者，直接硬啃SICP确实容易劝退。更现实的姿势是：把这一讲当“思维按摩”看，把书当参考书查，而不必按武林秘籍的方式从头修炼到尾。

## 七、AI时代重看：为什么它反而更值钱

2023年Andrej Karpathy说“最热门的新编程语言是英语”，2025年"vibe coding"一词爆红——AI替人敲代码已成日常。于是问题来了：当“打字部分”被自动化，程序员剩下的核心竞争力是什么？

答案恰恰是这一讲从头讲到尾的两样东西：**划分黑盒的能力**（决定AI生成的代码块之间如何衔接、边界与承诺是什么）与**设计语言的能力**（为问题域发明恰当的词汇与规则，再用AI去填实现）。换句话说，1986年这堂课教的是“怎么写出咒语”；2026年的你需要它教的其实是“怎么设计咒语的语法”，然后让AI去念。老神课在这个意义上完成了一次漂亮的返老还童。

## 八、给你的三条可操作建议

1. **先写使用手册，再写实现**：动手前，用黑盒三问给自己列清单——这个模块的原语是什么？组合规则是什么？调用方需要知道什么？说不清楚，就说明设计还没完成。
2. **把新框架当外语学**：面对任何新框架，别先抄示例，先问三件事：它的数据模型是什么？允许哪些组合方式？提供了什么抽象手段？三问答完，框架的灵魂你已经拿到了。
3. **每周造一门“玩具小语言”**：路由配置、表单校验、告警规则，都是DSL的天然土壤。练习用一行声明替代十行过程代码——这是把“编程即造语言”内化成本能的最快路径。

## 视频论证结构图

```mermaid
flowchart TD
    A[开场祛魅<br/>CS是个坏名字] --> B[程序员如巫师<br/>程序即咒语]
    B --> C[第一刀<br/>是什么 vs 怎么做]
    C --> D[海伦迭代法<br/>过程性知识落地]
    D --> E[第二刀<br/>黑盒抽象]
    E --> F[三大机制<br/>原语 组合 抽象]
    F --> G[许愿式思考<br/>先定接口再兑现]
    G --> H[第三刀<br/>为什么是Lisp]
    H --> I[S表达式<br/>代码即数据]
    I --> J[系列伏笔<br/>用Lisp写Lisp解释器]
    J --> K[终极主张<br/>编程即造语言]
```

## 延伸阅读

- 同系列第二讲《Lecture 1B: Procedures and Processes; Substitution Model》——把本讲的黑盒抽象推进到高阶过程与递归/迭代的替换模型，是1A最自然的续杯。
- 《SICP》全书免费在线HTML版（sarabander重排版，社区公认最佳阅读体验）：https://sarabander.github.io/sicp/

## 参考来源

1. [MIT OpenCourseWare YouTube频道](https://www.youtube.com/@mitocw) — SICP系列讲座的官方上传渠道，本文视频信息与热度数据来源（近似值）
2. [Wikipedia: Structure and Interpretation of Computer Programs](https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs) — 课程与教材沿革、6.001课程背景
3. [MIT OCW: 6.001课程页（Spring 2005）](https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/) — MIT官方课程资料与讲座列表
4. [MacTutor数学史档案：Heron of Alexandria](https://mathshistory.st-andrews.ac.uk/Biographies/Heron/) — 海伦生平与《Metrica》中平方根算法的记载
5. [SICP在线全文（sarabander版）](https://sarabander.github.io/sicp/) — 教材原书免费全文，含元循环求值器章节

---
> 本文由「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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
