I was aware of a need for object-oriented programming long before I learned that it existed. I felt the need because I was using C and Lisp to build medium-sized systems, including a widely-used text editor, CASE and VLSI tools. Stated simply, I wanted flexible connections between providers and consumers of behavior in my systems. For example, in the text editor anything could produce text (files, in-memory buffers, selections, output of formatters, etc) and be connected to any consumer of text. Object-oriented programming solved this problem, and many others; it also provided a clearer way to think about the problems. For me, this thinking was very pragmatic: object solved practical programming problems cleanly.


Abstract Data Type Persistent Data Expression Problem Type Abstraction Oriented Programming Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Atkinson, M.P., Buneman, O.P.: Types and persistence in database programming languages. ACM Comput. Surv. 19(2), 105–170 (1987)CrossRefGoogle Scholar
  2. 2.
    Banerjee, A., Naumann, D.A.: Ownership confinement ensures representation independence for object-oriented programs. J. ACM 52(6), 894–960 (2005)CrossRefMathSciNetGoogle Scholar
  3. 3.
    Blackburn, S., Zigman, J.N.: Concurrency — the fly in the ointment? In: POS/PJW, pp. 250–258 (1998)Google Scholar
  4. 4.
    Boyapati, C., Liskov, B., Shrira, L.: Ownership types for object encapsulation. In: POPL 2003: Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 213–223. ACM Press, New York (2003)CrossRefGoogle Scholar
  5. 5.
    Church, A.: The Calculi of Lambda Conversion. Princeton University Press, Princeton (1951)Google Scholar
  6. 6.
    Clarke, D.G., Noble, J., Potter, J.: Simple Ownership Types for Object Containment. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 53–76. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  7. 7.
    Cook, W.: Object-oriented programming versus abstract data types. In: Plotkin, G., MacQueen, D.B., Kahn, G. (eds.) Semantics of Data Types 1984. LNCS, vol. 173, Springer, Heidelberg (1984)Google Scholar
  8. 8.
    Cook, W.R., Ibrahim, A.: Integrating programming languages & databases: What’s the problem (2005), Available from
  9. 9.
    Hoare, C.A.R.: Proof of correctness of data representations. Acta Inf. 1, 271–281 (1972)zbMATHCrossRefGoogle Scholar
  10. 10.
    Krishnamurthi, S., Felleisen, M., Friedman, D.P.: Synthesizing object-oriented and functional design to promote re-use. In: ECCOP 1998: Proceedings of the 12th European Conference on Object-Oriented Programming, pp. 91–113. Springer, Heidelberg (1998)Google Scholar
  11. 11.
    Liskov, B.: A history of clu. In: HOPL-II: The second ACM SIGPLAN conference on History of programming languages, pp. 133–147. ACM Press, New York (1993)CrossRefGoogle Scholar
  12. 12.
    MacQueen, D.B.: Modules for standard ml. In: Proc. of the ACM Conf. on Lisp and Functional Programming (1984)Google Scholar
  13. 13.
    Maier, D.: Representing database programs as objects. In: Bancilhon, F., Buneman, P. (eds.) Advances in Database Programming Languages, Papers from DBPL-1, pp. 377–386. ACM Press / Addison-Wesley (1987)Google Scholar
  14. 14.
    Mitchell, J.C., Plotkin, G.D.: Abstract types have existential type. In: Proc. of the ACM Symp. on Principles of Programming Languages, pp. 37–51. ACM Press, New York (1985)Google Scholar
  15. 15.
    Odersky, M., Zenger, M.: Independently extensible solutions to the expression problem. In: Proc. FOOL 12 (January 2005)Google Scholar
  16. 16.
    Patterson, D.A.: Latency lags bandwith. Commun. ACM 47(10), 71–75 (2004)CrossRefMathSciNetGoogle Scholar
  17. 17.
    Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002)Google Scholar
  18. 18.
    Scharli, N., Black, A.P., Ducasse, S.: Object-oriented encapsulation for dynamically typed languages. In: OOPSLA 2004: Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 130–149. ACM Press, New York (2004)CrossRefGoogle Scholar
  19. 19.
    Torgersen, M.: The Expression Problem Revisited. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 123–146. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  20. 20.
    Völter, M., Kircher, M., Zdun, U.: Remoting Patterns: Foundations of Enterprise, Internet and Realtime Distributed Object Middleware. Wiley, Chichester (2005)Google Scholar
  21. 21.
    Wadler, P.: The Expression Problem (November 1998),
  22. 22.
    Zhao, T., Palsber, J., Vite, J.: Lightweight confinement for featherweight java. In: OOPSLA 2003: Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, pp. 135–148. ACM Press, New York (2003)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • William R. Cook
    • 1
  1. 1.Department of Computer SciencesUniversity of Texas at Austin 

Personalised recommendations