DebianJoe’s Book of the Month Club
If Oprah can have a book of the month club…
There are very few books written as long ago (mid 1980’s) regarding computer science that still carry the relevance that SICP does. While thinking about writing this post, I thought I’d check out what the general consensus on what I’d consider essential reading for almost all computer programmers, and I actually laughed at the collection of reviews. People either love or hate it, and I think that this fact deserves some discussion.
I know enough lisp to get myself into REPL trouble. Even then, I tend to use elisp or common-lisp far more often than scheme, so why would I suggest a book written about a lisp dialect that I don’t regularly use? To put it as simply as possible, SICP is far more about the way to think than the specific language used in the examples. It’s like reading jazz guitar theory, and as such has significant carry-over to any language that you may attempt to learn in the future. Also, in much the same way, every time that I pick it up and look through it again, I pick up something new.
It’s not light reading designed to read during a coffee break, and I tend to break out gnu-guile in emacs while reading it, just to play with some of the examples. If you’re just starting out writing some “Hello World” programs, it may be a bit on the heavy side to follow, although you could certainly supplement it with extensive research after a few paragraphs to help solidify the ideas. If you didn’t burn totally out, you’d certainly learn a great deal.
Essentially, the concepts being presented are about the way to use simple procedures to perform complex procedures in a systematic way. If you begin to really think about how all computer programming is the complex manipulation of a whole lot of tiny relays, then I’m sure that the value of such a concept should become apparent. There are in-depth sections on ways to deconstruct complex programs into smaller and more digestible fragments.
Also, MIT’s really great to offer the book in HTML for free, should you be so inclined to read it at http://mitpress.mit.edu/sicp/full-text/book/book.html. There are a great many resources out there for the hobbyist programmer that are probably far easier to decompose, but for the dedicated enthusiast or serious programmer, this one is certainly worth the effort to check out.