Abstract
This chapter introduces the topics investigated in this book and it frames them in a broader historical and philosophical analysis of programming and computing technology.
Keywords
Today we tend to go on for years, with tremendous investments to find that the system, which was not well understood to start with, does not work as anticipated. We build systems like the Wright brothers built airplanes—build the whole thing, push it off the cliff, let it crash, and start over again.
(Graham, in Software Engineering and Society, Naur and Randell 1968.)
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
This is a long standing issue in computing, touching on several areas. One of the early and most broad views on computing, risk and trust can be found in MacKenzie (2004). Recently, the area of computational trust has grown sensibly in its impact and applications, from software packages distribution systems to vehicular networks, see e.g. Primiero and Boender (2017) and Primiero et al. (2017) for some approach and overviews of the related literatures. For a high-level commentary on trust of digital technologies, see Taddeo (2017).
- 2.
The issue of algorithm accountability is gaining much traction, especially in view of current progress in AI. For a recent high-level analysis of the problem, see Diakopoulos and Friedler (2016). For contributions concerning the debate on the ethical relevance of algorithms in terms of accountability and their public impact, see Mittelstadt et al. (2016) and Binns (2017).
- 3.
Quoted in Chafkin (2017).
- 4.
See Grier (1996). Obviously, an ENIAC program is something quite different from a program expressed in a high-level language. See Haigh et al. (2016) for a different approach in which one starts from a generic definition of ‘program’ (as a ‘sequencing of operations’), and a ‘modern program’ is rooted in the ENIAC machine and the EDVAC design.
- 5.
More particularly, the approach taken by von Neumann was the identification of different steps in the preparation and set-up of a problem—a kind of division of labor—where the most prominent stage is that in which the ‘dynamics’ of a program is captured by means of a flowchart. The other is due to Curry, who focussed on the automation of the coding process and developed a logic for program compositionality. See De Mol et al. (2015) for a partial comparison between the two approaches.
- 6.
It should be added that this is the standard narrative. Of course, there were many variants on the EDVAC design and also entirely different designs such as that for the Whirlwind which was not serial. See also Backus (1978) for a critical discussion of the von Neumann method.
- 7.
- 8.
See for instance the development of microprogramming which is basically an approach to hardware programming (Wilkes and Stringer 1953, p. 230): “This paper describes a method of designing the control circuits of a machine which is wholly logical and which enables alterations or additions to the order code to be made without ad hoc alterations to the circuits” De Mol et al. (2017) discusses several machines, some of which fit into the microprogramming strategy, that stick close to the hardware and develop optimum coding techniques such as latency and underwater programming.
- 9.
- 10.
See Hopper (1980) for a personal account of that development.
- 11.
See Mahoney (2008) for a historical take on this wordplay.
- 12.
- 13.
During a talk titled Fundamental concepts of programming languages given at the International Summer School in Computer Programming in Copenhagen, in August 1967, (Strachey 1967).
- 14.
Which is basically the ‘worse is better’ philosophy. See also Chap. 6.
- 15.
References
Anderson, J.P., S.H. Hoffman, J. Shiman, and R.J. Williams. 1962. The D-825, a multiple-computer system for command & control. In 1962 Fall Joint Computer Conference (AFIPS), 86–96.
Backus, J. 1978. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Communications of the ACM 21(8): 613–641.
Berry, D.M. 2011. The philosophy of software—Code and meditation in the digital age. New York: Palgrave MacMillan.
Binns, R. 2017. Algorithmic accountability and public reason. Philosophy & Technology. https://doi.org/10.1007/s13347-017-0263-5
Brennecke, A., and R. Keil-Slawik. 1996. History of software engineering, 26–30 Aug 1996, Dagstuhl seminar 9635, organized by W. Aspray, R. Keil-Slawik, and D.L. Parnas.
Chafkin, M. 2016. Uber’s first self-driving fleet arrives in Pittsburgh this month. Bloomberg Businesweek, 18 Aug 2016. https://www.bloomberg.com/news/features/2016-08-18/uber-s-first-self-driving-fleet-arrives-in-pittsburgh-this-month-is06r7on
Copeland, B.J., and G. Sommaruga. 2015. The Stored-program universal computer: Did zuse anticipate turing and von Neumann? In Turing’s revolution, ed. G. Sommaruga, and T. Strahm, 43–101. Birkhauser: Springer International Publishing Switzerland.
Daylight, E.G. 2015. Towards a historical notion of ‘Turing-the father of computer science’. History and Philosophy of Logic 36(3): 205–228.
De Mol, L., M. Carl´e, and M. Bullynck. 2015. Haskell before Haskell. An alternative lesson in practical logics of the ENIAC. Journal of Logic and Computation 25(4): 1011–1046. A version is available from: http://hal.univ-lille3.fr/hal-01396482/document
De Mol, L., M. Bullynck, and E. Daylight. 2017. Less is more in the Fifties. Encounters between Logical minimalism and computer design during the 1950s. Available from: http://www.hal.univ-lille3.fr/hal-01345592v2/document
Diakopoulos, N., and S. Friedler. 2016. How to hold algorithms accountable. MIT Technology Review. https://www.technologyreview.com/s/602933/how-to-hold-algorithms-accountable/
Dijkstra, E.W. 1972. The humble programmer. Communications of the ACM 15: 859–866.
Ensmenger, N. 2010. The computer boys take over. Cambridge: MIT Press.
Fetzer, J.H. 1988. Program verification: The very idea. Communications of the ACM 31(9): 1048–1063.
Goldstine, H.H., and J. von Neumann. 1947. Planning and coding of problems for an electronic computing instrument. Report on the mathematical and logical aspects of an electronic computing instrument, vol. 2, Parts I, II and III, 1947–1948. Report prepared for U. S. Army Ordnance Department under Contract W-36-034-ORD-7481.
Goldstine, H.H., and J. von Neumann. 1946. On the principles of large-scale computing machines. In Papers of John von Neumann on computing and computer theory, ed. W. Aspray, and A. Burks, 317–348. Cambridge: MIT Press, 1987.
Grier, D.A. 1996. The ENIAC, the verb ‘to program’ and the emergence of digital computers. IEEE Annals for the History of Computing 18(1): 51–55.
Haigh, T. 2010. Dijkstra’s crisis: The end of Algol and the beginning of software engineering: 1968–1972. In Workshop on the History of Software, European Styles. Lorentz Center, University of Leiden.
Haigh, T., and M. Priestley. 2016. Where code comes from: Architectures of automatic control from Babbage to algol. Communications of the ACM 59(1): 39–44.
Haigh, T., M. Priestley, and C. Rope. 2014. Reconsidering the stored-program concept. IEEE Annals of the History of Computing 36(1): 4–17.
Haigh, T., M. Priestley, and C. Rope. 2016. Eniac in action. Making and remaking the modern computer. Cambridge/London: MIT Press.
Hashagen, U., R. Keil-Slawik, and A.L. Norberg, eds. 2002. History of computing: Software issues. Berlin: Springer.
Hopper, G. 1980. Keynote address. In History of programming languages, ed. R.L. Wexelblat, 7–24. ACM Press: New York.
MacKenzie, D.A. 2004. Mechanizing proof—Computing, risk, and trust. MIT Press: Cambridge, Massachusetts.
Mahoney, M. 2008. What makes the history of software hard? IEEE Annals for the history of Computing 30(3): 8–18.
Mittelstadt, B.D., P. Allo, M. Taddeo, S. Wachter, and L. Floridi. 2016. The ethics of algorithms: Mapping the debate. Big Data & Society 3: 1–21.
Naur, P., and B. Randell, eds. 1968. Software engineering. Report on a conference sponsored by the NATO science Committee, Garmisch, Germany, 7–11 Oct 1968. Available from http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF
Neumann, P.G. 2017. Trustworthiness and truthfulness are essential. Communications of the ACM 60(6): 1–3.
Nofre, D., M. Priestley, and G. Alberts. 2014. When technology became language: The origins of the linguistic conception of computer programming, 1950–1960. Technology and Culture 55(1): 40–75.
Primiero, G., and J. Boender. 2017. Managing software uninstall with negative trust. In Trust Management XI—11th IFIP WG 11.11 International Conference, IFIPTM 2017, IFIP Advances in Information and Communication Technology, vol. 505, ed. Jan-Philipp Steghöfer and Babak Esfandiari, 79–93. Springer.
Primiero, G., F. Raimondi, T. Chen, and R. Nagarajan. 2017. A proof-theoretic trust and reputation model for VANET. In 2017 IEEE European Symposium on Security and Privacy Workshops, EuroS&P Workshops 2017, 146–152.
Raymond, E.S. 2003. The art of Unix programming. Addison-Wesley Professional: Boston, US.
Silberschatz, A., P.B. Galvin, and G. Gagne. 2011. Operating system concepts. Wiley and Sons: Hoboken, NJ, US.
Strachey, C. 1967. Fundamental concepts in programming languages. Higher-Order and Symbolic Computation 2000 13: 11–49.
Taddeo, M. 2017. Trusting digital technologies correctly. Minds & Machines. https://doi.org/10.1007/s11023-017-9450-5
Tanenbaum, A.S. 2008. Modern operating systems, 3rd ed. Upper Saddle River: Pearson International Edition.
Tedre, M. 2015. The science of Computing. Shaping a discipline. Boca Raton: CRC Press.
Turing, A.M. 1946. Lecture to the London mathematical society on 20 Feb 1947. In A.M. Turing’s ACE Report of 1946 and Other papers, ed. Brian E. Carpenter and Robert W. Doran, 106–124. MIT Press, 1986.
von Neumann, J. 1945. First draft of a report on the EDVAC, University of Pennsylvania, 30 June 1945. Available from: http://www.virtualtravelog.net/entries/2003-08-TheFirstDraft.pdf
Wilkes, M., and B. Stringer. 1953. Micro-programmingand the design of the control circuits in an electronic digital computer. Mathematical Proceedings of the Cambridge Philosophical Society 49(2): 230–238.
Wilkes, M.V., D.J. Wheeler, and S. Gill. 1951. The preparation of programs for an electronic computer, 2nd ed. 1967. Addison-Wesley: Reading, Massachusetts
Wirth, N. 1995. A plea for lean software. Computer 28(2): 64–68.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this chapter
Cite this chapter
De Mol, L., Primiero, G. (2018). Programming Systems: in Search of Historical and Philosophical Foundations. In: De Mol, L., Primiero, G. (eds) Reflections on Programming Systems. Philosophical Studies Series, vol 133. Springer, Cham. https://doi.org/10.1007/978-3-319-97226-8_1
Download citation
DOI: https://doi.org/10.1007/978-3-319-97226-8_1
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-97225-1
Online ISBN: 978-3-319-97226-8
eBook Packages: Religion and PhilosophyPhilosophy and Religion (R0)