《计算机程序的构造和解释》是2004年2来自月2月1日机械工业出版社出版的图书,作者是Harold Abe村品要紧决云今英lson、 Gerald Jay Sussman、Julie Sus360百科sman ,译者是裘宗燕。
展律没根脚本书1984年出版(第一,第二版封面),成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,本书对于计算机科学的教育计划产生了深刻的影响。
计算机程序的构造和解释第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相源距看组应的修改。
本书自出版以来,世界各地已有1酸00多所院校采用本书做教材,其中包括美单菜容不国斯坦福大学、美国普林斯营九纪况顿大学、英国牛津大学、日本东京大学等。
Harold Abelson是MIT1992年度来自MacVicarFacultyFellow。Gerald Ja始ySussman是Matsushita电子工程教授。他们都在MIT电子工程和计算机科学系工作.都得到过最重要的计算机科学教育奖:如Abelson得到了IEEE计算机学会的Booth奖。Sussman得到了ACM的Karlstrom奖由运听。Julie Sussman是作家和编辑,同时使用自然语言和计算机语言写作。 每一位示入准假这绝才那乙慢严肃的计算机科学家都应该阅读这本书。由于本书清晰、简洁和富于才智,我们强烈推荐本书,它适合所有希望深刻理解计算机科学的人们。--Mi360百科tchell Wand
《美国科学家》杂志
网友评价:
1. 涵盖面很广。从数据抽象、过程抽象、迭代、高阶函数等编程和控制系统复杂性的思想,到数据结构和算法,到编译器/解释器、编程语言设计。MIT这门课的课程讲义(在MIT OCW里可找到)里还增杂浓天加了面向对象编程的内容。虽然很多内容涉及并不深每牛位承及缺规顺入,但是这是MIT EECS(电子工程与计算机科学系)的第一门专业基础课(6.001),也就是说MIT计算机专业的学生在进入大学之后,在这门课之前没有上过其它编程、软件、计算机方面的课程。从这个角度看,起点是非常高的。其它大学的学生在倒腾C语言的时候,MIT的件学生在思考设计语言和系统。
2. 用解释语言而不是编译语言来阐述思想,简化了数据类型、运行环境相关的一些细节,另外Scheme/Lisp有着极其简练、但功能极其强大和灵活的语法,这些都使阅读者更多地将来自精力集中在思想上,而不是语法细节上,颇为适合学习,只是Scheme的执行效率可能较低,360百科表达力可能不够"丰富",不一主获乐所玉跳字定适合于实际开发。
3. MIT OCW 6.001里有几个project,都很有意思。其中一个是设计一个类似于Google使用径境清量委研状保的web爬虫!虽然实际上没这么可怕,做了很多简化,集中在树的遍历与索引表的建立和查询上,但是仍然可以从中看出教授的视野和对学生的要求。
4. 现在MIT EECS已经取消了这门课,6.001的EECS介绍性货旧取积玉技续功能被6.01和6.02两士交内名总促总米便民门课程替代,另外新增了6.0师却随引向05(软件),6.006(算法),是不是因为6.001起点太高或有点偏呢?(对于EE方向的学生来说似乎有点偏。)尽管如此,作为一门在MIT EECS教授了20多年的经典课程,仍然有其价值。
5. MIT EECS没有专门教授C、C++、Java等编程语言的课,一般都是要求学生用很短的时间自学。比如6.004要用到C,6.005要用到Java,6害.006要用的Python,教授会要求学生在课程开始的几个星期内自学掌握这些语言。
切林销求随板四省扩火6. SICP中译本翻译所黄但无宜儿乎春有些问题。比如表述符号(变量)和值的binding关系时,binding一词应翻译成"绑定",而不是"约束"。
7初兰态够主守. MIT Scheme相当难用试料兰程劳笑朝许,简直是石器时代的开发工具:)(指编辑和解释器,不胜州算还磁谁有是语言)。
8.有人说看这本书主要看第四第五章。这不是一件容易的事情,尤其对于我们这个计算机教育落后的国家。好在还有平易近人的一二良固助责值供帝火旧三章,基本上可以在网上找全习题答案。
9.有人说scheme是程序设计语言中的皇后,更多的人从来没见过这条恐龙。打工族翻上几页后的第一个感觉是,这本书到底有什么用?如果你对数据结构算法编译原理模块设计足够自信,如果你的日常工作是复制粘贴字东方符串并且很满意这个结果,再或者如果你是mit的电建现杂贵宁争评首跳陈活子工程学士,算啦。
还密 10.最后有一点,全部的习题能不落下尽量做,数量很多,主要是需要很多的时间思考,收获也不是一般的
出版者的话
专家指导委员会
翻译版本的图书封面序
第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 编译
参考文献
练习表
索引