Exploring the Edges of the Metaphorical Web

by Kurt Cagle

Programming, at its core, is the willful manipulation of metaphor. This may sound, perhaps, like a lesson more appropriate for an English literature class than a column on the nature of coding, but that statement nonetheless not only describes the sum of software evolution for the last fifty years but likely also describes the arc of computing over the next fifty. Metaphors are lazy tricksters, convenient mnemonics that become new realities as people forget the reason for the mnemonics in the first place. The shifting of magnetic fields within transistors become tokenized as numeric codes, which in turn receive the first level of nomenclatures as short instructions of assembler code.

Yet assembler by itself does not occur in isolation -- patterns emerge, and those patterns can be named, and codified in turn, providing the second level of abstraction. We build parsers to convert these abstractions into the appropriate characters, and the parsers then define languages such as C ... but only when the systems become fast enough and efficient enough that the compilation process makes sense. Lines of code form patterns which get resolved as functions, and functional programming in turn creates libraries of code that pave the way towards the first level of object-orientedness. Languages such as C++ emerge, and Java, and in time others as well. Yet even here the levels of abstraction begin to fail when the complexity of the frameworks becomes too large, too all encompassing for any one person to ever completely articulate.


2007-02-16 05:46:37
Damn. Another impressively written article. Well done. There's a good reason I will immediately click on you name when it shows up: even when the entry is poitical and I disagree vehemently with you, I can't argue with how well written the piece is.
Kurt Cagle
2007-02-16 09:09:15
Very much appreciated! Thank you.
Kurt Cagle
2007-02-16 09:10:24
Very much appreciated! Thank you.
Kurt Cagle
2007-02-16 09:16:31
Reader Dan Langsam added this very useful note:

Kurt Cagle wrote:
During the late 1990s, the pundits coined the phrase "paradigm shift", perhaps attempting to push the metaphor that each new such "paradigm" could be achieved simply by moving the stick shift up a gear.

Just wanted to point out that "paradigm shift" goes back at least to the early 1960's when it was popularized by Kuhn's The Structure of Scientific Revolutions. ( http://en.wikipedia.org/wiki/Structure_of_Scientific_Revolutions ). It's worth at least a browse if you have the time.

2007-02-16 13:42:39
Fantastic reading! If you follow the notion that poetry emerges from a supersaturation of words beyond simple meaning, you might take a more literal view that microformats and GRDDL promise the poetry of the web...

"Yet even here the dance between the order of the declarative and the chaos of the imperative continue" is completely brilliant! I wonder though, when you value elegance over expediency, does this point to a tension between open source and agile? I had not before considered that this tension might exist, but considering that the open source movement is its own client-base, whereas agile methodology attempts to be more responsive to an existing (and separate) client-base... interesting.

Looking forward to more Metaphorical goodness! Cheers!

2007-02-17 02:32:04
What rubbish. Not the fact that most of what you've written is simple rehashing of history... It is your attempt to dress it up with the reference to "metaphor" that makes it rubbish. After a provocative opening sentence, you wander off into the wilderness. As a very old hand in the industry, there is nothing new or interesting here despite what that initial sentence might suggest. It is left there dangling helplessly, never adequately explained or illustrated. Ironically, it is itself a metaphor. Just not one that has anything apparent to do with its context.
Kurt Cagle
2007-02-18 13:57:40
Given the name (BoredWithBloggers), I have to assume that your intent here is the deconstruction of pomposity, which I'll concede may in fact be at the root of this article ;-)

Realistically, however, I'm not sure how you can not talk about programmatic metaphor outside of that context. Metaphor ultimately informs design patterns, and the most persistent design patterns in turn become codified within the next iterations of languages themselves. Metaphor is involved in modelling; you are creating a model of some instance of reality and the degree to which that model correlates with the instance to a greater or lesser degree also determines the fitness of that metaphor. Ultimately, the frameworks that emerges around a language are the expression of the applicable metaphors of relevance to programmers in terms of the predicates of that particular language.

This particular article was intended to announce my own blog (http://metaphoricalweb.xforms.org) as much as it was to serve as a "seminal" piece in its own right. I hope there to explore these concepts in much greater detail there, and hopefully to take that initial statement and do proper justice to it.