|
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
资源信息:
作者: Harold Abelson, Gerald Jay Sussman, Julie Sussman
isbn: 7111135105
书名: 计算机程序的构造和解释(原书第2版)
页数: 473
译者: 裘宗燕
出版社: 机械工业出版社
装帧: 平装
出版年: 2004-02-01
又名: Structure and Interpretation of Computer Programs,Second Edition
本书1984年出版(右图分别是第一,第二版封面),成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,本书对于计算机科学的教育计划产生了深刻的影响。
第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。
本书自出版以来,世界各地已有100多所院校采用本书做教材,其中包括美国斯坦福大学、美国普林斯顿大学、英国牛津大学、日本东京大学等。
第2版前言
软件很可能确实与其他任何东西都不同,它的本意就是被抛弃:这一观点的全部就是总将它看作一个肥皂泡吗?
——Alan J.Perils
自1980年以来,本书的材料就一直在MIT作为计算机科学学科入门课程的基础。在本书第1版出版之前,我们已经用这一材料教了4年课,而到这个第2版出版,时间又过去了12年。
我们非常高兴地看到这一工作被广泛接受,并被结合到其他一些教材中。我们已经看到自己的学生掌握了本书中的思想和程序,并将它们构筑到新的计算机系统或者语言的核心里。这就在文字上实现了一个古犹太教法典的双关语,我们的学生已经变成了我们的创造者。我们非常幸运能有如此有能力的学生和如此有建树的创造者。
在准备这一新版本的过程中,我们结合进了成百条澄清性建议,它们来自我们自己的教学经验,也来自MIT和其他地方的同行们的评述。我们重新设计了本书里主要的程序设计系统中的大部分,包括通用型算术系统、解释器、寄存器机器模拟器和编译器,也重写了所有的程序实例,以保证任何符合IEEE的Scheme标准(IEEE 1990)的Scheme实现都能运行这些代码。
这一版本中强调了几个新问题,其中最重要的是有关在不同的途径中,计算模型里对于时间的处理所起的中心作用:带有状态的对象、并发程序设计、函数式程序设计、惰性求值和非确定性程序设计。这里为并发和非确定性新增加了几节,我们也设法将这一论题集成到整本书里,贯穿始终。
本书第1版基本上是按照我们在MIT一学期课程的教学大纲撰写的。由于有了第2版中增加的这些新材料,在一个学期里覆盖所有内容已经不可能了,所以教师需要从中做一些选择。
在我们自己的教学里,有时会跳过有关逻辑程序设计的一节(4.4节);让学生使用寄存器机器模拟器,但并不去讨论它的实现(5.2节);对于编译器则只给出一个粗略的概述(5.5节)。即使如此,这还是一个内容非常多的课程。一些教师可能希望只覆盖前面的三章或者四章,而将其他内容留给后续课程。
万维网站点www-mitpress.mit.edu/sicp为本书的使用者提供支持。其中包含了取自本书的程序,示例程序作业、辅助材料和Lisp的Scheme方言的可下载实现。
本书1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,本书对于计算机科学的教育计划产生了深刻的影响。
第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。
本书自出版以来,世界各地已有100多所院校采用本书做教材,其中包括美国斯坦福大学、美国普林斯顿大学、英国牛津大学、日本东京大学等。
相关网站有本书源代码及其他教辅资料,网址为:http://www-mitpress.mit.edu/sicp/
作者简介:
Harold Abelson是MIT1992年度MacVicarFacultyFellow。Gerald JaySussman是Matsushita电子工程教授。他们都在MIT电子工程和计算机科学系工作.都得到过最重要的计算机科学教育奖:如Abelson得到了IEEE计算机学会的Booth奖。Sussman得到了ACM的Karlstrom奖。
Julie Sussman是作家和编辑,同时使用自然语言和计算机语言写作。
每一位严肃的计算机科学家都应该阅读这本书。由于本书清晰、简洁和富于才智,我们强烈推荐本书,它适合所有希望深刻理解计算机科学的人们。
——Mitchell Wand[dr]
《美国科学家》杂志
计算机程序的构造和解释(原书第2版)
【原书名】 Structure and Interpretation of Computer Programs,Second Edition
【原出版社】 Massachusetts Institute of Technology
【作者】 (美)Harold Abelson,Gerald Jay Sussman,Julie Sussman
【译者】 裘宗燕
【丛书名】 计算机科学丛书
【出版社】 机械工业出版社
http://www.china-pub.com/computers/common/info.asp?id=17992
【参考资料】
相关网站有本书源代码及其他教辅资料,网址为:www-mitpress.mit.edu/sicp/
mitpress公开的在线浏览版本
http://mitpress.mit.edu/sicp/full-text/book/book.html
the homework answer
http://community.schemewiki.org/?sicp-solutions
http://inst.eecs.berkeley.edu/~cs61a/hw/index.html
http://www-inst.eecs.berkeley.edu/~cs61a/sp06/
作者授课录像下载
http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
UC Berkeley的教学录像(Spring 2004):
http://webcast.berkeley.edu/courses/archive.html?prog=40&group=57
最省事的scheme环境,初学推荐
http://www.drscheme.org/
The Scheme Programming Language, 2nd Edition
?; 1996 Prentice Hall
http://www.scheme.com/tspl2d/
备查
http://www.schemers.org/Documents/Standards/R5RS/
更多关于scheme
http://www.schemers.org/
http://www.swiss.ai.mit.edu/projects/scheme/index.html
http://readscheme.org/
http://dmoz.org/Computers/Programming/Languages/Functional/
http://directory.google.com/Top/Computers/Programming/Languages/Functional/
http://lambda-the-ultimate.org/
http://www.ai.mit.edu/research/publications/publications.shtml
开放式课程计划OOPS
http://www.cocw.net/
【评论】
紫皮书(Purple Book)!巫师书!!SICP!!!TheBook!!!!
四个名字都是这本书的昵称,“紫皮书”是因为书皮是紫的,“巫师书”是因为书皮上印着一男一女两个巫师模样的人,“SICP”就是书名几个单词的首字母,“
TheBook”是因为这本书是在scheme领域内公认的圣经,所以有此昵称
绝对是好书, 非常具有启发性.
把编译器、算法、硬件的的内容用Lisp语言联系起来。
次书是我学习CS的第一本教材(MIT的6.001),非常好。
Its the Best! Its the Worst! Why the split?, May 8, 2000
Reviewer: Peter Norvig (Palo Alto, CA USA) - See all my reviews
I think its fascinating that there is such a split between those who love and hate this book. Most reviews give a bell-shaped
curve of star ratings; this one has a peak at 1, a peak at 5, and very little in between. How could this be? I think it is
because SICP is a very personal message that works only if the reader is a computer scientist (or willing to become one). So
I agree that the book's odds of success are better if you read it after having some experience.
To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are
built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are
the ones who just want to know how to drive their car on the highway, just like everyone else.
if you want to be a real professional, you should read this
Donald Knuth says he wrote his books for "the one person in 50 who has this strange way of thinking that makes a programmer".
I think the most amazing thing about SICP is that there are so FEW people who hate it: if Knuth were right, then only 1 out
of 50 people would be giving this 5 stars, instead of about 25 out of 50. Now, a big part of the explanation is that the
audience is self-selected, and is not a representative sample. But I think part of it is because Sussman and Abelson have
succeeded grandly in communicating "this strange way of thinking" to (some but not all) people who otherwise would never get
there.
Those who hate SICP think it doesn't deliver enough tips and tricks for the amount of time it takes to read. But if you're
like me, you're not looking for one more trick, rather you're looking for a way of synthesizing what you already know, and
building a rich framework onto which you can add new learning over a career. That's what SICP has done for me. I read a draft
version of the book around 1982 and it changed the way I think about my profession. If you're a thoughtful computer scientist
(or want to be one), it will change your life too.
Some of the reviewers complain that SICP doesn't teach the basics of OO design, and so on. In a sense they are right. The
book doesn't directly tell you how to design and write an object-oriented program using the subset of object-oriented
principles that show up in the syntax of Java or C++. Rather, the book tells you what those principles are, how they came to
be selected as worthwhile, how they can be implemented from the ground up, and how a different combination of principles
might be more appropriate for a particular problem. This approach requires you to understand the range of possibilities, and
to think about trade-offs as you go through the design process. Programming is a craft that is subject to frequent failure:
many projects are started and abandoned because the designers do not have the flexibility, experience and understanding to
come up with a suitable design and implementation. SICP gives you an approach that will succeed, but it is an approach based
on principles and wisdom, not on a checklist. If you don't understand the principles, or if you are the kind of person who
wants to be given a cookbook of what to do rather than to think creatively, or if you only want to work on problems that are
pretty much like the problem you worked on last time, then this approach will not work for you. There are other approaches
that will be more reproducible for a limited range of simple problems, but there is no better way than SICP to learn how to
address the truly hard problems.
The Classic, May 20, 2000
Reviewer: paul graham (Cambridge, MA United States) - See all my reviews
This is one of the great classics of computer science. I bought my first copy 15 years ago, and I still don't feel I have
learned everything the book has to teach.
I have learned enough to write a couple books on Lisp that (currently) have four to five stars. Yet SICP, which is pretty
much the bible of our world, has only three? How can this be?
Reading the reviews made it clear what happened. An optimistic professor somewhere has been feeding SICP to undergrads who
are not ready for it. But it is encouraging to see how many thoughtful people have come forward to defend the book.
Let's see if we can put this in terms that the undergrads will understand -- a problem set:
1. Kenneth Clark said that if a lot of smart people have liked something that you don't, you should try and figure out what
they saw in it. List 10 qualities that SICP's defenders have claimed for it.
2. How is the intention of SICP different from that of Knuth? Kernighan & Ritchie? An algorithms textbook?
3. Does any other book fulfill this purpose better?
4. What other programming books first published in the mid 1980s are still relevant today?
5. Could the concepts in this book have been presented any better in a language other than Scheme?
6. Who is al? Why is his name in lowercase?
读书时曾经读过William R. Cook的文章《Object-oriented programming versus abstract data types》,当时对文章中的观点有些疑惑,当我读到
2.4抽象数据的多重表示时,顿时豁然开朗,作者谈及数据导向的程序设计和可加性时给出的图2-22复数系统的操作表与William R. Cook文中的观点非常接近。
确实是好书。好书慢慢读,如品茶、品酒,回味无穷。
如果想对书中所用的Scheme语言做进一步了解的话,可以在 http://www.drscheme.org/ 下载DrScheme解释/编译器。Scheme语言虽然另类及实际用途有
限,但却有较高的“可玩性”,主要表现在它对几类编程语言范例(paradigm) -- 过程型/面向对象型/函数型/逻辑型 -- 都能做出良好表达。
说起Comp.Sci.的读物,其实除了TAOCP、CLR外还有一本经典叫作 SICP (Structure and Interpretation of Computer Programs,俗称“紫皮书”或“巫
师书”)。MIT和UCBerkeley两大学府都指定这本书作为计算机科目的入门教材。它涉及的不是具体的数据结构和算法,而是对“计算机程序”这个概念本身的解构
/解读。“程序即思维表达”是此书传递的一个意念。由于涉及的是程序设计的抽象层面,批评者会认为这本书不够实用(这在amazon.com上读者书评中的分歧可
见一斑),但事实上很多顶尖的程序设计师都认为正是这本书帮他们“开了窍”,是一本具有高度启发性的经典。
我很喜欢SICP,但是要说推荐给出版社我却很犹豫。原因是虽然这本书追问编程的本质,对有科学探索气质的人很有吸引力,但是对于大部分忙碌的程序员来说,
恐怕觉得没有时间慢慢体会它的好处。这本书用LISP的变体SCHEME语言讲事,国内对于主流语言趋之若骛的大多数人恐怕不买帐。
对于曲高和寡的著作,出版社引进就会蚀本。好在有在线版本,喜欢的人自可以免费阅读。
|