In the garden of computing, there were two trees.  The first, the tree of life, grew from one, lambda-shaped root, onto which were applied a series of intersecting trunks, and which were again applied to branches, upon which perched leaves of pure data.  The second tree could only grow a single leaf at a time, and had but a single branch, which continually writhed and twisted in knots along the leaves.  About this tree, it was said ``You shall not eat of it, for in the day you eat of it, you shall surely die."

  But the mechanical operation of the second tree so pleased the computers, that it was immediately adopted as a standard.  The computers reaped their reward in the swift and painful judgment of the segfault.  From then on, it was ordained that they should toil continually to re-write addressing code and flatten control structures by the sweat of their brow.  As their gardening skills increased, they found that many hectares of silicon could be combined into vast farmlands.  This did not help, since although much more was now possible, the sins committed during the Fall could not be undone.  Farm equipment such as threaded processors and cache were developed to automatically manage chunks of silicon, but these suffered from the dreaded cache coherency dilemma and branch prediction paradox.  Such evils overcome the even optimistic increments of ``omp atomic", and force programmers to write and re-write algorithms enslaved to the lifeless, twisting form of that forbidden tree.

Leave a Reply.