编程界的圣经:从Scheme到JavaScript构建你的计算思维

文章目录

    • 适读人群
    • 目 录


《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简记为SICP)是MIT的基础课教材,出版后引起计算机教育界的广泛关注,对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。这本书的第1版于1984年出版,第2版于1996年出版,至今已被全世界100多所大学采用为教材,其中包括斯坦福大学、普林斯顿大学、牛津大学等。

图片

书号: 9787111630548 书号:9787111630548 书号:9787111630548

出版时间: 2019.07.01 出版时间:2019.07.01 出版时间:2019.07.01

机械工业出版社把SICP(第2版)引进中国,于2004年出版,至今已近20年了。令人感兴趣的是,SICP至今仍然受到国内关心计算机科学技术的人们,特别是计算机专业的优秀学生和青年计算机工作者的关注。

与许多计算机科学领域的入门教材不同,SICP的最主要关注点并不在基础语言中各种编程结构的形式和意义,也没有深入讨论巧妙或深刻的算法。与众不同地,一方面,SICP注目于帮助读者理解基于计算的观点看世界、看问题的重要性,掌握相关的基本概念和观点,建立基于计算思考问题的习惯,也就是今天人们常说的计算思维。另一方面,SICP也深入讨论了通过计算的方式处理和解决问题时必须掌握的主要技术与方法,最重要的就是分解问题和组织计算,以及建立和使用抽象的各种技术与方法。

SICP的章节目录清晰地反映了作者的基本想法:

第1、2两章分别讨论函数(或过程)抽象和数据抽象的作用,它们的建立和使用;

第3章讨论抽象数据对象本身的状态和变化,相关的模块化的问题及其在计算实践中的重要性;

第4章讨论元语言抽象,也就是设计和实现面向应用的新语言的问题;

第5章可以看作前面讨论的应用,而应用的对象问题就是JavaScript语言在寄存器机器上的实现。这里的寄存器机器是现代计算机的抽象模型,这里的讨论也说明了抽象的高级语言如何落地。

读者现在拿在手里的这本书是SICP的一个改编本(SCIP JS)。与SICP的不同之处,就在于这个改编本用更多计算机工作者熟悉的JavaScript语言作为讨论的工具,而没有用原SICP里使用的Scheme语言。因此,这里程序实例的形式更接近各种常规的编程语言,可能更容易被更多读者接受。本书的内容是原SICP的翻版,作者编写本书的基本目标是尽可能完整准确地反映原书的宗旨和精神,同时又使这些能被更多的人理解和重视。
图片

书号: 9787111734635 书号:9787111734635 书号:9787111734635

出版时间: 2024 − 02 − 01 出版时间:2024-02-01 出版时间:20240201

由于本书的根源和作者的意图,本书的基本内容和结构都来自SICP,许多一般性的讨论直接来自原书,但也有许多地方针对JavaScript做了一些调整和修改。本书比较好地反映了SICP的思想,是一本非常好的学习计算机科学技术的读物,值得每一个关心计算机领域,并有心在这个领域中深入学习和努力工作的人士阅读学习。

正如作者所言,这本书并不想作为JavaScript的入门教科书。书中对JavaScript语言的介绍远非完整,读者不应该希冀通过阅读本书学习JavaScript编程。但另一方面,由于本书的宗旨和内容,对它的学习一定会有助于读者学习JavaScript(一般而言,学习任何常见的编程语言,如Java、Python或C)。如果读者学过JavaScript(或其他编程语言),阅读这本书能帮助你更好地理解程序设计和一般的软件开发,从而有可能在这些领域中做得更出色、更高效、更得心应手。如果本书是你学习计算机科学技术的第一本书(或者学的第一门课),这段学习经历能为你今后的学习建立一个坚实的基础,帮助你更顺利地度过这段专业学习。无论如何,认真地阅读这本书,都是一件非常值得做的事情。

对于本书的学习,必须和相应的实际编程、用计算机解决问题的实践相结合。只读不做,当然不可能真正领悟计算机科学技术的真谛。另一方面,只是抄录、运行和试验书中给出代码,也不能得到其中的真传。作为这本书的真正有心的读者,你必须亲自一次次地经历使用计算机(通过编程)解决问题的实践过程。本书的作者已经为读者提供了学习所需的许多材料和资源,希望读者好好利用。

适读人群

  • 计算机、电子工程及相关专业本科生

