Tuesday, September 1, 2009

Lewis Carroll: Toward Boxology

Hey, wait, lets pause for a minute now.  Where are we?

So, computers have beaten our best in chess, they have analyzed overwhelming volumes of information, they have made cross-global instant communication accessible to millions.  Through all the field's successes, through all the extraordinary powers bestowed by these machines, we may sometimes forget how much it is still a burgeoning field.

How early, exactly?  Well, Moore's Law is still putt-putting its way and form factors are ever-evolving.  Moreover, in the year 2009, many architectural styles still lack formal definition.  Tell me: do your threads share the same memory?  Is your database a set of data, or a piece of software?

In 1997, Mary Shaw and Paul Clements put forth a paper trying to establish a uniform set of definitions for architectural elements.  Were they successful?  To answer these questions, we've gotten 19th century writer and logician Lewis Carroll over the time phone.

Kurt: So, Mr. Carroll, tell me, how do you think formal taxonomies should be developed in a field?  Do centralized academic efforts make a difference, or must these things evolve informally?
Carroll: Well hither-tee and hither-toe, it's all a case of portmanteau.
Kurt: ...Pardon?
Carroll: The simplest task of brochuary won't combell a dictionary.  It's only through the fret and ferry of tea and top and woe.
Kurt: I... I'm sorry, do you mean to say that formal definition is irrelevent if meaning can inferred?
Carroll: And stirred the words with frem and firbs, the puzzle then became unnerved.  But since the morning fretters blurred, then most of it we know.

...this conversation actually went on like this for about 15 minutes before he began pointing out the constellations in my rug and excused himself.  This, from a man who made contributions to the field of symbolic logic?  Was this truly the opinion of a proto-computer scientist?

The discipline of computer science, despite the label is not a science.  It is arguably engineering in part, and math in part.  Computer scientists do not discover phenomenon about the universe and label them, they create them, and if used enough, they label them.  Furthermore, the things they label are of a purely informational nature: the things we label in computer science are some of the most fundamental ways of organizing the manipulation of information.

Because of this, there is a slight danger in excessively imposing definition upon concepts.  If (as Shaw and Clements define) a client/server model must be asynchronous, then what do you call a synchronous client/server?  "Something like a client/server, but synchronous instead, even though that's now by definition contradictory".  When we are building these things ourselves, then our definitions must only provide us enough to communicate a concept, but no more.

When you impose 12 columns worth of categorization on a single label, you risk rendering it overly specific, making the word less useful, and the application of your terminology less flexible.  To that extent, Carroll would probably agree with me.  Meaning can often be inferred.

If computer science were pure math, then particular phenomenon would have particular labels, without extraneous definition.  But computer science (and particularly computer architecture) is also engineering.  We give labels as far as is practical.  Yes, a formal taxonomy is helpful, and is being developed all the time through the efforts of IEEE, W3C, and ten dozen other standards bodies.  Kudos to Shaw and Clements for proposing a unified architectural style.  Just don't let them write it.

No comments:

Post a Comment