Monday, June 22, 2009

September 26, 2006: The Virtue of a Ball of Mud

I have always had a bias for writing programs in an interpreted language. Back when I taught programming, there were only two such languages that could be taken seriously. APL was the acronym for A PROGRAMMING LANGUAGE, the title of a book by Kenneth Iverson. The book preceded any practical implementation of the language by several years, and I think Iverson was more interested in demonstrating that a programming language could be an elegant mathematical system than in actually using that language for practical purposes. Edsger Dijkstra would later compare people so obsessed with the perfection of the system to both Catholics and Communists (probably becuase he was so delighted to get both of those nouns in a single sentence)! However, once IBM developed an implementation of APL, it was pursued with the zealous sort of utopian ideology which could easily remind one of both Thomas Aquinas and Friedrich Engels.

The alternative to APL was LISP. Once you got beyond the heavy use of parentheses to structure symbolic expressions, its simplicity was one of aesthetic perfection. It was also grounded in mathematics, but it was the minimalist mathematics of the necessary and sufficient conditions for representing an algorithm. It had only two data types: atoms and the symbolic expressions that combined the atoms. It had Turing universality, meaning that it could apply its own interpreter to symbolic expressions that represented programs. Thus, it was not only stunningly simple but also amazingly flexible.

Comparing APL and LISP was a great sport back in my teaching days. I always felt the best metaphor for APL was the diamond, the ideal of a perfectly assembled structure. The problem with a diamond, however, is that you cannot change it. As soon as you tamper with the structure, you lose the diamond. So the complementary metaphor for LISP was the ball of mud. LISP would let you modify it in all sorts of ways, but it was always LISP. No matter how you push and pull at a ball of mud, it remains a ball of mud.

The thing about diamonds, however, is that they seem to have acquired their value from certain arbitrary ideological standards; but ideologists never seem to bother with balls of mud. As a result we can go to war (or even enslave other civilizations) over diamonds; but we never seem to take such extreme measures over balls of mud. Perhaps we would be more successful in our conversations if we talked more about balls of mud and less about diamonds.

No comments:

Post a Comment