目 录

Structure and Interpretation of Computer Programs: JavaScript Edition
译者序
序言
1984年版《计算机程序的构造和解释》的原序
前言
1996SICP2版的前言
1984SICP1版的前言
致谢
1996SICP2版的致谢
第1章 构造函数抽象1
1.1 程序设计的基本元素2
1.1.1 表达式3
1.1.2 命名和环境4
1.1.3 运算符组合式的求值5
1.1.4 复合函数6
1.1.5 函数应用的代换模型8
1.1.6 条件表达式和谓词11
1.1.7 实例:用牛顿法求平方根14
1.1.8 函数作为黑箱抽象17
1.2 函数与它们产生的计算20
1.2.1 线性递归和迭代21
1.2.2 树形递归24
1.2.3 增长的阶28
1.2.4 求幂29
1.2.5 最大公约数31
1.2.6 实例:素数检测33
1.3 用高阶函数做抽象37
1.3.1 函数作为参数37
1.3.2 用lambda表达式构造函数41
1.3.3 函数作为通用的方法45
1.3.4 函数作为返回值482章 构造数据抽象54
2.1 初识数据抽象56
2.1.1 实例:有理数的算术运算56
2.1.2 抽象屏障59
2.1.3 数据是什么意思?61
2.1.4 扩展练习:区间算术63
2.2 层次性数据和闭包性质65
2.2.1 序列的表示66
2.2.2 层次结构72
2.2.3 序列作为约定的接口76
2.2.4 实例:一个图形语言86
2.3 符号数据96
2.3.1 字符串96
2.3.2 实例:符号求导97
2.3.3 实例:集合的表示102
2.3.4 实例:Huffman编码树108
2.4 抽象数据的多重表示114
2.4.1 复数的表示115
2.4.2 带标签数据118
2.4.3 数据导向的程序设计和可加性121
2.5 包含通用型操作的系统127
2.5.1 通用型算术运算128
2.5.2 不同类型数据的组合131
2.5.3 实例:符号代数1363章 模块化、对象和状态146
3.1 赋值和局部状态146
3.1.1 局部状态变量147
3.1.2 引进赋值带来的利益152
3.1.3 引进赋值的代价155
3.2 求值的环境模型159
3.2.1 求值规则160
3.2.2 简单函数的应用163
3.2.3 框架作为局部状态的仓库165
3.2.4 内部定义169
3.3 用变动数据建模172
3.3.1 可变的表结构172
3.3.2 队列的表示179
3.3.3 表格的表示182
3.3.4 数字电路模拟器187
3.3.5 约束传播196
3.4 并发:时间是一个本质问题205
3.4.1 并发系统中时间的性质206
3.4.2 控制并发的机制209
3.5 流218
3.5.1 流作为延迟的表219
3.5.2 无穷流225
3.5.3 流计算模式的应用230
3.5.4 流和延迟求值238
3.5.5 函数式程序的模块化和对象的模块化2424章 元语言抽象246
4.1 元循环求值器248
4.1.1 求值器的核心部分249
4.1.2 组件的表示254
4.1.3 求值器的数据结构263
4.1.4 把求值器作为程序运行267
4.1.5 以数据为程序270
4.1.6 内部声明272
4.1.7 分离语法分析与执行275
4.2 惰性求值280
4.2.1 正则序和应用序280
4.2.2 采用惰性求值的解释器281
4.2.3 流作为惰性的表288
4.3 非确定性计算289
4.3.1 搜索和amb291
4.3.2 非确定性程序实例294
4.3.3 实现amb求值器300
4.4 逻辑程序设计309
4.4.1 演绎式信息检索311
4.4.2 查询系统如何工作320
4.4.3 逻辑程序设计是数理逻辑吗?326
4.4.4 实现查询系统3305章 寄存器机器里的计算350
5.1 寄存器机器的设计351
5.1.1 一种描述寄存器机器的语言352
5.1.2 机器设计的抽象355
5.1.3 子程序357
5.1.4 使用栈实现递归360
5.1.5 指令总结364
5.2 寄存器机器的模拟器365
5.2.1 机器模型366
5.2.2 汇编器369
5.2.3 指令和它们的执行函数372
5.2.4 监视机器执行378
5.3 存储分配和废料收集380
5.3.1 把存储器看作向量380
5.3.2 维持一种无穷存储的假象384
5.4 显式控制的求值器389
5.4.1 分派器和基本求值390
5.4.2 函数应用的求值393
5.4.3 块结构、赋值和声明400
5.4.4 求值器的运行401
5.5 编译405
5.5.1 编译器的结构407
5.5.2 组件的编译411
5.5.3 编译函数应用和返回语句417
5.5.4 指令序列的组合423
5.5.5 编译代码的实例426
5.5.6 词法地址433
5.5.7 将编译代码与求值器接口435
参考文献441
索引447
练习列表490

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/529121.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Microsoft SQL Server 编写汉字转拼音函数

