Abstract
The task of programming an automatic calculator or computer, usually referred to as ’coding’, was understood to be that of specifying the sequence of operations that the machine would carry out in the course of a computation. Many different order codes were possible for stored-program machines, and it was only through practical experience that the features of a successful code could be identified. By 1950, however, broad agreement had been reached about the features that a successful and usable code should provide, and Maurice Wilkes and his colleagues in Cambridge published a book describing the programming system that they had devised for the EDSAC. The first half of this chapter describes the key features of their approach, with an emphasis on the process of experimentation and consideration of alternatives that preceded their acceptance. The second half of the chapter considers some more logical and philosophical aspects of this programming style.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Burks et al. (1946), p. 100.
- 2.
Turing (1946), p. 43.
- 3.
Wilkes et al. (1951), preface.
- 4.
Aiken (1937).
- 5.
Aiken and Hopper (1946), p. 386.
- 6.
Burks (1947), p. 756.
- 7.
Aiken and Hopper (1946), p. 449.
- 8.
Bloch (1999), p. 87.
- 9.
- 10.
Eckert (1946), p. 114.
- 11.
Alt (1948a).
- 12.
von Neumann (1945), Sects. 5.6–5.7.
- 13.
Marcus and Akera (1996), p. 23.
- 14.
Burks et al. (1946).
- 15.
Mauchly (1947), pp. 204–205.
- 16.
Ceruzzi (1997).
- 17.
Bloch et al. (1948).
- 18.
Mauchly (1947), p. 204.
- 19.
Aiken and Hopper (1946), p. 528.
- 20.
Aiken (1946), p. 156.
- 21.
Goldstine and Goldstine (1946).
- 22.
Bloch (1947).
- 23.
Eckert (1946), p. 116.
- 24.
von Neumann (1945), Sect. 15.
- 25.
Aiken and Hopper (1946).
- 26.
Marcus and Akera (1996).
- 27.
von Neumann (1945), Sect. 11.3.
- 28.
Turing (1946), p. 35.
- 29.
Eckert (1946), p. 122.
- 30.
Burks et al. (1946).
- 31.
Alt (1948a), pp. 72–73.
- 32.
Carpenter and Doran (1977), p. 271.
- 33.
Campbell-Kelly and Williams (1985), p. 108.
- 34.
von Neumann (1945), Sect. 12.2.
- 35.
von Neumann (1945), Sect. 15.1.
- 36.
von Neumann (1945), Sect. 15.3.
- 37.
von Neumann (1945), Sect. 15.6.
- 38.
Turing (1946), pp. 24, 25.
- 39.
Mauchly (1946), p. 455.
- 40.
Mooers (1946), p. 470.
- 41.
Eckert (1946), p. 122.
- 42.
Burks et al. (1946), p. 98.
- 43.
Goldstine and von Neumann (1947), p. 153.
- 44.
- 45.
Williams (1951), p. 176.
- 46.
Wheeler (1950).
- 47.
Turing (1946), p. 34.
- 48.
Turing (1946), p. 35.
- 49.
Turing (1946), p. 38.
- 50.
Goldstine and von Neumann (1948).
- 51.
Wheeler (1950).
- 52.
Wilkes et al. (1951).
- 53.
Campbell-Kelly and Williams (1985), p. 452.
- 54.
Mooers (1946).
- 55.
Turing (1946), p. 35.
- 56.
Turing (1947), p. 117.
- 57.
Turing (1947), p. 118.
- 58.
Turing (1947), p. 122.
- 59.
Goldstine and von Neumann (1947), p. 154.
- 60.
Bloch et al. (1948).
- 61.
Bowden (1953), p. 17.
- 62.
von Neumann (1945), p. 2.
- 63.
Goldstine and von Neumann (1947), p. 113.
- 64.
Goldstine and von Neumann (1947), p. 115.
- 65.
Berkeley (1950).
- 66.
Carnap (1937).
- 67.
Giloi (1997), p. 18.
- 68.
Bauer (2000), p. 278.
- 69.
See Turing (1949) for an early example of program proving.
- 70.
Wilkes et al. (1951), p. 3.
- 71.
Booth (1949).
- 72.
Huskey (1951).
- 73.
von Neumann (1945), Sect. 15.6.
- 74.
Turing (1946), Sect. 13.
- 75.
Wheeler (1950).
- 76.
Elgot (1954).
- 77.
Patterson (1949).
- 78.
Goldstine and von Neumann (1947), p. 154.
- 79.
Goldstine and von Neumann (1947), p. 84.
- 80.
Goldstine and von Neumann (1947), p. 91.
- 81.
Turing (1949).
- 82.
Aspray and Burks (1987).
- 83.
Renwick (1949).
- 84.
Aspray and Burks (1987), pp. 384–385.
- 85.
Carnap (1937).
- 86.
Wheeler (1950).
- 87.
Wilkes et al. (1951).
References
Aiken, H.H.: Proposed automatic calculating machine (1937). Reprinted in Cohen and Welch, pp. 9–29 (1999)
Aiken, H.H.: The Automatic Sequence Controlled Calculator. Lecture delivered 16 July 1946. In: Campbell-Kelly, M., Williams, M.R. (eds.) The Moore School Lectures: Theory and Techniques for Design of Electronic Digital Computers. Charles Babbage Institute Reprint Series for the History of Computing, vol. 9, pp. 149–168. MIT Press, Cambridge (1985)
Aiken, H.H., Hopper, G.M.: The Automatic Sequence Controlled Calculator. Electr. Eng. 65, 384–391, 449–454, 522–528 (1946)
Alt, F.L.: A Bell Telephone Laboratories computing machine—I. Math. Tables Other Aids Comput. 3(21), 1–13 (1948a)
Aspray, W., Burks, A.: Papers of John von Neumann on Computing and Computing Theory. Charles Babbage Institute Reprint Series for the History of Computing, vol. 12. MIT Press, Cambridge (1987)
Bauer, F.L.: The Plankalkül of Konrad Zuse—revisited (2000). In: Rojas, R., Hashagen, U. (eds.) The First Computers—History and Architecture, pp. 277–293. MIT Press, Cambridge (2000)
Berkeley, E.C.: The relations between symbolic logic and large-scale calculating machines. Science (New Ser.) 112(2910), 395–399 (1950)
Bloch, R.M.: Mark I calculator (1947). In: Proceedings of a Symposium on Large-Scale Digital Calculating Machinery, 7–10 January 1947. The Annals of the Computation Laboratory of Harvard University, vol. XVI, pp. 23–30. The Navy Department Bureau of Ordnance and Harvard University, Harvard University Press, Cambridge (1947)
Bloch, R.M.: Programming Mark I (1999). In: Cohen, I.B., Welch, G.W. (eds.) Makin’ Numbers: Howard Aiken and the Computer. MIT Press, Cambridge (1999)
Bloch, R.M., Campbell, R.V.D., Ellis, M.: The logical design of the Raytheon computer. Math. Tables Other Aids Comput. III(24), 286–295 (1948)
Booth, A.D.: Relay computers (1949). In: Report of a Conference on High Speed Automatic Calculating Machines, 22–25 June 1949, pp. 27–30. Cambridge University Mathematical Laboratory, Cambridge (1950)
Bowden, B.V. (ed.): Faster than Thought: A Symposium on Digital Computing Machines. Pitman, London (1953)
Burks, A.W.: Electronic computing circuits of the ENIAC. Proc. IRE 35(8), 756–767 (1947)
Burks, A.W., Goldstine, H.H., von Neumann, J.: Preliminary discussion of the logical design of an electronic computing instrument. Technical Report, Institute of Advanced Study (1946). 2nd edn. (2 September 1947) reprinted in Aspray and Burks, pp. 97–142 (1987)
Campbell-Kelly, M., Williams, M.R. (eds.): The Moore School Lectures: Theory and Techniques for Design of Electronic Digital Computers. Charles Babbage Institute Reprint Series for the History of Computing, vol. 9. MIT Press, Cambridge (1985)
Carnap, R.: The Logical Syntax of Language. Routledge & Kegan Paul, London (1937)
Carpenter, B.E., Doran, R.W.: The other Turing machine. Comput. J. 20(3), 269–279 (1977)
Ceruzzi, P.E.: Crossing the divide: architectural issues and the emergence of the stored program computer, 1935–1955. IEEE Ann. Hist. Comput. 19(1), 5–12 (1997)
Eckert, J.P. Jr.: A preview of a digital computing machine (1946). In: Campbell-Kelly, M., Williams, M.R. (eds.) The Moore School Lectures: Theory and Techniques for Design of Electronic Digital Computers. Charles Babbage Institute Reprint Series for the History of Computing, vol. 9, pp. 109–126. MIT Press, Cambridge (1985). Lecture delivered 15 July 1946
Elgot, C.C.: On single vs. triple address computing machines. J. Assoc. Comput. Mach. 1(3), 119–123 (1954)
Giloi, W.K.: Konrad Zuse’s Plankalkül: the first high-level, “non von Neumann” programming language. IEEE Ann. Hist. Comput. 19(2), 17–24 (1997)
Goldstine, H.H., Goldstine, A.: The electronic numerical integrator and computer (ENIAC). Math. Tables Other Aids Comput. II(15), 97–110 (1946)
Goldstine, H.H., von Neumann, J.: Planning and coding problems for an electronic computing instrument, Part II, vol. 1. Technical Report, Institute of Advanced Study (1947). Reprinted in Aspray and Burks, pp. 151–222 (1987)
Goldstine, H.H., von Neumann, J.: Planning and coding problems for an electronic computing instrument, Part II, vol. 3. Technical Report, Institute of Advanced Study (1948). Reprinted in Aspray and Burks, pp. 286–306 (1987)
Huskey, H.D.: Semiautomatic instruction on the Zephyr (1951). In: Proceedings of a Second Symposium on Large-Scale Digital Calculation Machinery, 13–16 September 1949. The Annals of the Computation Laboratory of Harvard University, vol. XXVI, pp. 83–90. The Navy Department Bureau of Ordnance and Harvard University, Harvard University Press, Cambridge (1951)
Marcus, M., Akera, A.: Exploring the architecture of an early machine: the historical relevance of the ENIAC machine architecture. IEEE Ann. Hist. Comput. 18(1), 17–24 (1996)
Mauchly, J.W.: Code and control II: machine design and instruction codes (1946). In: Campbell-Kelly, M., Williams, M.R. (eds.) The Moore School Lectures: Theory and Techniques for Design of Electronic Digital Computers. Charles Babbage Institute Reprint Series for the History of Computing, vol. 9, pp. 453–461. MIT Press, Cambridge (1985). Lecture delivered 9 August 1946
Mauchly, J.W.: Preparation of problems for EDVAC-type machines (1947). In: Proceedings of a Symposium on Large-Scale Digital Calculating Machinery, 7–10 January 1947. The Annals of the Computation Laboratory of Harvard University, vol. XVI, pp. 203–207. The Navy Department Bureau of Ordnance and Harvard University, Harvard University Press, Cambridge (1947)
Mooers, C.N.: Code and control IV: example of a three-address code and the use of “stop order tags” (1946). In: Campbell-Kelly, M., Williams, M.R. (eds.) The Moore School Lectures: Theory and Techniques for Design of Electronic Digital Computers. Charles Babbage Institute Reprint Series for the History of Computing, vol. 9, pp. 465–484. MIT Press, Cambridge (1985). Lecture delivered 12 August 1946
Patterson, G.W.: Logical syntax and transformation rules (1949). In: Proceedings of a Second Symposium on Large-Scale Digital Calculation Machinery, 13–16 September 1949. The Annals of the Computation Laboratory of Harvard University, vol. XXVI, pp. 125–133. The Navy Department Bureau of Ordnance and Harvard University, Harvard University Press, Cambridge (1951)
Renwick, W.: The E.D.S.A.C. demonstration (1949). In: Report of a Conference on High Speed Automatic Calculating Machines, 22–25 June 1949, pp. 21–26. University Mathematical Laboratory, Cambridge (1950)
Turing, A.M.: Proposal for development in the mathematics department of an automatic computing engine (ACE). Technical Report, National Physical Laboratory, Teddington, UK (1946). Reprinted in Carpenter and Doran, pp. 20–105 (1986)
Turing, A.M.: Checking a large routine (1949). In: Report of a Conference on High Speed Automatic Calculating Machines, 22–25 June 1949, pp. 70–72. University Mathematical Laboratory, Cambridge (1950)
Turing, A.M.: Lecture to the London Mathematical Society on 20 February 1947. In: Carpenter, B.E., Doran, R.W. (eds.) A.M. Turing’s ACE Report of 1946 and Other Papers. Charles Babbage Institute Reprint Series for the History of Computing, vol. 10, pp. 106–124. MIT Press, Cambridge (1986)
von Neumann, J.: First draft of a report on the EDVAC. Technical Report, Moore School of Electrical Engineering, University of Pennsylvania (1945). Reprinted as von Neumann (1993) with corrections by Michael D. Godfrey
Wheeler, D.J.: Programme organization and initial orders for the EDSAC. Proc. R. Soc. Lond. Ser. A 202, 573–589 (1950)
Wilkes, M.V., Wheeler, D.J., Gill, S.: The Preparation of Programs for an Electronic Digital Computer. Addison-Wesley, Reading (1951)
Williams, F.C.: The University of Manchester computing machine (1951). In: Manchester University Computer, Inaugural Conference, July 1951, pp. 171–177 (1951). Reprinted in Williams and Campbell-Kelly, pp. 165–206 (1989)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2011 Springer-Verlag London Limited
About this chapter
Cite this chapter
Priestley, M. (2011). Machine Code Programming and Logic. In: A Science of Operations. History of Computing. Springer, London. https://doi.org/10.1007/978-1-84882-555-0_7
Download citation
DOI: https://doi.org/10.1007/978-1-84882-555-0_7
Publisher Name: Springer, London
Print ISBN: 978-1-84882-554-3
Online ISBN: 978-1-84882-555-0
eBook Packages: Computer ScienceComputer Science (R0)