This book came to being from a very good idea. The editors decided to go around and ask renown programmers and designers about snippets of code, software architecture, design or anything related they found beautiful and see as an example of good design.
Indeed, the idea is terrific. After all, besides books describing specific technologies we read on a per-need basis, what books do programmers have to read for inspiration ? Consider artists and architects, for example. They have peer art and work to study and be inspired by. Sure, code reading is highly recommended, but wouldn't it be great if someone had already collected all the good bits ? Wouldn't it be sweet for Brian Kernighan and Yuhikiro Matsumoto to tell you what they've found beautiful ?
Unfortunately, this books doesn't fulfill the high expectations I had from it. It's not bad, no, but it isn't as good as I hoped it to be. There are two main reasons for this:
- Many of the authors forgot that they're writing for a paper book, and not an online article / blog entry. When reading a paper book, you can't just click on links to find out more information. Therefore, I'd expect many chapters to be more complete. The authors could have spent a few extra lines to explain a concept instead of referencing it to some online resource or (worse) a paid-subscription-access paper at ACM. This is a paper book - I want to read it on the bus to work. Had I wanted to read an online article jumping around links, I would just do that.
- A few of the chapters in the book are just way too specific. How many people would understand a chapter about LINPAK - a Fortran library for linear algebra manipulation, especially when the author is very parsimonious in explaining the concepts and sends you to linear algebra tomes instead (see complaint #1).
In general, I think that to better execute the idea of such a book, a panel of experts has to be assembled and scrutinize each and every article. I would be much happier to read a book of 10 great articles than a book of 33, of which 10 are great. Who said that each and every programming book should be more than 600 pages long ?
However, I want to finish on a positive note, since as I stated in the beginning, the book is not bad. Here's a list of articles I found really good and interesting. I guess that just for them it was worth to read:
- Chapter 1, A Regular Expression Matcher, by Brian Kernighan
- Chapter 2, Subversion's Delta Editor: Interface as Ontology, by Karl Fogel
- Chapter 3, The Most Beautiful Code I Never Wrote, by Jon Bentley
- Chapter 8, On-the-Fly Code Generation for Image Processing, by Charles Petzold
- Chapter 10, The Quest for an Accelerated Population Count, by Henry S. Warren, Jr.
- Chapter 16, The Linux Kernel Driver Model: The Benefits of Working Together, by Greg Kroah-Hartman
- Chapter 18, Python's Dictionary Implementation: Being All Things to All People, by Andrew Kuchling
- Chapter 23, Distributed Programming with MapReduce, by Jeff Dean and Sanjay Ghemawat
- Chapter 28, Beautiful Debugging, by Andreas Zeller
- Chapter 33, Writing Programs for "The Book," by Brian Hayes