On Mar 21, 2012, at 6:35 AM, Kevin Smith wrote:

> Hi Axel,
> 
> We should probably hold off on private and static member syntax until there's 
> consensus on the other open issues:
> 
> - "constructor" vs. "new" (Dave and I say "new", Allen says "constructor";  
> mostly aesthetic - can be put off for now)
> - class-side inheritance?  (Mark and I say no, Allen and Russell say yes)
> - What restrictions for RHS of "extends"?  Must it be a constructor?  
> (Russell and I say yes)
> 
> Additionally, I'm still worried about how we call the superclass constructor:
> 
>     new() {
>         // do arbitrary stuff here
>         super(...);
>     }
> 
> This would potentially allow a superclass instance method to be called before 
> the superclass initialization has completed.  If we want to maintain the 
> invariant (as it seems most class-based languages do) that methods can only 
> be called after initialization has completed, then this won't work.  Thoughts?

This invariant can is difficult, if not impossible to maintain.  Even the 
concept of "initialization has completed" is difficult to define.  My 
experience is 10 years out of date, but I know that Java was not successful at 
maintaining that invariant.

Note that this invariant is probably most important for static languages that 
depend upon initialization invariants for memory safety.  ES does not have this 
issue and the langue runtime level, although there could of course be 
application level invariants that are violated.

It is actually sometimes quite useful to do some processing before invoking 
super initialization:

constructor (...args) {
     let processedArgs = preprocessToBeAcceptableForSuper(args);
     super(processedArgs);
     ...
}

My sense is that this invariant is a very minor issue some language designers 
send a lot of time worry about either come up with a solution that really does 
n'twork or which eliminates more useful usage patterns than than elimiante 
hazards.

Both Ruby and Smalltalk support arbitrary placement of  super initialization 
calls (if any) and at least for Smalltalk  is was not a major source of 
problems..


Allen


_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to