Programming metaphors (Was: Programming as literature.)

Donnal Walter donnal at donnal.net
Mon Apr 22 09:55:43 EDT 2002


jajvirta at cc.helsinki.fi (Jarno J Virtanen) wrote in message news:<slrnac7qns.dh0.jajvirta at sirppi.helsinki.fi>...
> 22 Apr 2002 06:29:05 GMT Lumberjack wrote:
> > Tim Daneliuk <tundra at tundraware.com> wrote:
> >> Carl Banks wrote:
> >>> Computer programming is not science.
> >> 
> >> Agreed - it is craft.
> > 
> > Computer programming has all the properties of literature, including 
> > subjective analysis, the existence of "schools of thought," and genres, 
> > among other things.

> ... Software development is more of a 
> maintenance activity where bugs and shortcomings are fixed throughout
> the lifetime of a product. (Taken to the extreme, literally, it is
> actually only about fixing bugs and shortcomings (ie. adding features)
> which starts as soon as the initial release is made which is made
> very early in case of extreme programming.)
> 
> I find every other metaphor lacking something essential too.  One
> popular metaphor is building construction or engineering activity in
> general.  
>
> <snip>
>
> whether it's just that software development is such a young discipline
> or that there's some inherent factor that makes it uncertain and 
> undeterministic is beoynd my comprehension. 
> 
> Having said all that I'll just have to remind that metaphors are of
> course useful if they shed light on some aspect on the subject.  They
> just shouldn't be extended too far.  (Hmh, It seems that I've been
> stating the obvious all the time, well, that's just me ;-)

This is not a perfect metaphor either, but the one I like is
biological evolution. Organisms are made up of organs, which are made
up of cells, which are made up of proteins and other molecules. Cells
send messages to each other in the form of hormones, transmitters,
substrates, cofactors and so on. Cells exhibit encapsulation,
instantiation, inheritance, polymorphism, ... If a given protein or a
given cell type or a given species doesn't work properly in a
particular environment it often gets replaced by one that works
better. This is a bit more like the maintenance activity and bug fixes
you talked about.

Programming is considerably more deliberate than evolution, of course,
but evolution also captures some of the uncertainties and
non-deterministic aspects you mentioned as well.

Donnal Walter, MD, PhD
Arkansas Children's Hospital
donnal at donnal.net



More information about the Python-list mailing list