WELD%MIT-OZ@MIT-MC.ARPA (04/30/84)
From: "Daniel S. Weld" <WELD%MIT-OZ@MIT-MC.ARPA> [Forwarded from the MIT bboard by SASW@MIT-MC.] Multiple Inheritance: What, Why, and How? Dan Carnese AI Revolving Seminar Wednesday, May 2, 4:00pm, 8th Floor Playroom This talk is concerned with type definition by ``multiple inheritance''. Informally, multiple inheritance is a technique for defining new types by combining the operation sets of a number of old ones. The literature concerning multiple inheritance has been heavily biased toward the description of the constructs involved in particular systems. But no satisfying account has been given of: - the rationale for using definition by multiple inheritance over simpler approaches to type definition, - the essential similarities of the various proposals, or - the key design decisions involved in these systems and the significance of choosing specific alternatives. The goal of this talk is to dissipate some of the ``general prevailing mysticism'' surrounding multiple inheritance. The fundamental contribution will be a simple framework for describing the design and implementation of single-inheritance and multiple-inheritance type systems. This framework will be used to describe the inheritance mechanisms of a number of contemporary languages. These include: - the Lisp Machine's flavor system - the classes of Smalltalk-80, ``Smalltalk-82'' (Borning and Ingalls), and Loops (Bobrow and Stefik) - the ``traits'' extension to Mesa (Curry et al.) Given the description of the ``what'' and ``how'' of these systems, we will then turn to the question of ``why.'' Some principles for evaluating inheritance mechanisms will be presented and applied to the above five designs. A few simple improvements to the Lisp Machine flavor system will be identified and motivated by the evaluation criteria. We will conclude by discussing the relationship between multiple inheritance in programming and multiple inheritance in knowledge representation, and the lessons from the former which can be applied to the latter.