Skip to main content

Programming Systems: in Search of Historical and Philosophical Foundations

  • Chapter
  • First Online:
Reflections on Programming Systems

Part of the book series: Philosophical Studies Series ((PSSP,volume 133))

  • 228 Accesses

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.

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 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 119.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 159.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.

    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. 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. 3.

    Quoted in Chafkin (2017).

  4. 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. 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. 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. 7.

    There are different understandings of the origins of the stored-program concept, its intellectual lineage and its historical implementation and understanding. See Haigh et al. (2014) and Copeland and Sommaruga (2015) for two different interpretations.

  8. 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. 9.

    Daylight (2015), for instance, discusses the approach of the so-called ‘space cadets’. See also Nofre et al. (2014) for a discussion of the use of the notion of language in this context.

  10. 10.

    See Hopper (1980) for a personal account of that development.

  11. 11.

    See Mahoney (2008) for a historical take on this wordplay.

  12. 12.

    See Haigh (2010) and Ensmenger (2010) for two different interpretations of the impact of the so-called software crisis.

  13. 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. 14.

    Which is basically the ‘worse is better’ philosophy. See also Chap. 6.

  15. 15.

    For historical works, see Brennecke and Keil-Slawik (2002) and Hashagen et al. (2002). For computer science works, see Tanenbaum (2008) and Silberschatz et al. (2011); for a philosophical approach to software with some aspects related to systems, see Berry (2011).

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.

    Google Scholar 

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

    Article  Google Scholar 

  • Berry, D.M. 2011. The philosophy of software—Code and meditation in the digital age. New York: Palgrave MacMillan.

    Google Scholar 

  • Binns, R. 2017. Algorithmic accountability and public reason. Philosophy & Technology. https://doi.org/10.1007/s13347-017-0263-5

    Article  Google Scholar 

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

    Google Scholar 

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

    Chapter  Google Scholar 

  • Daylight, E.G. 2015. Towards a historical notion of ‘Turing-the father of computer science’. History and Philosophy of Logic 36(3): 205–228.

    Article  Google Scholar 

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

    Google Scholar 

  • Dijkstra, E.W. 1972. The humble programmer. Communications of the ACM 15: 859–866.

    Article  Google Scholar 

  • Ensmenger, N. 2010. The computer boys take over. Cambridge: MIT Press.

    Book  Google Scholar 

  • Fetzer, J.H. 1988. Program verification: The very idea. Communications of the ACM 31(9): 1048–1063.

    Article  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Article  Google Scholar 

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

    Google Scholar 

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

    Article  Google Scholar 

  • Haigh, T., M. Priestley, and C. Rope. 2014. Reconsidering the stored-program concept. IEEE Annals of the History of Computing 36(1): 4–17.

    Article  Google Scholar 

  • Haigh, T., M. Priestley, and C. Rope. 2016. Eniac in action. Making and remaking the modern computer. Cambridge/London: MIT Press.

    Google Scholar 

  • Hashagen, U., R. Keil-Slawik, and A.L. Norberg, eds. 2002. History of computing: Software issues. Berlin: Springer.

    Google Scholar 

  • Hopper, G. 1980. Keynote address. In History of programming languages, ed. R.L. Wexelblat, 7–24. ACM Press: New York.

    Google Scholar 

  • MacKenzie, D.A. 2004. Mechanizing proof—Computing, risk, and trust. MIT Press: Cambridge, Massachusetts.

    Google Scholar 

  • Mahoney, M. 2008. What makes the history of software hard? IEEE Annals for the history of Computing 30(3): 8–18.

    Article  Google Scholar 

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

    Article  Google Scholar 

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

    Article  Google Scholar 

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

    Article  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  • Raymond, E.S. 2003. The art of Unix programming. Addison-Wesley Professional: Boston, US.

    Google Scholar 

  • Silberschatz, A., P.B. Galvin, and G. Gagne. 2011. Operating system concepts. Wiley and Sons: Hoboken, NJ, US.

    Google Scholar 

  • Strachey, C. 1967. Fundamental concepts in programming languages. Higher-Order and Symbolic Computation 2000 13: 11–49.

    Article  Google Scholar 

  • Taddeo, M. 2017. Trusting digital technologies correctly. Minds & Machines. https://doi.org/10.1007/s11023-017-9450-5

    Article  Google Scholar 

  • Tanenbaum, A.S. 2008. Modern operating systems, 3rd ed. Upper Saddle River: Pearson International Edition.

    Google Scholar 

  • Tedre, M. 2015. The science of Computing. Shaping a discipline. Boca Raton: CRC Press.

    Google Scholar 

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

    Google Scholar 

  • 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

    Google Scholar 

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

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Wirth, N. 1995. A plea for lean software. Computer 28(2): 64–68.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Liesbeth De Mol .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

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

Publish with us

Policies and ethics