Skip to content
Hardcover Structure and Interpretation of Computer Programs Book

ISBN: 0070004846

ISBN13: 9780070004849

Structure and Interpretation of Computer Programs

(Part of the MIT Electrical Engineering and Computer Science Series)

Select Format

Select Condition ThriftBooks Help Icon


Format: Hardcover

Condition: Acceptable

Save $121.21!
List Price $148.00

1 Available

Book Overview

Emphasizes the central role played by different approaches to dealing with time in computational models. This work is an introduction to computer science courses, as well as programming languages and program design.

Customer Reviews

5 ratings

The Classic

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?

Its the Best! Its the Worst! Why the split?

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.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.Donald Knuth says he wrote his books for "the one person in 50 who has this strange

Fantastic book, but not for beginners

The reviews of this book are just hilarious; I've never seen a book with reviews so sharply polarized between one and five stars. I think the reason for this is that most of the one-star reviewers had this book rammed down their throats in an introductory CS course, and it blew their minds. This doesn't surprise me; despite the fact that the book is meant to be an introduction to computer science, for most students it will be just too abstract and too difficult. I've been programming for over ten years, and I had to work really hard to understand a lot of the concepts presented here. Nevertheless, I think this is a great book because it discusses lots of ideas that receive inadequate or no coverage elsewhere. The material on compilers, for instance, is difficult (and idiosyncratic because they're compiling scheme, which has its own pecularities compared to, say, compiling C) but if you can work through it you get a pretty deep understanding of what's going on, without having to get bogged down in parsing or other trivial stuff. My suggestion: DO NOT read this book if you are just learning how to program; come back to it after a few years of experience and it will stretch your mind. Also, if you're having trouble I recommend Harvey and Wright's "Simply Scheme" as a much gentler introduction to the same material.

Lots of useful material here

The reviews here that complain that there isn't anything to learn in SICP, or that there aren't any ideas, or that there's nothing but philosophizing and handwaving, are bizarre. SICP is full of detailed, complete examples of parsers, interpreters, compilers, and digital simulators. It shows how to build your own object-oriented programming system from scratch. It shows how to construct a extensible database query language with a backtracking search to find the answers to complex queries. It shows how to build an optimizing compiler. Sure, none of this is useful---if your goal in life is to grind out CGI scripts. If that's who you are, this book definitely isn't for you. But the folks who don't recognize the SICP examples as real, practical programming projects are living in a funny little fantasy world. They might use the optimizing compiler every day, but it doesn't occur to them that someone actually had to write that optimizing compiler. Nope, code generation and peephole optimization techniques are not applicable to the real world because `nobody' writes compilers.Every one of these big, complex programs is explained in detail, with *complete* code examples. You can type them all in and run them. These are big projects, and there's a lot of code, so you shouldn't expect to understand any of the examples on the first glance; you have to study it closely to understand how the parts interact.If you're looking for silly little toy examples that fit on one page, this definitely isn't the book that you want. I get the feeling that a lot of the one-star folks are after little toy examples. Maybe they want a CGI hit counter or something. I don't know how well this book works as an introductory book; I had already been programming for about fifteen years when I first read SICP. So perhaps the criticisms that it isn't properly aimed at beginners are on target. But the other criticisms, that say that ``There is absolutely nothing interesting here. Just a couple of bored MIT professors trying to teach extremely boring and pointless concepts'' really miss the mark. Sure, building an object-oriented programming system is a boring and pointless concept---if you happen to be a ditchdigger. But what if you want to be the person who constructs OO programming systems? Or what if you want to extend the OO system you usually use with new features? What if you *don't* want to open up a can of precooked beans and heat them up on the stove?There are two kinds of reviews on this page. One kind is from people who say that the book is pointless and there's nothing useful. The other kind is from people who say that the book is full of useful, concrete examples.Maybe the people who found the book useful were suckered. But how can you trick someone into thinking that something pointless and empty is actually useful? That's a hard trick to play! How could there be so many people wakling around, doing their progr


The negative reviewers entirely missed the point of this book. The issues are not c++ versus scheme, nor the gap between the book's examples and real-world programs, nor that recursion is less intuitive than looping.The real point is to teach some very core foundations of computer science that show up everywhere. For example, supposedly revolutionary XML looks a heck of a lot like a nested scheme list, first described in 1960. And processing an active server page (or Java server page) is very much like the textbook's specialized language evaluator. Finally, c++ polymorphism through vtables and part of Microsoft's COM mechanics are the exact same thing as the book's data-directed programming section.This is very deep material for a programming newbie to learn outside a course, but for an experienced nerd who's looking for a systematic framework, it's absolutely terrific. I had done lots of lisp and compiler work before reading the book, so many of the concepts were not new. But it's with this framework in mind that I learn new technologies, and this approach greatly speeds up how long it takes to understand each week's "new" hot product/language/tool/mindset. Put another way: why do so many popular computer books take 1000 pages to describe a few trivial concepts?
Copyright © 2022 Terms of Use | Privacy Policy | Do Not Sell My Personal Information | Cookie Preferences | Accessibility Statement
ThriftBooks® and the ThriftBooks® logo are registered trademarks of Thrift Books Global, LLC
GoDaddy Verified and Secured