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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf (2007)
Baniassad, E., Myers, C.: An exploration of program as language. In: OOPSLA 2009 Companion, pp. 547–556 (2009)
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)
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
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
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
Bunnin, N., Yu, J.: The Blackwell Dictionary of Western Philosophy. Blackwell, Oxford (2004)
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
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)
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)
Cox, B.J.: Object Oriented Programming: An Evolutionary Approach. Addison-Wesley Longman Publishing Co., Inc., Boston (1986)
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)
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
Ernst, E.: Family polymorphism. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)
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
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)
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)
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)
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
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)
Wadler, P.: The first monad tutorial, December 2013. http://homepages.inf.ed.ac.uk/wadler/papers/yow/monads-scala.pdf
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights 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)