From: Robert Klemme Date: 2007-12-04T00:43:42+09:00 Subject: Re: What are the differences between c++ and Ruby? 2007/12/3, Ilan Berci : > MI in C++ eventually leads to diamond ambiguities which eventually leads > to scope resolution operators spread throughout your entire code base > and/or private inheritance. For more on this subject, please consult > Lippmann, Meyers, Fowler > > Oh... one more thing.. mixins are not MI. Ruby doesn't support MI and I > believe it doesn't intend to. Anyone who has dealt with diamond > ambiguities is very glad of this fact. Each class in Ruby has one and > only one super. Mostly agree. But: you can include any number of modules and thus achieve /MI of behavior/ in Ruby. The diamond issue does not come up for two reasons: first, there is just one scope for instance variables, not multiple like in C++. Second, Ruby imposes an order on all super classes and mixins, that's why there is only one "super". So while Ruby works differently than C++ and Eiffel you can justify the claim that it supports MI. Kind regards robert -- use.inject do |as, often| as.you_can - without end