It Began with Babbage
Page 22
Thus, an instruction that in binary form is 11100 0 0000001110 1 would be written as A 14 D. Wheeler was using a symbolic notation to specify an instruction. A fragment of a program would look like that presented in Table 9.1.42
We have seen that the flow diagram invented by Goldstine and von Neumann was also a symbolic system, as was the notation von Neumann used to describe his sorting program. However, Wheeler’s symbolism was more consequential. It was more than a notation. We realize this when he writes about his “initial orders”:
FIGURE 9.2 The “Wheeler Jump”.
TABLE 9.1 A Fragment of an Assembly Language Program for the EDSAC
Location of order
Order
100
H 103 F
101
E 108 F
102
P 5 F
103
J F
*
As the reading of data from input tape is controlled directly by orders held in the store we require some process to start the machine. Orders have been wired on a set of uniselectors and when the starting button of the machine is pressed these are automatically placed in the store and the action of these orders causes the tape to be read. These orders are called initial orders.43
At first blush, it seems that the initial orders act simply to load a program from paper tape into EDSAC memory and begin its execution—what came to be called a program loader.44 However, the initial orders do much more. To begin with, the instructions were written and punched on paper tape in the symbolic form just described, then the initial orders read the symbols on the tape and (a) translated them automatically, one order at a time, into binary form—representing the functions to be performed by the orders and the addresses of the numbers to be accessed on which the function would be performed (that is, the operands); (b) assembled the orders in proper fashion (the function digit, the operand addresses, and the length discrimination digits); and (c) placed the assembled orders into the EDSAC memory by means of a special order.45
In present-centered terms, this was a programming system—an ensemble of “application-independent” programs that makes the computer usable to the “ordinary” programmer.46 Wheeler had invented a rudimentary but usable programming system—arguably the very first—comprising, in his case, an assembly language to write EDSAC programs in symbolic form, an assembler that translated the assembly language programs automatically into binary form, and a loader that would load the assembled code into memory prior to its execution.
An assembler is one of the simpler types of automatic language translators, although, as the architecture of the stored-program computer evolved in complexity, this translation process would evolve concomitantly in complexity.47 Wheeler’s “initial orders” combined the functions of assembler and loader.
VII
Wheeler’s two major inventions, the closed subroutine and the assembly language/assembler–loader programming system perhaps make him the first systems programmer—a person who writes and implements programs that aid others who are the users of the computer. Interestingly, the Manchester Mark I group working contemporaneously eschewed the idea of symbolic programming and assembly,48 although, as we will see, in the realm of systems programming they more than compensated for this decision in later projects.
The EDSAC project not only heralded the first fully operational stored-program computer, but also it unfolded and expanded the stored-program computer paradigm in directions that perhaps Wilkes himself had not contemplated when he began the project in 1946.
The very idea of a computing machine had been enlarged. The machine was now a symbiosis of two kinds of artifacts, the physical computer built of electronic and electromechanical components and the liminal, quasi-autonomous “two-faced” artifact called computer program (or, later, software) that would serve as the interface between the human user and the physical computer. We see here, the interplay of two kinds of computational artifacts, the material and the liminal.
Moreover, a distinction between two classes of programs had emerged, although names for these classes were yet to come. There were the programs that were written to solve the computational problems of interest to users of the machine. In present-centered terms, these were the application programs. And there were the programs that would facilitate the running of application programs—what would be called system programs.
The paradigm had not shifted. Its core was still the concept of the stored-program computer principle as the EDVAC report had prescribed. However, the physicality of the stored-program computer had been decentered within the paradigm. The physical computer now coexisted in equal footing with the liminal programs. It was not enough to design and build a physical machine; it was as important to design and build programs that facilitated the use of the physical machine. In present-centered language, with the EDSAC, the dichotomy of the concepts of hardware and software came into existence, if not the terms themselves.
Wilkes and his colleagues fully realized just how central programs and programming was to this paradigm’s efficacy. In 1951, he and two research students, Wheeler and Stanley Gill (1926–1975) published (in America, as it happened) Preparation of Programmes for an Electronic Digital Computer.49 This was the first book on computer programming.
Thomas Kuhn had emphasized that one of the characteristics of a mature paradigm is the availability of texts that defined the state of knowledge within the discipline. Preparation of Programmes for an Electronic Digital Computer served precisely such a role for at least one significant part of the stored-program computer paradigm. In fact, the publication of this book was a proclamation of the centrality of programming in the evolving paradigm.
NOTES
1. Anon. (1950). Report on a conference on high speed automatic calculating-machines, June 22–25, 1949. Cambridge, UK: University Mathematical Laboratory.
2. H. H. Goldstine & J. von Neumann. (1947). Planning and coding problems for an electronic computing instrument. Unpublished report. Princeton, NJ: Institute of Advanced Study. This report was later published in A. H. Taub. (Ed.). (1963). John von Neumann, collected works (Vol. 5, pp. 8–235). New York: Pergamon.
3. D. J. Wheeler. (1949). Planning the use of a paper library. In Anon (pp. 36–40), 1950, op cit., p. 36.
4. D. E. Knuth. (1970). Von Neumann’s first computer program. ACM Computing Surveys, 2, 247–260. Reprinted in D. E. Knuth. (1996). Selected papers on computer science (pp. 205–226). Stanford, CA: Center for the Study of Language and Information. All citations to this article will refer to the 1996 reprint.
5. Knuth, 1996, op cit., p. 205.
6. F. P. Brooks, Jr. & K. E. Iverson. (1969). Automatic data processing: System/360 edition (pp. 75–81). New York: Wiley.
7. Knuth, op cit., p. 206.
8. Ibid., p. 220.
9. Ibid., pp. 211, 222.
10. H. H. Goldstine. (1972). The computer from Pascal to von Neumann (p. 266). Princeton, NJ: Princeton University Press.
11. Ibid.
12. Goldstine & von Neumann, op cit., p. 1.
13. A. W. Burks, H. H. Goldstine, & J. von Neumann. (1946). Preliminary discussion of the logical design of an electronic computing instrument. Princeton, NJ: Institute of Advanced Study.
14. Goldstine & von Neumann, op cit., pp. 1–2.
15. Ibid., p. 4.
16. The literature on the art and science of translation is vast. The interested reader may consult, for example, G. Steiner. (1975). After Babel: Aspects of language and translation. Oxford: Oxford University Press; A. Dingwaney & C. Maeir. (Eds.). (1995). Between languages and cultures. Pittsburgh, PA: University of Pittsburgh Press; S. Chaudhuri. (2002). Translation and understanding. New Delhi: Oxford University Press.
17. Goldstine & von Neumann, op cit., p. 4.
18. Ibid.
19. Ibid.
20. Ibid., p. 14.
21. Goldstine & von Neumann, op cit., p. 17.
22. Ibid., p. 20.
23.
Ibid.
24. M. V. Wilkes. (1985). Memoirs of a computer pioneer (p. 143). Cambridge, MA: MIT Press.
25. Ibid.
26. J. W. Mauchly. (1975). Preparation of problems for EDVAC-type machines. In B. Randell (Ed.), The origins of digital computers (2nd ed., pp. 365–360). New York: Springer-Verlag (original work published 1947; see especially p. 367).
27. Ibid.
28. A. M. Turing. (1947). Lectures to the London Mathematical Society, February 20. Reprinted in D. C. Ince. (Ed.). (1992). Collected works of A.M. Turing: Mechanical intelligence (pp. 106–124). Amsterdam: North-Holland (see especially p. 118).
29. G. M. Hopper. (1978). Keynote address. In R. L. Wexelblat (Ed.), History of programming languages (pp. 7–20). New York: Academic Press (see especially p. 8).
30. Anon. (1985). David Wheeler, 1985 Computer Pioneer Award [On-line]. Citation. IEEE Computer Society. Available: http://www.computer.org
31. Wilkes, op cit., p. 148.
32. Ibid., p. 143.
33. J. C. Jones. (1980). Design methods: Seeds of human future (2nd ed.) New York: Wiley.
34. Wheeler, op cit., p. 36.
35. Ibid.
36. D. J. Wheeler. (1951). Automatic computing with the EDSAC. PhD dissertation, University of Cambridge, p. 13.
37. Wheeler, 1949, op cit., p. 37.
38. Ibid.
39. Wheeler, 1951, op cit., pp. 39–40.
40. Ibid.
41. Ibid., 1951, p. 114.
42. Ibid., 1951, p. 19.
43. Ibid., 1951, p. 23.
44. D. W. Barron. (1978). Assemblers and loaders (3rd ed.). New York: Elsevier North-Holland.
45. Wheeler, 1951, op cit., p. 24.
46. Brooks & Iverson, op cit., p. 364.
47. Barron, op cit.
48. Ibid., p. 2.
49. M. V. Wilkes, D. J. Wheeler, & S. Gill. (1951). Preparation of programmes for an electronic digital computer. Cambridge, MA: Addison-Wesley.
10
Glimpses of a Scientific Style
I
IN AUGUST 1951, David Wheeler submitted a PhD dissertation titled Automatic Computing with the EDSAC to the faculty of mathematics (D. F. Hartley, personal communication, September 7, 2011) at the University of Cambridge.1 The year after, in November 1952, another of Maurice Wilkes’s students, Stanley Gill, submitted a thesis titled The Application of an Electronic Digital Computer to Problems in Mathematics and Physics.2
Wheeler’s was not the first doctoral degree awarded on the subject of computing. That honor must surely go to Herman Hollerith for his thesis submitted to Columbia University in 1890 on his invention of an electrical tabulating system (see Chapter 3, Section IV). Nor was Wheeler’s the first doctoral degree on a subject devoted to electronic computing. In December 1947, Tom Kilburn (codesigner with Frederic C. Williams of the Manchester Mark I [see Chapter 8, Section XIII]) had written a report on the CRT-based memory system he and Williams had developed (but called the Williams tube). This report was widely distributed in both Britain and the United States (and even found its way to Russia),3 and it became the basis for Kilburn’s PhD dissertation awarded in 1948 by the University of Manchester (S. H. Lavington, personal communication, August 31, 2011).
Wheeler’s doctoral dissertation, however, was almost certainly the first on the subject of programming. And one might say that the award of these first doctoral degrees in the realm of computer “hardware” (in Kilburn’s case) and computer “software” (in Wheeler’s case) made the invention and design of computers and computing systems an academically respectable university discipline.
As we have witnessed before in this story, establishing priority in the realm of computing is a murky business, especially at the birth of this new discipline. Thus, if by “computer science” we mean the study of computers and the phenomena surrounding computers (as three eminent computer scientists Allan Newell, Alan Perlis (1922–1990), and Herbert Simon suggested in 19674), then—assuming we agree on what “computers” are—the boundary between hardware and software, between the physical computer and the activity of computing, dissolves. Kilburn’s PhD dissertation of 1948 belongs as much to computer science as does Wheeler’s of 1951. If, on the other hand, computer science is viewed as one of two—or even three—”computer cultures,” along with computer technology and computer mathematics,5 then Kilburn’s dissertation belongs to computer technology and Wheeler’s to computer science.
One marker of the unease over this question of “identity” is that a venerable book series comprising critical surveys of various research topics that has been published continuously since 1960 continues to bear its original title Advances in Computers, not Advances in Computer Science or any other disciplinary name. In contrast, comparable book series in other fields refer to the discipline, not the object of study such as, for example, Advances in Psychology or Advances in Anthropology, and so on. The debate has not abated to this day, and this very fact suggests that it is, to a large extent, an unresolvable, perhaps even sterile, debate. Indeed, some recent thinkers have adopted computing or computing sciences as umbrella terms encompassing every discipline to do with computation. They have suggested that computer science is a subdiscipline of the “computing sciences.”6
Certainly, during the first decade of the stored-program computer, pioneers such as Wilkes, Kilburn, and Turing in Britain; and Burks, Goldstine, and von Neumann in America freely crossed “cultural” boundaries. In narrating this story, I have assumed the definition proposed at its very beginning: computer science is the science of automatic computation and, thus, the science of automatic symbol processing (see Prologue, Section I). This subsumes the viewpoint of Newell, Perlis, and Simon cited earlier.
II
But let us return to the two dissertations authored by Wheeler in 1951 and Gill in 1952. Wheeler tells us that his dissertation presents an account of methods developed for the EDSAC, but these methods are as applicable for other computing machines.7 As for Gill, he, too, asserts that his work as presented in his dissertation are his own particular contributions to the methods devised for the EDSAC.8
Both these men, then, were concerned with the development of methods for using the EDSAC. Yet, like Wheeler, Gill also pointed out that although the methods described were for the EDSAC, they would interest users of other similar machines.9
Here we see two common characteristics of these dissertations: they were both concerned with a single computational artifact (in their case, the EDSAC) and with the methodology of its use. Both authors stated categorically that what they produced were methods; their contribution to this still-embryonic science was in methodology. And although they were concerned with a particular computer, the EDSAC, they both believed that the methodology had a “universal” potential, that it embodied ideas that were valid for other similar computational artifacts.
So what shape did this methodology take?
III
Wheeler, as we have seen, invented the closed subroutine and a symbolic language that would later be called assembly language, along with a programming system for assembling and loading the program into the EDSAC memory prior to execution (see Chapter 9, Sections V and VI). Thus, when he spoke of “methods,” they were his methods. His language to describe these methods is worth noting. He speaks of programs that “are usually” constructed from subroutines, that “it is convenient” to build a library of subroutines,10 that “it is not convenient” to use subroutines in some circumstances,11 and why “it is very necessary” to remove errors from a program before it is used.12
“It is convenient,” “are usually,” “it is not convenient,” “it is very necessary.” The phrases used by Wheeler are not descriptions or analyses of the way things are, but of the way things should be. Wheeler is not like natural scientists or pure mathematicians, who are concerned with how things are; he is concerned with how things ought to be (see Prologue, Section II). Moreover, these phrases do not describe objective situations, objects
, or events of the sort that traditional engineering research deals with. Human beings are part of the system being described. Indeed, “description” is the wrong word. What Wheeler stated were prescriptions, telling the reader (particularly, the potential EDSAC user) how to go about doing certain programming tasks. And prescription is, of course, what methodology is all about.
However, scientific research, not the least research leading to the academic respectability of a PhD, must produce knowledge of some kind. In the natural sciences, knowledge is fundamentally in the form of theories, hypotheses, laws, “facts,” experimental or natural observations, measurements, and so on. These kinds of knowledge declare or state properties or relationships. Colloquially, they are “know-that” knowledge; more formally, declarative knowledge.13
The kind of knowledge produced by Wheeler and described in his dissertation was not declarative knowledge. It might seem that he was declaring what a closed subroutine was, what initiating orders were, what interpretive subroutines were, what the EDSAC assembly language and the assembler–loader system were, but his descriptions of these entities were a means to an end. The knowledge he actually produced was how to use those concepts: “know-how.” Hungarian-British scientist–philosopher Michael Polanyi (1891–1976) called such a piece of knowledge an “operational principle.”14 Accordingly, I will call rules, methods, operations, and procedures that specify how to do things operational knowledge. Technological knowledge, no matter how grounded it is in mathematics or the natural sciences, is ultimately in the form of operational knowledge.15
There are, of course, operational principles in the natural sciences. Experimental techniques, methods of chemical analysis, deployment of scientific instruments all embody operational knowledge. However, the difference is crucial. Operational knowledge in the natural sciences are means to the production of declarative knowledge. A chemist learns to use a spectrometer to obtain (declarative) knowledge of the composition of a complex chemical compound, whereas in the kind of science Wheeler practiced for his PhD dissertation, declarative knowledge is at best the means to the production of operational knowledge. Ultimately, operational knowledge is what matters in the sciences of the artificial.