I began a quest to read the whole SICP book (Structure and Interpretation of Computer Programs, available online here).
The plan is to:
- Read the book
- See all the video lectures by Sussman and Abelson themselves (available from here)
- Do most of the interesting exercises in the book
- Do some of the larger projects listed here and here
In order to stay faithful to this endeavor, I will post into this SICP category of my blog the “reading notes” – insights gained from the book, solutions to exercises and so on.
A minor twist: I will do all the exercises and projects in Common Lisp, instead of Scheme. The differences aren’t big, but I generally prefer CL to Scheme. Besides, this will ensure that I won’t just copy the code from the book mindlessly, but will rewrite it in CL – which will give me another chance to think it through.
There are several differences between Scheme and Common Lisp. Most of them are very minor, but there is a major one that is worth attention – Scheme is a single namespace Lisp (Lisp-1), while Common Lisp has two separate namespaces, for non-functions and for functions (Lisp-2). This is summed up nicely here, with a much more thorough discussion here, so I won’t dwell on the topic, but I might refer to it later when I present actual code.
Update (31.08.2007): I’ve decided to implement some of the exercises in Scheme, using PLT Scheme. Funny how quickly preferences change. While this post states that I prefer CL to Scheme, it kind-of turned around once I discovered PLT Scheme and worked with it a bit. Using both languages interchangeably will give me a good base of comparison.