Jolt Awards: The Best Books, September 18, 2012 Six notable books that every serious programmer should read.
Jolt Finalist: Elemental Design Patterns
Jason M. Smith
The central thesis of this book is that there is great value in looking at the atomic actions of programming and building patterns from those. Smith makes a convincing case that we spend too much time in software development applying mini-patterns — such as the
for-loop — without really understanding what we're doing. This statement might sound like an academic's take on real-world programming, until the day comes that we see how functional languages step through an array, using — gawd! — recursion. At that moment, a small revelation takes place; namely, that stepping through an array with a
for-loop is by no means the only, nor in some cases the best, way of completing the task. Such Aha! Moments are what Smith has in mind as he discusses how unaware we are of the real things that we're doing. He suggests going back to the atomic actions and re-conceiving programming based on his catalog of those actions.
This catalog is presented along a three-dimensional axis, and Smith carefully works at putting the patterns into logical sectors, so that neighboring patterns bear an obvious relationship to each other. In addition, Smith invents new diagramming conventions to present the patterns and identify visually how they differ from each other and how they work together.
It's at this point that I started to wonder whether the love of system had run ahead of the conceptual elegance of the earlier material. In some ways, this book reminded me of Stepanov and McJones's Elements of Programming. That book analyzed atomic actions to recast them in arithmetical terms in the hopes of using arithmetic and geometry to prove the validity of the code. Smith's book seems designed to simply awaken us to what we're doing and enjoy a deeper understanding of the actions we apply daily in code. I'm all for that, and Smith succeeds brilliantly. But I find the systematization, ranking, and new notation to be of uncertain value. Definitely recommended for the computer scientist in all of us who is willing to step into an eye-opening analysis of simple coding operations.
— Andrew Binstock