Skip to main content

The Essence of Inheritance

  • Chapter
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 9600))

Abstract

Programming languages serve a dual purpose: to communicate programs to computers, and to communicate programs to humans. Indeed, it is this dual purpose that makes programming language design a constrained and challenging problem. Inheritance is an essential aspect of that second purpose: it is a tool to improve communication. Humans understand new concepts most readily by first looking at a number of concrete examples, and later abstracting over those examples. The essence of inheritance is that it mirrors this process: it provides a formal mechanism for moving from the concrete to the abstract.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight 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

Learn about institutional subscriptions

References

  • Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf (2007)

    Google Scholar 

  • Baniassad, E., Myers, C.: An exploration of program as language. In: OOPSLA 2009 Companion, pp. 547–556 (2009)

    Google Scholar 

  • Bierman, G., Parkinson, M., Boyland, J.: Upgradej: incremental typechecking for class upgrades. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 235–259. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  • Black, A., Ducasse, S., Nierstrasz, O., Pollet, D., Cassou, D., Denker, M.: Pharo by example. Square Bracket Associates (2009). http://pharobyexample.org

  • Black, A.P., Bruce, K.B., Homer, M., Noble, J.: Grace: the absence of (inessential) difficulty. In: Onward! 2012: Proceedings 12th SIGPLAN Symposium on New Ideas in Programming and Reflections on Software, pp. 85–98. ACM, New York (2012). http://doi.acm.org/10.1145/2384592.2384601

  • Black, A.P., Jones, M.P.: The case for multiple views. In: Grundy, J.C., Welland, R., Stoeckle, H. (eds.) ICSE Workshop on Directions in Software Engineering Environments (WoDiSEE), May 2004

    Google Scholar 

  • Bracha, G., Cook, W.: Mixin-based inheritance. In: ECOOP/OOPSLA 1990, pp. 303–311. ACM Press, Ottawa (1990). http://java.sun.com/people/gbracha/oopsla90.ps

    Google Scholar 

  • Bruce, K.B.: Some challenging typing issues in object-oriented languages. Electr. Notes Theor. Comput. Sci. 82(7), 1–29 (2003). http://dx.doi.org/10.1016/S1571-0661(04)80799-0

    Article  Google Scholar 

  • Bunnin, N., Yu, J.: The Blackwell Dictionary of Western Philosophy. Blackwell, Oxford (2004)

    Book  Google Scholar 

  • Cardelli, L.: Program fragments, linking, and modularization. In: Conference Record of POPL 1997: Twenty-fourth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Paris, France, pp. 266–277, January 1997

    Google Scholar 

  • Cook, W., Palsberg, J.: A denotational semantics of inheritance and its correctness. In: Conference on Object-Oriented Programming Systems, Languages and Applications, OOPSLA 1989, pp. 433–443. ACM Press, New Orleans (1989)

    Google Scholar 

  • Cook, W.R., Hill, W.L., Canning, P.S.: Inheritance is not subtyping. In: Conference Record of the Seventeenth ACM Symposium on Principles of Programming Languages, San Francisco, CA, USA, pp. 125–135 (1990)

    Google Scholar 

  • Cox, B.J.: Object Oriented Programming: An Evolutionary Approach. Addison-Wesley Longman Publishing Co., Inc., Boston (1986)

    Google Scholar 

  • Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., Black, A.P.: Traits: a mechanism for fine-grained reuse. ACM Trans. Program. Lang. Syst. 28(2), 331–388 (2006)

    Article  Google Scholar 

  • Edwards, J.: Subtext: uncovering the simplicity of programming. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, pp. 505–518. ACM, New York (2005a). http://doi.acm.org/10.1145/1094811.1094851

  • Edwards, J.: Subtext: uncovering the simplicity of programming (2005b). video demonstration. http://subtextual.org/demo1.html

    Google Scholar 

  • Ernst, E.: Family polymorphism. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  • Kamp, P.H.: Sir, please step away from the ASR-33!. ACM Queue 8(10), 40:40–40:42 (2010). http://doi.acm.org/10.1145/1866296.1871406

    Article  Google Scholar 

  • Nystrom, N., Chong, S., Myers, A.C.: Scalable extensibility via nested inheritance. In: Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 2004, pp. 99–115. ACM, New York (2004). http://doi.acm.org/10.1145/1028976.1028986

  • Reynolds, J.C.: Definitional interpreters for higher order programming languages. In: Proceedings of ACM 1972 Annual Conference, pp. 717–740 (1972)

    Google Scholar 

  • Reynolds, J.C.: The essence of ALGOL. In: de Bakker, J.W., van Vliet, J.C. (eds.) Proceedings of the International Symposium on Algorithmic Languages, pp. 345-372. North-Holland (1981). Reprinted in Algol-like Languages, O’Hearn, P.W., Tennent, R.D. (eds.), vol. 1, pp. 67-88, Birkhäuser (1997)

    Google Scholar 

  • Sakkinen, M.: Disciplined inheritance. In: Cook, S. (ed.) ECOOP 1989: Proceedings of the Third European Conference on Object-Oriented Programming, Nottingham, UK, 10–14 July 1989, pp. 39–56. Cambridge University Press, Cambridge (1989)

    Google Scholar 

  • Snyder, A.: Encapsulation and inheritance in object-oriented programming languages. In: OOPSLA 1986, pp. 38–45 (1986). Also published as ACM SIGPLAN Notices, vol. 21, November 1986

    Google Scholar 

  • Wadler, P.: The essence of functional programming. In: Conference Record of the Nineteenth ACM Symposium on Principles of Programming Languages, pp. 1–14. ACM Press, Albuquerque (1992)

    Google Scholar 

  • Wadler, P.: The first monad tutorial, December 2013. http://homepages.inf.ed.ac.uk/wadler/papers/yow/monads-scala.pdf

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Andrew P. Black .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2016 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Black, A.P., Bruce, K.B., Noble, J. (2016). The Essence of Inheritance. In: Lindley, S., McBride, C., Trinder, P., Sannella, D. (eds) A List of Successes That Can Change the World. Lecture Notes in Computer Science(), vol 9600. Springer, Cham. https://doi.org/10.1007/978-3-319-30936-1_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-30936-1_4

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-30935-4

  • Online ISBN: 978-3-319-30936-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics