紫皮书(Purple Book) - 计算机程序的构造和解释

From http://www.blog.edu.cn/user2/notme/archives/2006/book.shtml
 and http://outmyth.blogdriver.com/outmyth/1122212.html

计算机程序的构造和解释(原书第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://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语言讲事,国内对于主流语言趋之若骛的大多数人恐怕不买帐。
    对于曲高和寡的著作,出版社引进就会蚀本。好在有在线版本,喜欢的人自可以免费阅读。

你可能感兴趣的:(随手笔记)