[comp.software-eng] Engineering: But Is It Art?

xtbjh@levels.sait.edu.au (behoffski) (05/22/91)

My favourite quote, oft repeated, is:

	No work of art is ever finished: it is merely abandoned.  

Most of my friends (especially the non-technical ones) think that I'm 
crazy when I call programs (not just mine, anybody's) works of art.  
I think that separating "art" and "work" is an incorrect distinction to 
make -- they are facets of the same thing.  

I believe that engineering is mostly about reuse: being able to measure 
existing works and apply all or part of the existing effort to new 
works.  This in turn leads to a need for tools to decompose works into 
valuable pieces, and for tools to recombine those pieces in new works.  

In software, the reusability of a software component is based entirely 
on two critical criteria:
	* how flexible, and suitable, the component's interfaces are, and
	* how effective is the underlying implementation.  

A language like C is popular because it provides many tools for 
implementing algorithms; only recently have the object-oriented languages 
pointed out that the interface for those algorithms is insufficient.  
I don't agree that continuing to bolt constructs on top of existing 
languages (as C++ does) is the correct approach.  

This is why I'm pushing for the addition of adjectives and adverbs to 
the interface primitives: these allow enormously greater scope for 
clear, concise and natural interfaces, yet allow much freedom in the 
choice of implementation.  

-- 
Brenton Hoff (behoffski)  | Senior Software Engineer | My opinions are mine
xtbjh@Levels.UniSA.edu.au | AWA Transponder          | (and they're weird).