bertrand@eiffel.UUCP (Bertrand Meyer) (09/05/90)
From <5524@stpstn.UUCP> by cox@stpstn.UUCP (Brad Cox): > (...) > Software engineers work with software, an abstract/concrete hybrid; a swamp > that's too thick to drink and too thin to plow. By hybrid, I mean that we get > some of the best and some of the worst of both worlds. (...) > The problem is the intangible, swampy nature of software itself that causes > people to deal with it as a matter of abstract belief rather than concrete > tangible fact. Thus direct manulation user interfaces, personal computing, > OO technologies, etc, etc as the low-level technologies in the massive > paradigm shift that I'm calling the Software Industrial Revolution. Abstract/concrete hybrid. Absolutely. (As long as you don't infer this to be a rationale for hybrid *languages* :-) ...) To be more precise: although some will disagree, the abstract part in software is mathematics, pure mathematics - most of the time not very deep, but of a more exacting nature than most of the mathematics practiced by mathematicians. To Dr. Cox's list of ``technologies'' one should add the technology of formal specification, which seems at long last to attract some attention in practitioners's circles. Perhaps this is wishful thinking; but the last issue of IEEE Software appears to be an encouraging sign of recognition after all these years in the desert. What makes software engineering difficult (but also fascinating) is the need to reconcile those mathematical techniques with the ``concrete'' part - the hardware. The best formal specifications won't help unless you can execute the result on your machine (and preferably fast). Software construction is a constant tradeoff between the angel and the beast in each of us - the mathematician and the mechanic. (The latter in the same sense as in ``car mechanic''.) It is hardly deniable, however, that in the current state of the computer profession and of computer sience education there is too much of the mechanic and not enough of the mathematician. By the way, CS departments do teach some mathematics, but is it the right one? With all the respect justly due to Graham, Knuth and Patashnik's ``concrete mathematics'', couldn't we do with a little less of Stirling numbers and a little more of predicate calculus? The software developer: the illegitimate child of David Hilbert and Enzo Ferrari. -- Bertrand Meyer bertrand@eiffel.com