[net.ai] Seminar - Multiple Inheritance

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.