To my astonishment, I see that it’s been a whole year since the last installment in the Programming Books series (1, Coders at Work; 2, The Elements of Programming Style; 3, Programming the Commodore 64; 4, The C Programming Language). I got distracted. But today I want to write about what I would judge the second best book on programming I’ve ever read: Jon Bentley’s Programming Pearls [amazon.com, amazon.co.uk]
I tried to write about this book once before, but I was distracted by what it has to say about binary search, and that ended up being a whole series of its own (part 3, part 4a, part 4b, part 4c). Continue reading
Back when I reviewed Peter Siebel’s fascinating book of programmer interviews, Coders at Work, Erik Anderson suggested in a comment that I might also enjoy its precursor Programmers at Work [amazon.com, amazon.co.uk]. I bought and read it, and it’s excellent. I’ll review it properly some time soon — but today I just wanted to draw attention to one segment that caught me completely off guard.
It’s 32 years old, and it remains the single greatest book ever written about a programming language. Its crown is secure; even if you’d not already read the title of this article, you’d know what book I’m talking about. It’s the only language-specific book in Top Five programming books of the Programming Reddit’s FAQ. Co-written by Reinvigorated Programmer regular Brian W. Kernighan and Dennis M. Ritchie, it’s not just the definitive book about the language in question, it’s the book the rewrote the book on what it means to be definitive. Step forward, please, The C Programming Language! [amazon.com, amazon.co.uk]
Today I want to talk about another vintage book — this one from 1985, eleven years after Kernighan and Pike’s Elements of Programing Style came out. While EoPS is largely timeless, this one has aged dramatically; but it was so important to me twenty-something years ago, and embodies an era that I remember with such fondness, that couldn’t resist writing about it.
I said in the first part of this series that one of the books I wanted to talk about was written in 1974. My colleague Dennis Schafroth guessed that it might be Kerninghan and Ritchie’s classic, The C Programming Language, but the first edition of that book actually came out in 1978. But I awarded half a point anyway, because the book I had in mind (A) was co-written by Brian W. “Water buffalo” Kernighan, and (B) had a second edition in 1978, the same year as K&R. It is Kernighan and Plauger’s The Elements of Programming Style (amazon.com, amazon.co.uk)
(This isn’t a cover image from Amazon, it’s a scan of my personal copy, because I wanted you to see how well-thumbed it is.)
For some reason, I seem to learn better from books — actual, printed books — than I do from other forms of documentation. You’d think that programming of all things would be best learned at a keyboard, web tutorial in one window and shell in the next, but somehow when I need to absorb a big chunk of information in one go, books work better for me. I suppose they are more isolating, and encourage more concentration.
Anyway, books have been very important in my development as a programmer, and I want to talk on this blog about some of those important books. As I write this, I have eight books in mind, though I may well think of others as I gradually make my way through these.
Most of the books on my list are quite old (one of them from 1974, which I think is the oldest). That’s not accidental — I think that, even in as fast-moving a discipline as programming, it takes time for a book to establish itself as a classic; and the really good books are timeless. So there will be no Learn Head-Rush Turbo Enterprise Java Enterprise Beans For Dummies In The Enterprise In Twenty Minutes in this series. (Bonus points, by the way, for anyone who can guess what the 1974 book on my list is.)
But although I love old books, I want to start this series with the most recent book on my list (although as you’ll see the 2009 publication date is in some ways misleading, as it’s largely about programs written long ago). That’s because it’s the book I’m reading right now — I’m in the middle of the last chapter as I write this — and it’s the book that probably did more than anything else to provoke me to start this blog.
Coders at Work: Reflections on the Craft of Programming -- Peter Siebel