Programming Systems: in Search of Historical and Philosophical Foundations

  • Liesbeth De Mol
  • Giuseppe Primiero
Part of the Philosophical Studies Series book series (PSSP, volume 133)


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.


History of programming systems Software crisis Formal methods Grand design systems Ethical legal and political issues of software systems 


  1. 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
  2. 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.CrossRefGoogle Scholar
  3. Berry, D.M. 2011. The philosophy of software—Code and meditation in the digital age. New York: Palgrave MacMillan.Google Scholar
  4. Binns, R. 2017. Algorithmic accountability and public reason. Philosophy & Technology. CrossRefGoogle Scholar
  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.Google Scholar
  6. Chafkin, M. 2016. Uber’s first self-driving fleet arrives in Pittsburgh this month. Bloomberg Businesweek, 18 Aug 2016.
  7. 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.CrossRefGoogle Scholar
  8. Daylight, E.G. 2015. Towards a historical notion of ‘Turing-the father of computer science’. History and Philosophy of Logic 36(3): 205–228.CrossRefGoogle Scholar
  9. 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:
  10. 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:
  11. Diakopoulos, N., and S. Friedler. 2016. How to hold algorithms accountable. MIT Technology Review. Google Scholar
  12. Dijkstra, E.W. 1972. The humble programmer. Communications of the ACM 15: 859–866.CrossRefGoogle Scholar
  13. Ensmenger, N. 2010. The computer boys take over. Cambridge: MIT Press.CrossRefGoogle Scholar
  14. Fetzer, J.H. 1988. Program verification: The very idea. Communications of the ACM 31(9): 1048–1063.CrossRefGoogle Scholar
  15. 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
  16. 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
  17. 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.CrossRefGoogle Scholar
  18. 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
  19. 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.CrossRefGoogle Scholar
  20. Haigh, T., M. Priestley, and C. Rope. 2014. Reconsidering the stored-program concept. IEEE Annals of the History of Computing 36(1): 4–17.CrossRefGoogle Scholar
  21. Haigh, T., M. Priestley, and C. Rope. 2016. Eniac in action. Making and remaking the modern computer. Cambridge/London: MIT Press.Google Scholar
  22. Hashagen, U., R. Keil-Slawik, and A.L. Norberg, eds. 2002. History of computing: Software issues. Berlin: Springer.Google Scholar
  23. Hopper, G. 1980. Keynote address. In History of programming languages, ed. R.L. Wexelblat, 7–24. ACM Press: New York.Google Scholar
  24. MacKenzie, D.A. 2004. Mechanizing proof—Computing, risk, and trust. MIT Press: Cambridge, Massachusetts.Google Scholar
  25. Mahoney, M. 2008. What makes the history of software hard? IEEE Annals for the history of Computing 30(3): 8–18.CrossRefGoogle Scholar
  26. 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.CrossRefGoogle Scholar
  27. 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
  28. Neumann, P.G. 2017. Trustworthiness and truthfulness are essential. Communications of the ACM 60(6): 1–3.CrossRefGoogle Scholar
  29. 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.CrossRefGoogle Scholar
  30. 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
  31. 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
  32. Raymond, E.S. 2003. The art of Unix programming. Addison-Wesley Professional: Boston, US.Google Scholar
  33. Silberschatz, A., P.B. Galvin, and G. Gagne. 2011. Operating system concepts. Wiley and Sons: Hoboken, NJ, US.Google Scholar
  34. Strachey, C. 1967. Fundamental concepts in programming languages. Higher-Order and Symbolic Computation 2000 13: 11–49.CrossRefGoogle Scholar
  35. Taddeo, M. 2017. Trusting digital technologies correctly. Minds & Machines. CrossRefGoogle Scholar
  36. Tanenbaum, A.S. 2008. Modern operating systems, 3rd ed. Upper Saddle River: Pearson International Edition.Google Scholar
  37. Tedre, M. 2015. The science of Computing. Shaping a discipline. Boca Raton: CRC Press.Google Scholar
  38. 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
  39. von Neumann, J. 1945. First draft of a report on the EDVAC, University of Pennsylvania, 30 June 1945. Available from: Google Scholar
  40. 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.CrossRefGoogle Scholar
  41. Wilkes, M.V., D.J. Wheeler, and S. Gill. 1951. The preparation of programs for an electronic computer, 2nd ed. 1967. Addison-Wesley: Reading, MassachusettsGoogle Scholar
  42. Wirth, N. 1995. A plea for lean software. Computer 28(2): 64–68.CrossRefGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  1. 1.CNRS, UMR 8163 Savoirs, Textes, LangageVilleneuve d’AscqFrance
  2. 2.Department of PhilosophyUniversity of MilanMilanoItaly

Personalised recommendations