目录 应用场景 举例 函数实现 小结 应用场景 在搜索应用中,我们一般会提供一个搜索框,输入关健字,点击查询按钮以获取结果数据。大部分情况我们会提供模糊查询的形式以在一个或多个字段进行搜索以获取结果。这样可以简化用户的操作&…

C语言---单身狗问题

1.单身狗初阶 这个题目就是数组里面有一串数字,都是成对存在的,只有一个数字只出现了一次,请你找出来 (1)异或是满足交换律的,两个相同的数字异或之后是0; (2)让0和每个…

【玩转Linux】有关Linux权限

目录 一.Linux权限的概念 1. 权限的本质 2.Linux中的用户 3.Linux中的权限管理 (1)文件访问者的分类 (2)文件类型和访问权限(事物属性) ①文件基本权限 ②文件权限值的表示方法 (3)文件访问权限的相关设置方法 ① 用 户 表 示 符 / - 权 …

论文阅读《FENET: FOCUSING ENHANCED NETWORK FOR LANE DETECTION》

ABSTRACT 受人类驾驶专注力的启发,这项研究开创性地利用聚焦采样(Focusing Sampling)、部分视野评估(Partial Field of View Evaluation)、增强型 FPN 架构和定向 IoU 损失(Directional IoU Loss&#xff…

什么是PLC远程控制模块?

随着工业自动化的不断发展,可编程逻辑控制器(PLC)已成为现代工业设备中不可或缺的核心组件。然而,传统的PLC管理方式往往受限于现场操作和维护,难以满足日益复杂的工业需求。在这一背景下,PLC远程控制模块应…

ModuleNotFoundError: No module named ‘sklearn.cross_validation‘

一、问题分析 ModuleNotFoundError: No module named sklearn.cross_validation 英文先翻译一遍,模块未找到问题,这里涉及到sklearn这个模块,Sklearn (全称 SciKit-Learn),是基于 Python 语言的机器学习工…

【MATLAB第98期】基于MATLAB的MonteCarlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型(有目标函数)

【MATLAB第98期】基于MATLAB的Monte Carlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型(有目标函数)【更新中】 PS:因内容涉及较多,所以一时半会更新不完 后期会将相关原理,以及多种功能详细介绍。 麻烦点赞收藏&#…

MySQl基础入门⑦

上一章知识内容 分析数据且区分数据类型 看下表分析数据的特征,根据其特征确定相应的数据类型。 分析以上表格特征,确定数据类型,并对数据进行分类。分析数据后按固定长度字符串、可变长度字符串、整数、固定精度小数和日期时间数据类型对数…

windows安装ElasticSearch踩坑记

ElasticSearch是一个开源的分布式搜索和分析引擎。它提供实时分布式搜索功能,可以索引和搜索大量的结构化和非结构化数据。Elasticsearch以其速度、可伸缩性和处理复杂查询的能力而闻名。它常用于日志分析、全文搜索、文档搜索和数据分析等领域。使用ElasticSearch的…

【软件测试面试】银行项目测试面试题+答案(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试题&#xff1…

【数据库】软件测试之MySQL数据库练习题目

有表如下: Student 学生表 SC 成绩表 Course 课程表 Teacher 老师表 每个学生可以学习多门课程,每一个课程都有得分,每一门课程都有老师来教,一个老师可以教多个学生 1、查询姓‘朱’的学生名单 select * from Student whe…

第二证券:港股通交易股票范围详解:哪些股票可以买卖?

港股通现在能够出资的股票有:①恒生归纳大型股指数的成分股;②恒生归纳中型股指数的成分股;③在沪市上市生意的AH股上市公司的H股。 注意:港股通标的并不是原封不动的,它每半年调整一次,被调出港股通标的的…