《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)
- 寄存器机器设计语言
- 机器模拟器与汇编器
- 存储分配与垃圾回收
- 显式控制求值器
- 编译器设计
核心观点
- 抽象是分层的:每一层隐藏下层实现细节,上层只关心接口
- 程序即数据:元循环求值器展示了如何用语言自身实现语言
- 过程与数据的对偶:高阶过程、惰性求值、流打破了二者界限
- 状态引入复杂性:赋值带来局部状态,也带来并发和时序问题
- 抽象屏障:良好设计应使修改某层实现不影响上层接口
与其他笔记关联
- SICP-计算机程序的构造和解释-Harold-Abelson:第一版笔记(扫描版,部分OCR)
- Structured-Computer-Organization-6th-Edition:计算机组成课程教材
- 《数据结构与算法》-Rust实现-Shieber:SICP习题的Rust重实现