I just returned from a 10 day vacation, and the fact that I was only online through my cell phone’s GPRS connection explains why it’s been awfully quiet here. Now back with 1.5 weeks of somehow not working to go, and with a broadband connection again, I can restart the blogging habit. It’ll take me a while to get through the 1040 unread posts in my newsreader, but at least I won’t have a shortage of stuff to write about …
As usual, I took a bunch of books along on our trip. This time, I decided to dig a bit deeper into functional programming (it’s vacation, not work, you know?), so I brought some more or less theoretical stuff. First of all, The Scheme Programming Language, by R. Kent Dybvig, is the authorative work on Scheme, comparable to Kernighan Ritchie for C or Stroustrup for C++. And much like them, it’s a book that gets a lot of praise, a book that can’t be avoided if you want to seriously explore the language, and a book that I don’t think anyone will really benefit from unless they already know the language. I knew some Lisp and Scheme before, and expected to finally really gain some understanding about more advanced topics, such as continuations, but was a bit disappointed.
I liked Essentials of Programming Languages by Friedman et. al. much better. (Of course the two are not directly comparable, since they cover different topics; I mean this in a more abstract way.) The authors explore programming language concepts, such as data abstraction, types, objects and classes, continuations and continuation-passing style, using Scheme as the language to implement interpreters for languages that support these concepts. Very interesting, and much recommended.
Rather introductory, but still very much worth its money for me was Structure and Interpretation of Computer Programs, by Abelson and Sussman (also available online, thanks, Jörg). This book is the basis for MIT’s introductory computer science course — to me, pretty clearly demonstrating why MIT has such a great reputation. The most interesting aspect apart from looking at things from a fresh, functional perspective, was the chapter on Metalinguistic Abstraction. Highly recommended, whether you have programming background or not.
Apart from a whole bunch of novels (which I’ll comment on later), Paul Graham’s Hackers and Painters: Big Ideas from the Computer Age made for some great reading in between — with a range of diverse topics, from education to business to technology, it’s never boring although you might not agree with him all of the time.