Tuesday, 2 September 2008

There's roughly 400 programming books on my bookshelf. If I had to reduce it to just five, here are the books I just couldn't live without.

Introduction to Algorithms - Cormen, Leiserson, Rivest & Stein. This programming book provides in depth yet accessible coverage of many algorithms. If I want to get the job done as quickly and painfree as possible, I reach for Introduction to Algorithms before Knuth's The Art of Computer Programming every time.

Fundamentals of Operating Systems - Lister. The way the structure of this book mirrors the structure of an operating system makes it an easier point of reference than books such as Krakowiak's Principles of Operating Systems.

Advanced Spectrum FORTH - Thomasson. Depite being written for a sadly obsolete platform, Advanced Spectrum FORTH remains one of the best FORTH programming books. The source code for the dictionary provides a valuable resource.

I find it quite strange that the books everyone claims they "could not do without" are probably the least likely to be used in any given month. Yeah, I have TAOCP on my shelf too, and the last time I actually blew the dust off and read a few pages was over a decade ago when I was writing crypto code and needed some tight math loops in the days before crypto/math libraries were widely available and trustworthy.

No, you are not digging into SICP for new insights this month, you are not referring to CLRS (because you are using the same algorithms you always use), and anyone claiming that they are writing their own compiler is either a bad liar or deluded.

These may be classics, and everyone should read them at least once, but these are books whose location at the library you should know; these are not books that should be on your bookshelf. The only reason they are on your bookshelf is so that you can do some subtle bragging to others who might see them there...

The text of SICP is available free from MIT Press, there are also sets of downloadable course-lecture videos (along with course notes, etc.). Various people have blogged about going through SICP and some people have done the problems in other languages.