具体描述
《计算机程序的构造和解释(原书第2版)》1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,《计算机程序的构造和解释(原书第2版)》对于计算机科学的教育计划产生了深刻的影响。第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。
海报:
作者简介
Harold Abelson是MIT1992年度MacVicarFacultyFellow。Gerald JaySussman是Matsushita电子工程教授。他们都在MIT电子工程和计算机科学系工作.都得到过最重要的计算机科学教育奖:如Abelson得到了IEEE计算机学会的Booth奖。Sussman得到了ACM的Karlstrom奖。
Julie Sussman是作家和编辑,同时使用自然语言和计算机语言写作。
目录信息
专家指导委员会
序
第2版前言
第1版前言
致谢
第1章 构造过程抽象
1.1 程序设计的基本元素
1.2 过程与它们所产生的计算
1.3 用高阶函数做抽象
第2章 构造数据现象
2.1 数据抽象导引
2.2 层次性数据和闭包性质
2.3 符号数据
2.4 抽象数据的多重表示
2.5 带有通用型操作的系统
第3章 模块化、对象和状态
3.1 赋值和局部状态
3.2 求值的环境模型
3.3 用变动数据做模拟
3.4 并发:时间是一个本质问题
3.5 流
第4章 元语言抽象
4.1 元循环求值器
4.2 Scheme的变形——惰性求值
4.3 Scheme的变形——非确定性计算
4.4 逻辑程序设计
第5章 寄存器机器里的计算
5.1 寄存器机器的设计
5.2 一个寄存器机器模拟器
5.3 存储分配和废料收集
5.4 显式控制的求值器
5.5 编译
参考文献
练习表
索引
· · · · · · (收起)
读后感
我正在读这本书,书中的所传达的计算机程序的理念实在厉害啦。 想想这六年多工作中的所遇到困惑,真的希望在刚开始的时候就是得到这本书的指引! 不过真的强烈建议看原版。 当看到翻译的把 To 翻译成 去,我当时就崩溃啦。 现在看原版中。 还有一点,一定要做练习题!现在...
读书时隔一年,我才发现这本书在讲什么: 一切都是浮云,编程范式才是王道 这本书几乎隐性的把主流和非主流的编程范式都介绍个遍: 过程式,泛型式,函数式,元语言,逻辑式,对象式,并发式 。。。 ...
这个学期花了大量的时间在这本书上,同时旁听了裘宗燕老师(本书译者)以本书为教材开的课“程序设计技术和方法”,到学期末,总算是把这本书看完了。 豆瓣上关于本书的评论大多是形而上的,都说这本书怎样怎样好,但很少说明为什么好。我读这本书之前看了很多豆瓣上的评论,...
上帝是魔法師,魔法師是無神論者。 圣經灌輸教義,魔法書揭示魔力。 這本書使胡言亂語的癡迷者硬起來。 這本書讓魔法師重拾一切元素盡在掌握的驕傲。 這本書寫給那些制定規則的人。
曾经发表过对此书的简短评价,如果说国内科班的计算机课程可以磨灭一个程序员真正的天性,那么这本书无疑是我们的救星。 建议可以和OCW一起学习本书,可以亲身领略Hal和Gerry两位大牛的课程是个很不错的经历。(由于Youtube被封,建议翻墙) 该书从计算机语言的本质讲起,通过L...
用户评价
从排版和印刷质量来看,这个版本略显粗糙,尤其是一些公式和伪代码的对齐问题,有时会造成阅读上的小障碍。不过,抛开这些硬件上的不足,这本书的内容核心价值是无可替代的。它真正做到的,是打通了“底层原理”与“上层应用”之间的壁垒。很多其他书籍会分别讲解语言特性和算法,但这本书却是将两者紧密地编织在一起,让你看到具体的语言构造是如何服务于抽象的计算目标。尤其是关于语言设计和解释器构建的那一部分,简直是天才之作。作者用非常巧妙的方式,将一个复杂的系统分解成一系列可管理、可理解的小块,然后展示了如何从最基础的构建模块开始,一步步地向上搭建起一个功能完备的计算环境。我强烈建议,学习这本书时,最好能同时使用一种支持多种编程范式的语言,比如Lisp或Scheme的方言,这样才能更好地体会作者所阐述的那些超越具体语法的通用概念。这本书是为那些真正想“理解机器如何思考”的人准备的。
老实说,我最初是被它在圈子里的“名声”吸引的,据说这是理解编程本质的必读之作。然而,阅读体验却带着一种奇特的反差感。这本书的叙事方式非常严谨,逻辑链条几乎找不到任何可以被挑剔的漏洞,每一个论断都建立在坚实的基础之上,像是精密的数学证明。这种严密性带来了极大的可信度,但同时也牺牲了阅读的趣味性。我发现自己经常需要停下来,反复阅读同一段话,试图捕捉作者在措辞上的微妙差异。它没有采用那种鼓动人心的、激励人心的语气,而是像一位冷静的、甚至有些冷峻的导师,把你带入一个纯粹由逻辑构成的世界。在讲解数据结构和抽象层次时,作者展现出了惊人的洞察力,他不仅仅是在描述工具,更是在剖析工具背后的思想钢印。对于那些想成为架构师或者系统设计师的人来说,这本书提供的思维模型无疑是无价之宝。但对于那些只想快速上手开发一个应用的人来说,这本书的门槛未免太高了些,它要求的不是你的键盘速度,而是你的抽象思维的深度。
这本书的封面设计倒是挺简洁的,一看就知道是那种硬核的技术书籍。我本来还期待能看到一些更具现代感的排版,但拿到手才发现,它走的是经典教科书的路线,字体偏小,页边距也比较窄,这对于长时间阅读来说,可能需要一副好眼镜。内容上,开篇对编程范式的介绍非常扎实,作者似乎对计算机科学的历史了如指掌,引经据典的功力可见一斑。不过,对于初学者来说,前几章的抽象概念铺陈得略显密集,比如函数式编程的那些基础特性,讲解得非常透彻,但缺乏足够的直观示例来辅助理解。我花了很长时间才把那些递归和高阶函数的概念真正消化吸收。它更像是一本给已经有一定编程基础,想要深入理解“为什么”而不是仅仅停留在“怎么做”的读者的工具书。如果你是那种喜欢边看边敲代码的实践型学习者,可能会觉得这本书的理论性太强,实战案例相对不足,可能需要配合其他更注重动手操作的资源一起使用,才能达到最佳的学习效果。总的来说,这是一部需要耐心和专注力才能啃下来的硬骨头,但相信能从中汲取到深厚的内力。
这本书给我的感觉,与其说是一本编程书,不如说是一本关于“计算思维”的哲学著作。我特别欣赏作者在不同编程范式之间的切换与对比。他并没有偏袒任何一种流派,而是用一套统一的、普适的原则来衡量和分析它们各自的优缺点和适用场景。比如,当他讨论状态管理和副作用时,他展现了一种近乎超然的视角,把它们放回到更宏大的计算理论背景下去审视。这本书的深度在于它迫使你思考,我们究竟在用什么来构建软件?我们对“程序”的定义是否过于狭隘了?这种思考过程是痛苦的,因为它要求你推翻或至少是重塑很多你习以为常的编程习惯。我不得不承认,在某些章节,我感觉自己像是在阅读一套复杂的说明书,需要反复查阅附录中的术语表才能跟上作者的思路。它不是一本“速查手册”,而是一场智力上的马拉松,需要你持续投入精力,才能最终抵达作者构建的那个精妙的知识体系的顶峰。
这本书的书名听起来很宏大,但实际阅读体验却是一种回归本源的清爽感。它没有紧跟最新的技术热点,这恰恰是它最大的优点——它提供的是永不过时的基石知识。我发现,每当我陷入某种特定框架或工具的细节泥潭时,回头翻阅这本书的某些章节,总能找到一个更清晰、更本质的视角来重新审视问题。作者对“抽象”的理解非常深刻,他展示了如何通过精妙的控制结构和数据表示,将复杂性有效地隐藏起来,从而使得我们可以构建出越来越强大的系统。与市面上那些教你“如何快速构建应用”的书籍相比,这本书更侧重于“如何构建一个可靠、可维护、易于理解的计算模型”。它更像是一份严谨的蓝图,而不是一份快速搭建的脚手架。我尤其喜欢它在处理错误处理和程序控制流时的论述,那种清晰的边界划分和明确的责任归属,是很多现代编程语言设计中需要反复权衡的核心问题,而这本书给出了极具启发性的思考框架。读完它,你不会立刻变得代码写得飞快,但你的代码会变得更有深度和思考。
做了前三章习题。递归用得更加顺手了。编程的气宗之书。
那么让我们用咒语来操纵这些神灵
一本书里塞这么多内容!
有时间再读一遍
SICP,尽管只读过前三章也深深体会到,这是一本启发思维的书,它燃起你编写出色程序的热情;它还将教会你认识并欣赏美;它让你有种敬畏,让你难以抑制地渴望学习更多的东西。