第一章 构造过程抽象
- 程序设计的基本元素
- 表达式
- 命名和环境
- 组合式的求值
- 复合过程
- 过程应用的代换模型
- 条件表达式和谓词
- 实力:采用牛顿法求平方根
- 过程作为黑箱抽象
- 过程与他们所产生的计算
- 线性递归和迭代
- 树形递归
- 增长的阶
- 求幂
- 最大公约数
- 实例: 素数检测
- 用高阶函数做抽象
- 过程作为参数
- 用lamdda构造过程
- 过程作为一般性的方法
- 过程作为返回值
第二章 构造数据抽象
- 数据抽象引导
- 实例:有理数的算术运算
- 抽象屏障
- 数据意味着什么
- 拓展练习:区间算术
- 层次性数据和闭包性质
- 序列的表示
- 层次性结构
- 序列作为一种约定的界面
- 实例:一个图形语言
- 符号数据
- 引号
- 实例: 符号求异
- 实例: 集合的表示
- 实例: Huffman编码树
- 抽象数据的多重表示
- 复数的表示
- 带标志数据
- 数据导向的程序设计和可加性
- 带有通用型操作的系统
- 通用型算数运算
- 不同类型数据的组合
- 实例:符号代数
第三章 模块化、对象和状态
- 赋值和局部状态
- 局部状态变量
- 引进赋值带来的利益
- 引进赋值的代价
- 求职的环境模型
- 求值规则
- 简单过程的应用
- 将框架看作局部状态的展台
- 内部定义
- 用变动数据做模拟
- 变动的表结构
- 队列表示
- 表格的表示
- 数字电路的模拟
- 约束的传播
- 并发:时间事一个本质问题
- 并发系统中时间的性质
- 控制并发的机制
- 流
- 流作为延时的表
- 无穷流
- 流计算模式的使用
- 流和延时求值
- 函数式程序的模块化的对象的模块化
第四章 元语言抽象
- 元循环求值器
- 求值器的内核
- 表达式的表示
- 求值器数据结构
- 作为程序运行这个求值器
- 将数据作为程序
- 内部定义
- 将语法分析与执行分离
- Scheme的变形——惰性求值
- 正则序和应用序
- 一个采用惰性求值的解释器
- 将流作为惰性的表
- Scheme的变形——非确定性计算
- amb和搜索
- 非确定性程序的实例
- 实现amb求值器
- 逻辑程序设计
- 演绎信息检索
- 查询系统如何工作
- 逻辑程序设计师数理逻辑吗
- 查询系统的实现
第五章 寄存器机器里的计算
- 寄存器机器的设计
- 一种描述寄存器机器的语言
- 机器设计的抽象
- 子程序
- 采用堆栈实现递归
- 指令总结
- 一个寄存器及其模拟器
- 机器模型
- 汇编程序
- 为指令生成执行过程
- 监视机器执行
- 存储分配和废料收集
- 将存储看作向量
- 维持一种无穷存储的假象
- 显示控制的求值器
- 显示控制求值器的内核
- 序列的求值和尾递归
- 条件、赋值和定义
- 求值器的运行
- 编译
- 编译器的结构
- 表达式的编译
- 组合式的编译
- 指令序列的组合
- 编译代码的实例
- 词法地址
- 编译代码与求值器的互联
参考文献
练习表
索引
- 本文链接: https://halo.cjh.kim/archives/计算机程序的构造和解释目录
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!