On 6/12/06, transfire / gmail.com <transfire / gmail.com> wrote:
>
> Daniel Schierbeck wrote:
> > Logan Capaldo wrote:
> > > Then you have multiple inheritance.
> >
> > Yes.
>
> Not really. Mulitple Inheritance provides orthogonal heirarchies.
> Ruby's is strictly linear. If what you say were true then Ruby would
> already be MI since modules can be used to add behavior to both class
> and instance levels, and readily associated together as well, as Ara's
> example clearly demonstrates. To think this consititutes MI and thus
> making specialized restrictions of code separation to repress it, only
> serves to complixify the situation, not the other way around. It's like
> trying to prevent someone from getting to their destinatin by not
> allowing them to turn right --they'll still get there, they'll just
> turn left three times.
>
> T.
>
>
>

Exactly.

1. Multiple module inclusion is not multiple inheritance. Even if you
think it is - Ruby already has it. So unless you're arguing for its
removal - and nobody seems to want that - it's a moot point.

2. You may debate whether mixing-in class methods is a "bad" practice
in some sense, and should therefore be discouraged - or at least not
encouraged by adding elegant, clear and standard language support for
it.

But:

2a. It can't be that bad, since nobody is arguing that it should be
disallowed completely.

2b. It doesn't seem to be widely considered "bad", at least not by
several skilled Ruby hackers. Rails is highly regarded codebase, and
the ClassMethods hack is all over it. Rails is the only codebase I'm
(vaguely) familiar with, but posts in this thread indicate that other
good codebases use similar hacks to accomplish the same programming
strategy.

2c. Of course, one may argue that even if mixing-in of class methods
is done by many skilled Ruby hackers, and is a vital programming
strategy in many high quality Ruby programs, it is still "bad" in some
theoretical sense. This is a subjective argument that cannot be
resolved. But one of the major attractions of Ruby for me is the
TIMTOWDI philosophy. I did not think Ruby would try to discipline its
coders by inconveniencing them. Not that it would matter much - mixins
would continue to be used for classs method inclusion.

So in short, since it seems many people are mixin class methods, it
would be nice if it were handled by a standard - hopefully convenient,
elegant - language feature.

-- 
-Alder