"Syntax for Efficient Traits" is now ready for discussion (was: Classes as Sugar is...)

P T Withington ptw at pobox.com
Wed Sep 15 12:02:59 PDT 2010


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.


More information about the es-discuss mailing list