I just finished re-reading The Little Schemer by Daniel Friedman and Matthias Felleisen, this time working through the exercises in a Scheme interpreter (mostly mit-scheme but occasionally I opened up the DrScheme debugger, which was quite useful for exploring continuations and for bouncing around in the interpreter from the final chapter). It is one of the most delightful books I have ever read, programming related or otherwise, so I’d be remiss not to share my thoughts here.
The tone is very light-hearted, and while the Socratic question-and-answer style is a little strange at first, I think in the end it works quite well. Serious programmers should not cast it aside because it is so didactic or even because it starts out easy if you’ve studied recursion even a little bit. The last three or four chapters are what you are paying for.
The authors do not hold back here, and present such ambitious and interesting topics as the halting problem, Church numerals, a derivation of the Y combinator, continuations, and in the final chapter build a simple Scheme interpreter. There is plenty here to captivate any programmer with a little curiosity or anyone else who might be interested in why computing is a worthy subject.
This book is part of what drove my renewed interest in Scheme, Lisp and functional programming and really in Computer Science and programming in general, and lead me to pick up its sequel, The Seasoned Schemer, as well as start reading The Structure and Interpretation of Computer Programs (more on that later). I wish I had read it earlier, but in some ways maybe I found it at just the right moment, when I was in need of being reinvigorated.
I owe Douglas Crockford for finding this, after reading the glowing review on his site I was intrigued and bought it sort of on a whim. I haven’t read the third book in the series yet, but it’s definitely high on my list, as is the authors’ book on ML. I will probably re-read The Seasoned Schemer again soon, and spend some more time gushing about it then.