One of my goals for this year is to work through Structure and Interpretation of Computer Programs (otherwise known as SICP, or the Wizard Book). It’s been on my radar for a while, and I’ve made a few aborted attempts in the past, but in my present state of being happily jobless I actually have enough spare time to give it the attention it deserves. As a form of preparation, I’ve already worked through The Little Schemer and The Seasoned Schemer. At the time of writing, I’m only part of the way through chapter 2 of SICP, so I still have a long way to go!
My desire to read this book formed gradually, as I read more and more quotes from people who’d worked through it. The book uses the Scheme programming language (a dialect of Lisp), and I think my curiosity was first piqued towards Lisp by mentions like these:
LISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.
– Eric S Raymond
The reward for your efforts will be an equivocal one: you will feel as suffocated programming in C++ as an experienced programmer would feel programming in BASIC. It’s more encouraging, perhaps, if we think about where this feeling comes from. Basic is suffocating to someone used to C++ because an experienced C++ programmer knows techniques that are impossible to express in Basic. Likewise, learning Lisp will teach you more than just a new language – it will teach you new and more powerful ways of thinking about programs.
– Paul Graham (from the introduction to ANSI Common Lisp)
Then I began hearing about this book called Structure and Interpretation of Computer Programs:
…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.
– Peter Norvig (from his Amazon review)
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.
– Paul Graham (from his Amazon review)
It is by far the best programming book I have ever laid my hands on, and I seriously doubt that it will be surpassed any time soon. Reading SICP will enlighten you as a programmer, and make you a better one. I can’t imagine one programmer who won’t gain something important by reading SICP.
– Eli Bendersky
SICP is about standing back from the details to learn big-picture ways to think about the programming process.
– Brian Harvey
The programming equivalent of Tai Chi: it moves slowly, is harder than it seems at first, and most people get fed up with it after a short time, but if you stick to it, it gives truly impressive results.
– Jay Osako (from http://c2.com/cgi/wiki?StructureAndInterpretationOfComputerPrograms)
To me, this book was nothing short of a revelation. It made me think of computer programs on a higher plane.
– Alain Picard (from http://c2.com/cgi/wiki?StructureAndInterpretationOfComputerPrograms)
By the second chapter computer programming had finally made sense to me, and by the third I had decided to study mathematics in university.
– Vladimir Sedach (from Lisp Hackers)
Once you’ve read quotes like these, it’s very hard to avoid wanting to work through the book to find out what all the fuss is about!