Automotive Deals HPCC Amazon Fashion Learn more Discover it Look Park Fire TV Stick Health, Household and Grocery Back to School Handmade school supplies Shop-by-Room Amazon Cash Back Offer TarantinoCollection TarantinoCollection TarantinoCollection  Amazon Echo  Echo Dot  Amazon Tap  Echo Dot  Amazon Tap  Amazon Echo Starting at $49.99 All-New Kindle Oasis AutoRip in CDs & Vinyl Water Sports
Customer Review

1,490 of 1,510 people found the following review helpful
5.0 out of 5 stars Its the Best! Its the Worst! Why the split?, May 8, 2000
This review is from: Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science) (Hardcover)
I think its fascinating that there is such a split between those who love and hate this book. For most books, the review is 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 at heart 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.

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, when I was in grad school, 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 some particular problems. 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.

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.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

[Add comment]
Post a comment
To insert a product link use the format: [[ASIN:ASIN product-title]] (What's this?)
Amazon will display this name with all your submissions, including reviews and discussion posts. (Learn more)
This badge will be assigned to you and will appear along with your name.
There was an error. Please try again.
Please see the full guidelines here.

Official Comment

As a representative of this product you can post one Official Comment on this review. It will appear immediately below the review wherever it is displayed.   Learn more
The following name and badge will be shown with this comment:
 (edit name)
After clicking the Post button you will be asked to create your public name, which will be shown with all your contributions.

Is this your product?

If you are the author, artist, manufacturer or an official representative of this product, you can post an Official Comment on this review. It will appear immediately below the review wherever it is displayed.  Learn more
Otherwise, you can still post a regular comment on this review.

Is this your product?

If you are the author, artist, manufacturer or an official representative of this product, you can post an Official Comment on this review. It will appear immediately below the review wherever it is displayed.   Learn more
System timed out

We were unable to verify whether you represent the product. Please try again later, or retry now. Otherwise you can post a regular comment.

Since you previously posted an Official Comment, this comment will appear in the comment section below. You also have the option to edit your Official Comment.   Learn more
The maximum number of Official Comments have been posted. This comment will appear in the comment section below.   Learn more
Prompts for sign-in


Track comments by e-mail
Tracked by 9 customers

Sort: Oldest first | Newest first
Showing 1-10 of 22 posts in this discussion
Initial post: Dec 12, 2007 11:12:23 PM PST
M. Stone says:
<Warning: Opinion Follows>
Mr. Norvig may be too diplomatic to say this, but I think the reason there seens to be a rating peak at 1 and 5 stars, with little in between, is that those who are able to understand it are ecstatic about the worlds of understanding and programming power that it opens up to them. Those who are unable to understand it (or, more likely, unwilling to invest the thought and effort required to do so) will, as so often happens, exhibit the attitude known from Aesop's Fables as "sour grapes," and will blame the book rather than their own minds or laziness. But then, if it's not right for them, then I'm sure it's not right for others who may be reading the reviews--so while I find it disappointing, I suppose it may be for the best. Still, no doubt about it for me, it's a great and classic text. I haven't nearly absorbed it all, and I find that highly gratifying. It will thus be of value for years to come, rather than disposable.

In reply to an earlier post on Nov 27, 2008 6:01:00 AM PST
[Deleted by Amazon on Nov 16, 2009 3:08:55 PM PST]

Posted on Nov 1, 2009 2:54:54 PM PST
John Doe says:
Isn't it a bit odd how so many of the one-star reviews are written by "A Customer" instead of the usual mix of anonymous reviewers and people with names? And far more pro-SICP users seem to be voting on the helpfulness of comments and reviews. E. g. Paul Graham's review was fairly unfriendly to people who didn't like SICP but he only got about 3% unhelpful ratings. Compare that to the first two reviews of The God Delusion, which is actually less controversial if you look at the rating distribution, which each have about 15% unhelpful ratings.

Posted on Dec 16, 2009 9:33:13 AM PST
pursuing your analogy, it is also for mechanics/engineers who also possess the ability to manufacture their own gasoline.

this book requires a LOT of prior knowledge about a number of technical fields. it is NOT explicit, it is NOT clear, and it is NOT accessible. the book's argument can be better followed with help of the MIT lectures (available on the web), but even there, without a tutor, and a study group, the student's success is still in doubt.


Posted on May 20, 2010 2:41:15 PM PDT
An informative and helpful review indeed!

In reply to an earlier post on Aug 16, 2010 10:28:49 PM PDT
Nil sine magno labore:
Nothing with out great effort. Speaks for itself.

Posted on Sep 3, 2010 1:25:29 AM PDT
edf says:
"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."
"Those who hate SICP think it doesn't deliver enough tips and tricks for the amount of time it takes to read."

That attitude speaks volumes about the kind of people who are attracted to SICP. Let me respond with a generalization of my own: "The people who love SICP tend not to be the best or the smartest programmers, but they generally think they are." A distillation of my opinion on LISP programmers.

SICP has some good information in it, sure, and maybe for some people it is eye-opening, but it is not a book that I ever recommend. Why? Because it's just not that good of a book.

* The writing is obtuse. The introductory material is full of sentences that would be winning entries in the Obfuscated C contest if they were code. "A procedure is a pattern for the *local evolution* of a computational process." Right. Thanks for clearing that up -- I used to know what a procedure was.

* Scheme is a horrible choice of language. The content of the book is largely theoretical; why not use psuedocode? If the intent is to teach the functional mindset, why not use ML? Code written in LISP-based languages reads like an AST; it should be fed to a compiler, not read by a human.

* The book can't decide what it wants to be. It fails both as an introductory text (too abstract) and as a theoretical text (too specific to Scheme).

As far as I can tell, people love SICP when it has altered they way they think about programming.

If the book does not have this effect, it has little to offer the reader -- there are the first three chapters which can be summed up as "Please Use Scheme!", then a quite good chapter on DSLs (er, 'Metalinguistic Obfuscation' or whatever), and finally a rather embarrassing chapter on compiler construction.

There are better books on programming in general (the Van Roy book), better books on functional programming (Maclennan, Okasaki, etc), better books on compilers (the dragon book, Appel, Scott, etc) ... you name it, there's a better book on it. 'LISP In Small Pieces' even provides a better eye-opening LISP experience.

So, fans of SICP, stop telling yourselves that the people who didn't enjoy SICP "don't get it". It's an okay book, but what little there is to 'get' is better learned elsewhere.

In reply to an earlier post on Nov 13, 2010 10:46:03 AM PST
What elsewhere? Do you actually have another source in mind? I actually agree somewhat with the Scheme criticism, that is one reason I have not read this book yet, do you have another book, maybe oriented toward C?

In reply to an earlier post on Nov 13, 2010 11:16:14 PM PST
In my opinion this is a troll comment, but I'll take up the issue of language choice. I agree that Scheme is difficult to read, but it is possible to get used to it. It also has the great advantage of really helping to motivate the meta-circular evaluator.

In reply to an earlier post on Nov 30, 2010 5:12:24 PM PST
Last edited by the author on Dec 2, 2010 1:09:58 AM PST
edf says:
>"What elsewhere? Do you actually have another source in mind?"

I believe I mentioned the other sources, but I'll go over them again in more detail.

If you want to learn largely the same material as in SICP (namely, the interpretation of computer programs, specifically in a LISP-like language), get Lisp In Small Pieces by Queinnec. It is more clear, more practical, and doesn't invent silly terms like 'metacircular evaluator' to make simple concepts like an eval-apply loop sound more impressive.

For the same thing, but not in a LISP-like language, get The Functional Approach To Programming by Cousineau and Mauny. It uses ML (actually CAML), and covers the same ground -- even implementing a CAML interpreter in CAML -- and is, once again, written much more clearly.

If you want a better book to use for learning 'all about programming', get Concepts, Techniques, and Models of Computer Programming by Van Roy and Haridi. It uses a more readable (but admittedly less practical) language, treats programming issues of modern concern (concurrency, constraints, relations, etc), and provides a mental model for unifying all of the different styles of programming languages that are out there.

If you want to learn how programming languages (and their compilers or interpreters) actually work, in the real world and not just in Scheme-land, get Programming Language Pragmatics by Scott. In fact, get it regardless -- it is something every programmer should read (unless, of course, they already know what it covers).

If you want to learn some eye-opening aspects of functional programming, get Functional Programming: Practice and Theory by Maclennan and/or Purely Functional Data Structures by Okasaki. Both cover far more mind-expanding techniques than SICP.

For DSLs... well, this is really the only topic that SICP covers well. On Lisp by Paul Graham is good; Fowler has a new book out called Domain-Specific Languages, but I haven't read it yet so I cannot recommend it.

Finally, in regards to C... there isn't much out there, mostly because the code required to implement these ideas in C (if they can be implemented at all) would be tedious both to read and to write. The Van Roy might be your best bet, but be sure to read the first couple of chapters online (ala google books) before investing in the book.
‹ Previous 1 2 3 Next ›