Philosophy & Technology

, Volume 29, Issue 4, pp 335–356 | Cite as

The Invention of the Object: Object Orientation and the Philosophical Development of Programming Languages

Research Article

Abstract

Programming languages have developed significantly over the past century to provide complex models to think about and describe the world and processes of computation. Out of Alan Kay’s Smalltalk and a number of earlier languages, object-oriented programming has emerged as a preeminent mode of writing and organizing programs. Tracing the history of object-oriented programming from its origins in Simula and Sketchpad through Smalltalk, particularly its philosophical and technical developments, offers unique insights into philosophical questions about objects, language, and our digital technologies. These early attempts to understand objects as basic elements of computation demonstrate the ways in which language, while firmly planted in the material reality of computation, must delimit objects from each other. This essay critically explores this history and explicates a theory of objects suggested by the development of object-oriented programming languages, which insists on the importance of language for representing and delimiting objects. It argues that the philosophies behind object-oriented programming are ultimately opposed to the claims of object-oriented ontology and find themselves more closely allied with philosophies that insist on the mediation of what exists through language.

Keywords

Programming languages Object-oriented programming Philosophy of computing Object-oriented philosophy 

References

  1. Abadi, M. and Cardelli L. (1995). An imperative object calculus. TAPSOFT’95: Theory and Practice of Software Development, 469–485.Google Scholar
  2. Abadi, M., & Cardelli, L. (1996). A theory of objects. New York: Springer.CrossRefGoogle Scholar
  3. Alt, C. (2011). Objects of our affection: how object orientation made computers a medium. In E. Huhtamo & J. Parrika (Eds.), Media archaeology: approaches, applications, and implications. Oakland: University of California Press.Google Scholar
  4. Barad, K. (2007). Meeting the universe halfway: quantum physics and the entanglement of matter and meaning. Durham: Duke University Press.CrossRefGoogle Scholar
  5. Blackwell, A. and Rodden, K. (2003). Preface in Sutherland, (pp. 3–6).Google Scholar
  6. Bloch. (2001). Effective Java. Boston: Addison-Wesley.Google Scholar
  7. Dahl, O. (2004). The birth of object orientation: the Simula Languages in from object-orientation to formal methods, lecture notes in computer science, 2635 of the series Lecture Notes in Computer Science, 15–25Google Scholar
  8. Dean, J., & Ghemawat, S. (2008). MapReduce: simplified data processing on large clusters. Communications of the ACM, 51(1), 107–113.CrossRefGoogle Scholar
  9. Derrida, J. (1993). Circumfessions. In G. Bennington, & J. Derrida (Eds.), Jacques Derrida (pp. 3–315). Chicago: University of Chicago Press.Google Scholar
  10. Evens, A. (2006). Object-oriented ontology, or programming’s creative fold. Angelaki: Journal of Theoretical Humanities, 11(1), 89–97.CrossRefGoogle Scholar
  11. Galloway, A. (2004). Protocol: how control exists after decentralization. Cambridge: MIT Press.Google Scholar
  12. Galloway, A. (2006). Language wants to be overlooked: on software and ideology. Journal of Visual Culture, 5(3), 315–331.CrossRefGoogle Scholar
  13. Galloway, A. (2013). The poverty of philosophy: realism and post-Fordism. Critical Inquiry, 39(2), 347–366.CrossRefGoogle Scholar
  14. Goetz, B. (2004). Java theory and practice: fixing the Java memory model, Part 2. IBM. https://www.ibm.com/developerworks/library/j-jtp03304/j-jtp03304-pdf.pdf
  15. Golumbia, D. (2009). The cultural logic of computation. Boston: Harvard University Press.CrossRefGoogle Scholar
  16. Harman, G. (2011). On the undermining of objects: grant, Bruno, and radical philosophy. In L. Bryant, N. Srnicek, and G. Harman (Eds.), The speculative turn: continental materialism and realism (pp. 21–40). Victoria: re. Press, 2011.Google Scholar
  17. Hayles, K. (1999). How we became posthuman: virtual bodies in cybernetics, literature, and informatics. Chicago: University of Chicago Press.CrossRefGoogle Scholar
  18. Holmevik, J. (1994). Compiling SIMULA: a historical study of technological genesis. IEEE Annals of the History of Computing, 16(4), 25–37.CrossRefGoogle Scholar
  19. Kafura, D., & Lavender, G. (1993). Concurrent object-oriented languages and the inheritance anomaly. In M. Quinn (Ed.), Parallel computers: theory and practice (pp. 221–264). New York: McGraw-Hill.Google Scholar
  20. Kay, A. (1996). The early history of Smalltalk in history of programming languages II (pp. 511–598). New York: Association for Computing Machinery.Google Scholar
  21. Kay, A. and Ram, S. (2003). On the meaning of “object-oriented programming.” E-mail exchange. http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en. Accessed: 15 December 2015
  22. Kittler, F. (1995). There is no software. CTheory, 10(18), 147–155.Google Scholar
  23. Kittler, F. (1999). Gramophone, film, typewriter. Translated by Winthrop-Young, G. and Wutz, M. Stanford: Stanford University Press.Google Scholar
  24. Krogdahl, S. (2003). The birth of Simula. HiNC 1 (History of Nordic Computing) Conference.Google Scholar
  25. Manovich. (2013). Software takes command. New York: Bloomsbury.Google Scholar
  26. Milner, R. (1999). Communicating and mobile systems: the π-calculus. Cambridge: Cambridge University Press.Google Scholar
  27. Nygaard, K., & Dahl, O. (1978). The development of the SIMULA languages I. ACM SIGPLAN Notices, 13(8), 245–272.CrossRefGoogle Scholar
  28. Meillassoux, Q. (2008). After finitude: an essay on the necessity of contingency. Translated by Brassier, R. London: Continuum.Google Scholar
  29. Priestley, M. (2011). A science of operations. New York: Springer.CrossRefGoogle Scholar
  30. Robson, D. (1981). Object-oriented software systems. Byte Magazine, 6(8), 74–82.Google Scholar
  31. Ross, D. (1961). A generalized technique for symbol manipulation and numerical calculation. Communications of the ACM, 4(3), 147–150.CrossRefGoogle Scholar
  32. Salomon, D. (1993). Assemblers and loaders. West Sussex: Ellis Horwood. Available: http://www.davidsalomon.name/assem.advertis/asl.pdf.Google Scholar
  33. Smith, B. (1996). On the origin of objects. Cambridge: MIT Press.Google Scholar
  34. Sutherland, I. (2003). Sketchpad: a man–machine graphical communication system. Cambridge: University of Cambridge.Google Scholar
  35. Thacker, E. (2004). Foreword: protocol is as protocol does in Galloway, a. protocol: how control exists after decentralization (pp. xi-xxii). Cambridge: MIT Press.Google Scholar
  36. White, G. (2004). The philosophy of computer languages in Floridi, L. The Blackwell Guide to the Philosophy of Computing and Information (237–247). Oxford: Blackwell Publishing.Google Scholar
  37. Wolfram, S. (2002). A new kind of science. Champaign: Wolfram Media.Google Scholar
  38. Yares, E. (2013). 50 years of CAD. Design World, February 13, 2013Google Scholar

Copyright information

© Springer Science+Business Media Dordrecht 2016

Authors and Affiliations

  1. 1.University of MichiganAnn ArborUSA

Personalised recommendations