On 2010-09-15, at 14:44, Tom Van Cutsem wrote: >> It's the easiest way though (Python e.g. uses linearization too to avoid >> diamonds issue). The way with warning a user about naming conflicts (in >> particular, in your implementation too) seems also good. From the other hand >> we don't warn a user if he overrides (in JS) a parent method with the same >> name. >> > > Linearization is indeed a well-known approach to resolve the diamond, but it > doesn't adequately 'solve' the problem from a software evolution point of > view: small changes in one part of a large code base (i.e. changing the > order of two 'include' or 'extends' statements) may end up impacting a > totally different part of the code base - usually without warning. I can > recommend Alan Snyder's classic 1986 OOPSLA paper titled "Encapsulation and > Inheritance in Object-oriented Programming Languages", where he explains > this and related issues with inheritance.
See also: http://en.wikipedia.org/wiki/C3_linearization and its antecedents. _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

