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.