Skip to main content

Machine Code Programming and Logic

  • Chapter
A Science of Operations

Part of the book series: History of Computing ((HC))

  • 2264 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 139.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 179.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 179.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Burks et al. (1946), p. 100.

  2. 2.

    Turing (1946), p. 43.

  3. 3.

    Wilkes et al. (1951), preface.

  4. 4.

    Aiken (1937).

  5. 5.

    Aiken and Hopper (1946), p. 386.

  6. 6.

    Burks (1947), p. 756.

  7. 7.

    Aiken and Hopper (1946), p. 449.

  8. 8.

    Bloch (1999), p. 87.

  9. 9.

    Goldstine and Goldstine (1946). See Chap. 5 for more discussion.

  10. 10.

    Eckert (1946), p. 114.

  11. 11.

    Alt (1948a).

  12. 12.

    von Neumann (1945), Sects. 5.6–5.7.

  13. 13.

    Marcus and Akera (1996), p. 23.

  14. 14.

    Burks et al. (1946).

  15. 15.

    Mauchly (1947), pp. 204–205.

  16. 16.

    Ceruzzi (1997).

  17. 17.

    Bloch et al. (1948).

  18. 18.

    Mauchly (1947), p. 204.

  19. 19.

    Aiken and Hopper (1946), p. 528.

  20. 20.

    Aiken (1946), p. 156.

  21. 21.

    Goldstine and Goldstine (1946).

  22. 22.

    Bloch (1947).

  23. 23.

    Eckert (1946), p. 116.

  24. 24.

    von Neumann (1945), Sect. 15.

  25. 25.

    Aiken and Hopper (1946).

  26. 26.

    Marcus and Akera (1996).

  27. 27.

    von Neumann (1945), Sect. 11.3.

  28. 28.

    Turing (1946), p. 35.

  29. 29.

    Eckert (1946), p. 122.

  30. 30.

    Burks et al. (1946).

  31. 31.

    Alt (1948a), pp. 72–73.

  32. 32.

    Carpenter and Doran (1977), p. 271.

  33. 33.

    Campbell-Kelly and Williams (1985), p. 108.

  34. 34.

    von Neumann (1945), Sect. 12.2.

  35. 35.

    von Neumann (1945), Sect. 15.1.

  36. 36.

    von Neumann (1945), Sect. 15.3.

  37. 37.

    von Neumann (1945), Sect. 15.6.

  38. 38.

    Turing (1946), pp. 24, 25.

  39. 39.

    Mauchly (1946), p. 455.

  40. 40.

    Mooers (1946), p. 470.

  41. 41.

    Eckert (1946), p. 122.

  42. 42.

    Burks et al. (1946), p. 98.

  43. 43.

    Goldstine and von Neumann (1947), p. 153.

  44. 44.

    See for example Bloch et al. (1948), p. 293, and Bowden (1953), p. 29.

  45. 45.

    Williams (1951), p. 176.

  46. 46.

    Wheeler (1950).

  47. 47.

    Turing (1946), p. 34.

  48. 48.

    Turing (1946), p. 35.

  49. 49.

    Turing (1946), p. 38.

  50. 50.

    Goldstine and von Neumann (1948).

  51. 51.

    Wheeler (1950).

  52. 52.

    Wilkes et al. (1951).

  53. 53.

    Campbell-Kelly and Williams (1985), p. 452.

  54. 54.

    Mooers (1946).

  55. 55.

    Turing (1946), p. 35.

  56. 56.

    Turing (1947), p. 117.

  57. 57.

    Turing (1947), p. 118.

  58. 58.

    Turing (1947), p. 122.

  59. 59.

    Goldstine and von Neumann (1947), p. 154.

  60. 60.

    Bloch et al. (1948).

  61. 61.

    Bowden (1953), p. 17.

  62. 62.

    von Neumann (1945), p. 2.

  63. 63.

    Goldstine and von Neumann (1947), p. 113.

  64. 64.

    Goldstine and von Neumann (1947), p. 115.

  65. 65.

    Berkeley (1950).

  66. 66.

    Carnap (1937).

  67. 67.

    Giloi (1997), p. 18.

  68. 68.

    Bauer (2000), p. 278.

  69. 69.

    See Turing (1949) for an early example of program proving.

  70. 70.

    Wilkes et al. (1951), p. 3.

  71. 71.

    Booth (1949).

  72. 72.

    Huskey (1951).

  73. 73.

    von Neumann (1945), Sect. 15.6.

  74. 74.

    Turing (1946), Sect. 13.

  75. 75.

    Wheeler (1950).

  76. 76.

    Elgot (1954).

  77. 77.

    Patterson (1949).

  78. 78.

    Goldstine and von Neumann (1947), p. 154.

  79. 79.

    Goldstine and von Neumann (1947), p. 84.

  80. 80.

    Goldstine and von Neumann (1947), p. 91.

  81. 81.

    Turing (1949).

  82. 82.

    Aspray and Burks (1987).

  83. 83.

    Renwick (1949).

  84. 84.

    Aspray and Burks (1987), pp. 384–385.

  85. 85.

    Carnap (1937).

  86. 86.

    Wheeler (1950).

  87. 87.

    Wilkes et al. (1951).

