Structure and Interpretation of Computer Programs
By Harold Abelson and Gerald Jay Sussman
This is regarded as one of the best, most essential programming texts of all time, and “has had a dramatic impact on computer science curricula”. It’s been around for a while, and has acquired a bit of a love/hate patina; it seems that while few serious programmers deny its mind-blowing value, it’s not exactly approachable for beginners, and can turn off those for whom the mind-blowingness hurts. I’m not equipped to evaluate whether or not the material is dated, or how it does or doesn’t succeed for different instructional goals, but I do know any CS book with five-star reviews from Peter Norvig and Paul Graham must deserve the hype.
Here’s Norvig on what’s special about SICP: “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.”
So no, it certainly doesn’t seem like a hand-holding sort of text: Chapter 1 jumps straight into “Building Abstractions with Procedures” and doesn’t seem to let up. It talks about data, modularity and state, metalinguistic abstraction, and plenty other topics related to computation , algorithmic procedures, representation and abstraction…including, of course, plenty of topics (just looking at the many chapter subheadings here) that are thus far barely a notch above meaningless to me.
While the book is surely way over my head, and I don’t intend to read it until I get a better grounding in programming, on one level I’m kind of thrilled by the challenge of someday reading it (or even reading it soon just to see what I can and can’t grok). This actually may not be a directly useful book to read, in that it won’t show me how to get hired as a web developer (etc.) — but I think it could be an awesome, if daunting, way to gain a deeper appreciation of this kind of technical material.