Channels ▼

Jolt Awards: The Best Books

, September 18, 2012 Six notable books that every serious programmer should read.
  • E-mail
  • Print

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

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.