计算机程序的构造和解释(原书第2版)

[美] Harold Abelson

出版时间

2019-06-30

ISBN

9787111630548

评分

★★★★★

标签

编程

书籍介绍

本书曾是美国麻省理工学院计算机科学专业的入门课程教材之一,从理论上讲解计算机程序的创建、执行和研究。主要内容包括:构造过程抽象,构造数据抽象,模块化、对象和状态,元语言抽象,寄存器机器里的计算等。

AI导读
核心看点
  • MIT经典教材,重塑计算思维
  • 深入讲解过程与数据抽象
  • 涵盖元语言抽象与解释器
适合谁读
  • 计算机专业学生及教师
  • 渴望提升编程内功的开发者
  • 对编程语言设计感兴趣的极客
读前提醒
  • 翻译质量争议大,建议读英文原版
  • 配合MIT公开课视频学习效果更佳
  • 习题极具挑战,务必动手实践
读者共识
  • 公认的经典神作,评分极高
  • 能极大提升抽象思维能力
  • 阅读门槛高,需耐心坚持

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "将数值作为"简单数据"看待实际上完全是作为一种虚张声势.事实上,对于数值的处理是任何程序设计语言里最错综复杂而且也最迷惑人的事项之一.其中涉及的典型问题包括: 某些计算机系统区分了整数(例如2)和实数(例如2.71).那么实数2.00和整数2不同吗?用于整数的算术运算是否与用于实数的运算相同呢?用6除以2的结果是3还是3.0?我们可以表示的最大的数是多少?最多能表示的精度包含了多少个十进制位?整数的表示范围与实数一样吗?......"
  • "虽然代换模型看起来似乎非常简单,但令人吃惊的是,给出代换过程的严格数学定义却异常复杂.问题在于,用作过程中形式参数的名字,可能会与该过程可能应用的那些表达式中的(同样)名字相互混淆.在逻辑和程序设计的语义学文献里,关于代换的充满错误的定义有一个很长的历史."
  • "说明性描述和行动性描述有着内在的联系,就像数学和计算机科学有内在的联系一样.举个例子,说一个程序产生的结果"正确",就是给出了一个有关该程序性质的说明性语句.存在着大量的研究工作,其目标就是创建起一些技术,设法证明一个程序是正确的.在这一领域中有许多技术性困难,究其根源,都出自需要在行动性语句(程序是有它们构造起来的)和说明性语句(它们可以用于推导出某些结果)之间转来转去"
  • "术语"闭包"来自于抽象代数,在抽象代数里,一集元素称为在某个运算(操作)之下封闭,如果将该运算作用于这一集合的元素,产生出的仍然是该集合里的元素.然而lisp社团(很不幸)还用术语"闭包"描述另一个与此毫不相干的概念.闭包也是一种为带有自由变量的过程而用的实现技术.本书没有采用闭包这一术语的第二种意义."
  • "...开发出一种有用的,具有一般意义的框架,以描述不同类型的对象之间的关系(这在哲学中称为"本体论").看来是一件极其困难的工作.在10年前存在的混乱和今天存在的混乱之间的主要差异在于,今天已经有了一批各式各样的并不合适的本体理论,它们已经被嵌入到数量过多而又先天不足的各种程序设计语言里.举例来说,面向对象语言的大部分复杂性---以及当前各种面向对象语言之间细微的而且使人迷惑的差异的核心,就是对类型之间通用型操作的处理....事实上,我们的猜想是,如果没有知识表示和自动推理工作的帮助,这些问题是无法仅仅通过计算机语言设计的方式合理处理的."
  • "在处理变动数据对象的共享问题时,最微妙的地方正好就反应了3.1.3节里提出的有关"同一"和"变化"的基本问题.我们在那里说过,如果希望这个语言里容许做修改,那么每个复合对象就必须有一个"标识",这应该是某种不同于构造起它的那些片段的东西.在lisp里,我们所认为的"同一"也就是检查课题之间的eq?,采用指针相等表示.这是因为在大部分lisp实现里,一个指针本质就是一个存储地址,在这里"解决"对象标识的方式,是假设数据对象"本身"也是一些信息,存储在计算机中某一些特定的存储位置,对于简单的lisp程序而言,这也就足够了.但是这并不是解决计算模型中"同一"问题的一般性方法."
  • "物理中也类似,当我们观察一个正在移动的粒子时,我们说该粒子的位置(状态)正在变化,然而,从粒子的世界线的观点看,这里根本就不涉及任何变化"
  • "对象模型对世界的近似在于将其分割为独立的片段,函数式模型则不是沿着对象的边界去做模块化。当“对象”之间不共享的状态远远大于它们所共享的状态时,对象模型就特别好用。这种对象观点失效的一个地方就是量子力学,在那里,将物体看做独立粒子就会导致悖论和混乱。将对象观点和函数式观点合并可能与程序设计的关系不大,而是与基本认识论有关的论题。"
作者简介
Harold Abelson 是MIT 1992年度 MacVicar Faculty Fellow。在MIT电子工程和计算机科学系工作,得到过重要的计算机科学教育奖——IEEE计算机学会的Booth奖。 Gerald Jay Sussman 是 Matsushita 电子工程教授。在MIT电子工程和计算机科学系工作,得到过重要的计算机科学教育奖——ACM 的 Karlstrom 奖。 Julie Sussman 是作家和编辑,同时使用自然语言和计算机语言写作。
目录
出版者的话
第2版前言
第1版前言
致谢

显示全部
用户评论
我只想问问,翻译还是和第一版那样狗屎吗?
python版本
抽象以及好多scala的影子
前排提醒,翻译的像狗屎一样,读起来就像吃屎,根本读不下去,滚去读英文版了。
下载
收藏