[Prev][Next][Index][Thread]

Re: MI: why?



"Lawrence G. Mayka" wrote:
> 
> Dave Harris wrote:
> 
> > I would say that languages with manifest static type systems need MI (of
> > type) and languages without, don't. This would reconcile Dylan, Java and
> > Smalltalk.
> 
> <Sigh>.  Perhaps languages don't "need" more than 1 and 0, but MI is
> *extremely* useful in dynamically typed languages, *if designed
> properly.*  CLOS and Dylan offer well-designed MI which their
> programmers employ ubiquitously.  Having programmed in CLOS for 7 years
> and now in Smalltalk the last 4 years, I feel the loss quite painfully.
> Every time I have to duplicate a method or instance variable in two
> different places within the system--or resort to strung-out chains of
> delegation--I feel the loss of MI.
> 

I would have to say I disagree.  I understand the point about code
duplication.  But I think the complexity added by MI is more costly. 
With MI, you have to have conventions as to the order of inheritance in
cases where the same method signature is inherited from two superclasses
(or more).  You also have to deal with the possibility of inheriting the
same class more than once.  

It's not that such rules are impossible - it's that they add
complexity.  Additional complexity slows the developer down, and at
least in my opinion, MI for Smalltalk would add cost rather than
reducing it.


> MI has gotten a bad reputation in some quarters because (a) highly
> static languages such as C++ cannot use MI to its best advantage, and
> (b) "one-thought" languages such as Smalltalk cannot expand sufficiently
> to use MI to its best advantage either.  The best matches for MI are (a)
> dynamic languages designed for MI from the start, such as Dylan, and (b)
> highly evolvable dynamic languages such as those of the Lisp family.
> 
> - Larry Mayka

-- 
James A. Robertson
Senior Sales Engineer
Cincom Systems, Inc.
jarober@mail.com

Talk Small and Carry a Big Class Library



Follow-Ups: References: