RE: multiple inheritance
I think everyone is right on this issue, just in different
contexts. When I was doing object oriented programming to support expert
systems and blackboard systems development I was firmly convinced that
multiple inheritance was a bad thing. As a practical matter it was hard
enough to debug code with singly inherited behaviors. Multiple inheritance
made maintenance and debugging even more difficult, and this was not offset
by the representational value that feature added.
However, once I began creating declarative systems in formal logic, I
became equally convinced that multiple inheritance, when used with care,
was an essential facility to have at one's disposal. The advantages of
ontology composition, handling reasoning in different contexts, and the
"elaboration tolerance" (to use McCarthy's term) of systems were clear when
multiple inheritance was available.
My argument may be unsatisfying because is it both anecdotal and simply
practical. It is possible to write good C++ code that uses multiple
inheritance and it is possible to write a good ontology (at least up to a
certain size) which doesn't. It just makes life easier to have things the
other way around.
Adam
-----------------
Adam Pease
Teknowledge
(650) 424-0500 x571