The concept known as the von Neumann machine has proved to be exceptionally stable in the otherwise tempestuous development of Computing Science. In essence, the computers we build are still those that were with us thirty years ago; technology, as it has developed, has merely led to a dramatic increase in capacity, however gradual the steps it has been reached in. This exceptional stability goes well beyond merely confirming that the von Neumann concept was not, after all, such a bad idea: its very stability provided a stable interface between designers of hardware and software, and, for both groups, the stable interface was an essential prerequisite to progress in their own fields. Now, to a hardware designer, a von Neumann machine is the final product; to a software designer, it is no more than a point of departure; hence, it need cause no surprise that the stability of the interface has exerted rather diverse influences on these several disciplines.
In software, ambitions were raised as increased capacity became available. Each succeeding project outdid its predecessors by an order of magnitude in aspiration and complexity. Software designers have been challenged to develop the mental apparatus —that is, the conceptual machinery and the resultant methods of design— imposed by ambition's uncurbed growth. The achievements in this field, provoked as they may have been by the challenge, while quite spectacular, are still relatively unknown. (That they should be unknown to the public at large is hardly surprising. Firstly, the subject is of an inherent complexity unfathomable to the uninitiated; taken by itself, this fact would be sufficient to prevent the public from appreciating the true magnitude of the undoubted achievement. Moreover, it is admitted that method has sometimes lagged behind: each programmer whose reach occasionally exceeded his grasp has added to the evil repute of software. In fairness, let us also note that programmers have often been blamed for errors of judgement perpetrated by their managers.)
Hardware designers have been spared the conceptual problems posed by this proliferation of complexity —and a good thing too. As it was, hardware designers have been hard put to it to adapt their designs —and re-adapt them and re-adapt them again and again— to changing technologies, to economic parameters in a constant state of flux and to ever-changing material constraints. I use "hard put to it" advisedly: the difficulties they were in hardly left them time to put some gloss on their methods of design. When in the audience of hardware designers discussing their work one can scarcely escape the suspicion that Wells's Time Machine exists and is operating: any moderately competent computing scientist feels violently wrenched back by at least a decade into the past, possibly two. To hear them —and this goes even for the famous— glitches are still unknown, or at least unrecognized; hazards are still being prattled about with the very uncomprehension that surrounded them fifteen years ago; the tribe's design methods still suffer from the craftsman's näiveté. It is hard to decide whether a computing scientist should be impressed by their technical achievements or appalled by their methodological backwardness. When confronted with these gentlemen, a computing scientist may perhaps be forgiven for feeling gripped by an elemental fear of what is bound to happen when the tribe will start designing chips in earnest: it has been ineluctable for years now that they will solidify in silicon each and every type of design misjudgment which the community of computing scientists has learned to avoid for at least the past decade. Incidentally, in view of the exorbitant level of chip design costs, this is precisely what is happening now.....
Let me now show what we are given to read in the Dutch "Report on the Social Consequences of Micro-Electronics" by an ad hoc advisory committee, also known, after its chairman, as the Rathenau Committee [their report, section 2.5]. To quote verbatim:
Software problems, we mention in passing, are similar to those met in designing ICs [as the Indo-European languages are similar to English —EWD]. Either technique must bridge the gap between standard components and reality. Yet there is a difference in the degree of standardization; moreover, there is a difference in the scientific background fitting the respective activities. A scientific basis for software technology has hardly been established yet; methods of operation lag far behind those developed in electronics; so does professional discipline.
Gentle reader, be not incredulous: this piece of pure and unadulterated chutspa has been quoted as literally as translation will allow. The absence of competent computing scientists from the Rathenau Committee has wrought the predictable havoc. One shudders to think about the remainder of the Report's contents when this sample shows, in Tennyson's words,
.... blind and naked Ignorance
Delivers brawling judgments, unashamed,
On all things all day long.
[The above is an English translation of EWD724, which was originally written in Dutch. I gratefully acknowledge dr.I.S.Herschberg's assistance in preparing this translation, with which —to tell the honest truth— neither of us is fully satisfied. For me —probably more so than for Herschberg, who has more experience in such matters— this confrontation with the translator's problems was an educational experience: it was a lesson in modesty.]
Plataanstraat 5 5671 AL NUENEN The Netherlands |
5 March 1980 prof.dr.Edsger W.Dijkstra Burroughs Research Fellow |