《计算机程序的构造和解释(JavaScript版)》[美]哈罗德·阿贝尔森 | PDF下载|ePub下载
类别: 科技
作者:
[美]哈罗德·阿贝尔森
/
[美]杰拉尔德·杰伊·萨斯曼
/
[德]马丁·亨茨
/
[瑞典]托拜厄斯·瑞格斯塔德
出版社: 机械工业出版社
原作名: Structure and Interpretation of Computer Programs: JavaScript Edition
译者: 裘宗燕
出版年: 2024-1
页数: 512
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111734635
出版社: 机械工业出版社
原作名: Structure and Interpretation of Computer Programs: JavaScript Edition
译者: 裘宗燕
出版年: 2024-1
页数: 512
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111734635
内容简介 · · · · · ·
《计算机程序的构造与解释》是对全世界的计算机科学教育产生深刻影响的教材,这本书的第1版于1984年出版,第2版于1996年出版,至今已被全世界100多所大学采用为教材,其中包括斯坦福大学、普林斯顿大学、牛津大学等。
这本书源于Harold Abelson和Gerald Jay Sussman在MIT讲授的很受欢迎的入门计算机科学课程,后被广泛作为教科书。本书通过构建一系列计算的概念模型的方式,向读者介绍计算的核心思想。之前版本的程序实例使用程序设计语言Scheme,本书转到了JavaScript。
· · · · · ·
作者简介 · · · · · ·
哈罗德•阿贝尔森(Harold Abelson)是MIT 1992年度MacVicar Faculty Fellow。在MIT电子工程和计算机科学系工作,得到过重要的计算机科学教育奖——IEEE计算机协会的Booth奖。
杰拉尔德•杰伊•萨斯曼(Gerald Jay Sussman)是Matsushita电子工程教授。在MIT电子工程和计算机科学系工作,得到过重要的计算机科学教育奖——ACM的Karlstrom奖。
马丁•亨茨(Martin Henz)是新加坡国立大学的计算机科学副教授。
托拜厄斯•瑞格斯塔德(Tobias Wrigstad)是乌普萨拉大学的计算机科学教授。
目录 · · · · · ·
译者序
序言
1984年版《计算机程序的构造和解释》的原序
前言
1996年SICP第2版的前言
1984年SICP第1版的前言
致谢
1996年SICP第2版的致谢
第1章 构造函数抽象
1.1 程序设计的基本元素
1.1.1 表达式
1.1.2 命名和环境
1.1.3 运算符组合式的求值
1.1.4 复合函数
1.1.5 函数应用的代换模型
1.1.6 条件表达式和谓词
1.1.7 实例:用牛顿法求平方根
1.1.8 函数作为黑箱抽象
1.2 函数与它们产生的计算
1.2.1 线性递归和迭代
1.2.2 树形递归
1.2.3 增长的阶
1.2.4 求幂
1.2.5 最大公约数
1.2.6 实例:素数检测
1.3 用高阶函数做抽象
1.3.1 函数作为参数
1.3.2 用lambda表达式构造函数
1.3.3 函数作为通用的方法
1.3.4 函数作为返回值
第2章 构造数据抽象
2.1 初识数据抽象
2.1.1 实例:有理数的算术运算
2.1.2 抽象屏障
2.1.3 数据是什么意思?
2.1.4 扩展练习:区间算术
2.2 层次性数据和闭包性质
2.2.1 序列的表示
2.2.2 层次结构
2.2.3 序列作为约定的接口
2.2.4 实例:一个图形语言
2.3 符号数据
2.3.1 字符串
2.3.2 实例:符号求导
2.3.3 实例:集合的表示
2.3.4 实例:Huffman编码树
2.4 抽象数据的多重表示
2.4.1 复数的表示
2.4.2 带标签数据
2.4.3 数据导向的程序设计和可加性
2.5 包含通用型操作的系统
2.5.1 通用型算术运算
2.5.2 不同类型数据的组合
2.5.3 实例:符号代数
第3章 模块化、对象和状态
3.1 赋值和局部状态
3.1.1 局部状态变量
3.1.2 引进赋值带来的利益
3.1.3 引进赋值的代价
3.2 求值的环境模型
3.2.1 求值规则
3.2.2 简单函数的应用
3.2.3 框架作为局部状态的仓库
3.2.4 内部定义
3.3 用变动数据建模
3.3.1 可变的表结构
3.3.2 队列的表示
3.3.3 表格的表示
3.3.4 数字电路模拟器
3.3.5 约束传播
3.4 并发:时间是一个本质问题
3.4.1 并发系统中时间的性质
3.4.2 控制并发的机制
3.5 流
3.5.1 流作为延迟的表
3.5.2 无穷流
3.5.3 流计算模式的应用
3.5.4 流和延迟求值
3.5.5 函数式程序的模块化和对象的模块化
第4章 元语言抽象
4.1 元循环求值器
4.1.1 求值器的核心部分
4.1.2 组件的表示
4.1.3 求值器的数据结构
4.1.4 把求值器作为程序运行
4.1.5 以数据为程序
4.1.6 内部声明
4.1.7 分离语法分析与执行
4.2 惰性求值
4.2.1 正则序和应用序
4.2.2 采用惰性求值的解释器
4.2.3 流作为惰性的表
4.3 非确定性计算
4.3.1 搜索和amb
4.3.2 非确定性程序实例
4.3.3 实现amb求值器
4.4 逻辑程序设计
4.4.1 演绎式信息检索
4.4.2 查询系统如何工作
4.4.3 逻辑程序设计是数理逻辑吗?
4.4.4 实现查询系统
第5章 寄存器机器里的计算
5.1 寄存器机器的设计
5.1.1 一种描述寄存器机器的语言
5.1.2 机器设计的抽象
5.1.3 子程序
5.1.4 使用栈实现递归
5.1.5 指令总结
5.2 寄存器机器的模拟器
5.2.1 机器模型
5.2.2 汇编器
5.2.3 指令和它们的执行函数
5.2.4 监视机器执行
5.3 存储分配和废料收集
5.3.1 把存储器看作向量
5.3.2 维持一种无穷存储的假象
5.4 显式控制的求值器
5.4.1 分派器和基本求值
5.4.2 函数应用的求值
5.4.3 块结构、赋值和声明
5.4.4 求值器的运行
5.5 编译
5.5.1 编译器的结构
5.5.2 组件的编译
5.5.3 编译函数应用和返回语句
5.5.4 指令序列的组合
5.5.5 编译代码的实例
5.5.6 词法地址
5.5.7 将编译代码与求值器接口
参考文献
索引
练习列表
推荐阅读
· · · · · ·
序言
1984年版《计算机程序的构造和解释》的原序
前言
1996年SICP第2版的前言
1984年SICP第1版的前言
致谢
1996年SICP第2版的致谢
第1章 构造函数抽象
1.1 程序设计的基本元素
1.1.1 表达式
1.1.2 命名和环境
1.1.3 运算符组合式的求值
1.1.4 复合函数
1.1.5 函数应用的代换模型
1.1.6 条件表达式和谓词
1.1.7 实例:用牛顿法求平方根
1.1.8 函数作为黑箱抽象
1.2 函数与它们产生的计算
1.2.1 线性递归和迭代
1.2.2 树形递归
1.2.3 增长的阶
1.2.4 求幂
1.2.5 最大公约数
1.2.6 实例:素数检测
1.3 用高阶函数做抽象
1.3.1 函数作为参数
1.3.2 用lambda表达式构造函数
1.3.3 函数作为通用的方法
1.3.4 函数作为返回值
第2章 构造数据抽象
2.1 初识数据抽象
2.1.1 实例:有理数的算术运算
2.1.2 抽象屏障
2.1.3 数据是什么意思?
2.1.4 扩展练习:区间算术
2.2 层次性数据和闭包性质
2.2.1 序列的表示
2.2.2 层次结构
2.2.3 序列作为约定的接口
2.2.4 实例:一个图形语言
2.3 符号数据
2.3.1 字符串
2.3.2 实例:符号求导
2.3.3 实例:集合的表示
2.3.4 实例:Huffman编码树
2.4 抽象数据的多重表示
2.4.1 复数的表示
2.4.2 带标签数据
2.4.3 数据导向的程序设计和可加性
2.5 包含通用型操作的系统
2.5.1 通用型算术运算
2.5.2 不同类型数据的组合
2.5.3 实例:符号代数
第3章 模块化、对象和状态
3.1 赋值和局部状态
3.1.1 局部状态变量
3.1.2 引进赋值带来的利益
3.1.3 引进赋值的代价
3.2 求值的环境模型
3.2.1 求值规则
3.2.2 简单函数的应用
3.2.3 框架作为局部状态的仓库
3.2.4 内部定义
3.3 用变动数据建模
3.3.1 可变的表结构
3.3.2 队列的表示
3.3.3 表格的表示
3.3.4 数字电路模拟器
3.3.5 约束传播
3.4 并发:时间是一个本质问题
3.4.1 并发系统中时间的性质
3.4.2 控制并发的机制
3.5 流
3.5.1 流作为延迟的表
3.5.2 无穷流
3.5.3 流计算模式的应用
3.5.4 流和延迟求值
3.5.5 函数式程序的模块化和对象的模块化
第4章 元语言抽象
4.1 元循环求值器
4.1.1 求值器的核心部分
4.1.2 组件的表示
4.1.3 求值器的数据结构
4.1.4 把求值器作为程序运行
4.1.5 以数据为程序
4.1.6 内部声明
4.1.7 分离语法分析与执行
4.2 惰性求值
4.2.1 正则序和应用序
4.2.2 采用惰性求值的解释器
4.2.3 流作为惰性的表
4.3 非确定性计算
4.3.1 搜索和amb
4.3.2 非确定性程序实例
4.3.3 实现amb求值器
4.4 逻辑程序设计
4.4.1 演绎式信息检索
4.4.2 查询系统如何工作
4.4.3 逻辑程序设计是数理逻辑吗?
4.4.4 实现查询系统
第5章 寄存器机器里的计算
5.1 寄存器机器的设计
5.1.1 一种描述寄存器机器的语言
5.1.2 机器设计的抽象
5.1.3 子程序
5.1.4 使用栈实现递归
5.1.5 指令总结
5.2 寄存器机器的模拟器
5.2.1 机器模型
5.2.2 汇编器
5.2.3 指令和它们的执行函数
5.2.4 监视机器执行
5.3 存储分配和废料收集
5.3.1 把存储器看作向量
5.3.2 维持一种无穷存储的假象
5.4 显式控制的求值器
5.4.1 分派器和基本求值
5.4.2 函数应用的求值
5.4.3 块结构、赋值和声明
5.4.4 求值器的运行
5.5 编译
5.5.1 编译器的结构
5.5.2 组件的编译
5.5.3 编译函数应用和返回语句
5.5.4 指令序列的组合
5.5.5 编译代码的实例
5.5.6 词法地址
5.5.7 将编译代码与求值器接口
参考文献
索引
练习列表
推荐阅读
· · · · · ·
发表回复
要发表评论,您必须先登录。