《SICP》第二版 - 计算机程序的构造和解释

一句话总结:MIT计算机科学经典教材,用Scheme语言讲授程序设计核心概念,从过程抽象到元语言抽象,层层递进构建计算思维。

书籍信息

  • 作者:Harold Abelson, Gerald Jay Sussman with Julie Sussman
  • 出版社:MIT Press / McGraw-Hill
  • 版本:第二版(1996年)
  • 总页数:634页
  • 语言:英文原版

核心内容结构

本书分为五大主题模块:

一、过程抽象(Chapter 1)

  • 编程基础元素:表达式、命名、环境、求值模型
  • 替换模型理解过程调用
  • 线性递归 vs 迭代过程的区分
  • 阶乘、斐波那契、GCD等经典算法
  • 高阶过程:过程作为参数、返回值、lambda抽象

二、数据抽象(Chapter 2)

  • 有理数算术实现抽象屏障
  • 分层数据结构与闭包性质
  • 序列作为常规接口
  • 画布语言(Picture Language)案例
  • 符号微分、集合表示、Huffman编码树
  • 通用操作与数据定向编程

三、模块化、对象与状态(Chapter 3)

  • 赋值与局部状态
  • 环境模型理解求值
  • 可变数据结构:队列、表
  • 数字电路模拟器
  • 约束传播
  • 并发与流

四、元语言抽象(Chapter 4)

  • 元循环求值器:用Scheme实现Scheme解释器
  • 懒惰求值与流
  • 非确定性计算(amb求值器)
  • 逻辑编程语言实现

五、寄存器机器计算(Chapter 5)

  • 寄存器机器设计语言
  • 机器模拟器与汇编器
  • 存储分配与垃圾回收
  • 显式控制求值器
  • 编译器设计

核心观点

  1. 抽象是分层的:每一层隐藏下层实现细节,上层只关心接口
  2. 程序即数据:元循环求值器展示了如何用语言自身实现语言
  3. 过程与数据的对偶:高阶过程、惰性求值、流打破了二者界限
  4. 状态引入复杂性:赋值带来局部状态,也带来并发和时序问题
  5. 抽象屏障:良好设计应使修改某层实现不影响上层接口

与其他笔记关联