Metaphor, Complexity and Postmodern Programming

St. Paul's Cathedral beyond the Millenium Bridge

A recent interview with architect Victoria Livschitz of Sun entitled Envisioning a New Language provoked some comment on the Postmodern Programming discussion group recently. The article describes "Metaphors", a new conceptual vision for a programming language and environment that will, in one stroke, eliminate all the tricky aspects of programming, letting developers concentrate purely on conceptual modelling and algorithms without worrying about hardware, networks, memory, existing systems and other pointless, technical stuff. From the interview:

I believe it's time to step back and consider the first 50 years of computing as one gigantic prototype. If we had the courage to start over, we could build a new software creation and execution model to address the software engineering challenges of the 21st century, such as distributed processing, autonomic computing, and software evolution -- natively, within one conceptual universe [my emphasis].

There's one fatal flaw with this plan: it's only a matter of time before some poor soul would have to integrate systems in Sun's "one conceptual universe" with those in Microsoft's "one conceptual universe" or the multiple, competing "one conceptual universes" that the open source and free software communities would create.

To quote Keith Braithwaite, the great thing about single conceptual universes, as with standards, is that there are so many to choose from.

For some time I bought in to Fred Brooks' notion that programming problems can be divided into "essential" - the inherent complexities of the application domain and "accidental" - complexities produced as a by product of using the technologies themselves. I now think that's wrong; accidental complexity is the essential complexity of programming itself, of writing programs that must fit into an existing context of people, organisations, their needs and wants and the legacy of their history.

I think trying to get rid of accidental complexity is like harking back to a classical golden age that never really existed. It can be source of inspiration at best (think of St Pauls' neo-classical architecture) but dangerous at worst (think of Mussolini's attempt to recreate the Roman empire in Abyssinia). The attempt to create a single conceptual universe to rid the world of accidental complexity is doomed to failure. Wren could not convince Londoners to live within his grand vision of what London should be. Today St Pauls is situated within the old medieval street plan rebuilt after the fire of London and is within sight of many examples of later architectural movements, equally grand in conceptual scope yet totally incompatible with Wren's vision. That mix of styles is one reason why London is such an interesting place to be. The challenge of building to meet people's conflicting needs and wants while preserving the legacy of the past is what makes architecture so fascinating. I think it's the same for software.

Thanks to Keith Braithwaite, Steve Freeman and Martin Fowler for inspiration, bon mots and encouraging me to get this off my chest.

Copyright © 2005 Nat Pryce. Posted 2005-12-08. Share it.