References

  • Aiken, H.H.: Proposed automatic calculating machine (1937). Reprinted in Cohen and Welch, pp. 9–29 (1999)

    Google Scholar 

  • 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)

    Google Scholar 

  • Aiken, H.H., Hopper, G.M.: The Automatic Sequence Controlled Calculator. Electr. Eng. 65, 384–391, 449–454, 522–528 (1946)

    Article  MathSciNet  Google Scholar 

  • Alt, F.L.: A Bell Telephone Laboratories computing machine—I. Math. Tables Other Aids Comput. 3(21), 1–13 (1948a)

    Article  MathSciNet  Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • Berkeley, E.C.: The relations between symbolic logic and large-scale calculating machines. Science (New Ser.) 112(2910), 395–399 (1950)

    Article  MathSciNet  Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Article  MathSciNet  Google Scholar 

  • 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)

    Google Scholar 

  • Bowden, B.V. (ed.): Faster than Thought: A Symposium on Digital Computing Machines. Pitman, London (1953)

    MATH  Google Scholar 

  • Burks, A.W.: Electronic computing circuits of the ENIAC. Proc. IRE 35(8), 756–767 (1947)

    Article  MathSciNet  Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • Carnap, R.: The Logical Syntax of Language. Routledge & Kegan Paul, London (1937)

    Google Scholar 

  • Carpenter, B.E., Doran, R.W.: The other Turing machine. Comput. J. 20(3), 269–279 (1977)

    Article  MathSciNet  MATH  Google Scholar 

  • 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)

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Elgot, C.C.: On single vs. triple address computing machines. J. Assoc. Comput. Mach. 1(3), 119–123 (1954)

    Article  Google Scholar 

  • 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)

    Article  Google Scholar 

  • Goldstine, H.H., Goldstine, A.: The electronic numerical integrator and computer (ENIAC). Math. Tables Other Aids Comput. II(15), 97–110 (1946)

    Article  MathSciNet  Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Article  Google Scholar 

  • 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

    Google Scholar 

  • 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)

    Google Scholar 

  • 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

    Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • 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)

    Google Scholar 

  • 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

    Google Scholar 

  • Wheeler, D.J.: Programme organization and initial orders for the EDSAC. Proc. R. Soc. Lond. Ser. A 202, 573–589 (1950)

    Article  MATH  Google Scholar 

  • Wilkes, M.V., Wheeler, D.J., Gill, S.: The Preparation of Programs for an Electronic Digital Computer. Addison-Wesley, Reading (1951)

    MATH  Google Scholar 

  • 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Mark Priestley .

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics