Saturday, August 01, 2009

Some quotes by Dijkstra

The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.

Some of you doubt that aforementioned "techniques of effective reasoning", nice as they are for small programs, will scale up, I quote "given the daunting size and sheer complexity of most programs". Well, they will be powerless if you try to use them to disentangle the horrendous mess produced by a group of incompetent, unorganized programmers. Their power manifests itself in the construction phase where (i) they tend to lead to much shorter texts than would be produced otherwise and (ii) lengths of program derivations tend to grow not much more than linearly with the lengths of the programs derived. Finally the programs thus produced are infinitely better than the usual junk.

Gadgets are not necessarily an improvement, vide the succession Blackboard -> Overhead Projector -> Power Point.

It is not the business of computing science to promote "computerization", say by developing demanding applications so as to create a market for the next generation of hardware.

A programmer has to be able to demonstrate that his program has the required properties. If this comes as an afterthought, it is all but certain that he won't be able to meet this obligation: only if he allows this obligation to influence his design, there is hope he can meet it. Pure a posteriori verification denies you that whole-some influence and is therefore putting the cart before the horse, but that is exactly what happens in the software houses where "programming" and "quality assurance" are done by different groups.

Machine capacities now give us room galore for making a mess of it. Opportunities unlimited for fouling things up! Developing the austere intellectual discipline of keeping things sufficiently simple is in this environment a formidable challenge, both technically and educationally.

No, I'm afraid that computer science has suffered from the popularity of the Internet. It has attracted an increasing —not to say: overwhelming!— number of students with very little scientific inclination and in research it has only strengthened the prevailing (and somewhat vulgar) obsession with speed and capacity.

When computers became a commercial product it was essential for industry that its sales force presented these machines as non-mathematical machines that could be used by any one. As a result of these commercial campaigns, research in computing science has been paralyzed by the "rule" that nothing you ever tried should be too difficult for "the average programmer". Slowly —at least at the better universities— computing science research is digging itself out of that hole. But we should all be aware that publication practice has a greater inertia. We should make a conscious effort to stop writing for morons. As a science, computing cannot be expected to mature as long as its practitioners don't take each other seriously.

1 comment:

John Dougan said...

``Beware of bugs in the above code; I have only proved it correct, not tried it.''

Donald Knuth