> On Dec 23, 2015, at 12:26 PM, Michel Fortin <michel.for...@michelf.ca> wrote:
> 
> Le 23 déc. 2015 à 10:07, Matthew Johnson via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
>> 
>> 3) Annoyance.  Some consider it to be annoying to have to annotate a class 
>> declaration in order to inherit from it.  People stating this argument 
>> either are either writing a lot of superclasses or are so bothered by the 
>> need to annotate their type declarations that they avoid `final` and its 
>> related benefits when that is really the right thing for their class.  For 
>> me personally, `final` is the right thing for most classes I write.  I also 
>> think adding a `final` annotation is the right thing to do if you’re not 
>> sure whether it will be a superclass or not.  The need to modify the 
>> annotation will remind you that you haven’t fully considered inheritance in 
>> your design yet.
>> 
>> ...
>> 
>> 5) Prototyping.  This should also not influence the decision about what the 
>> default is for production code.  I would not have a problem with a 
>> prototyping environment allowing `inheritable` by default (maybe a 
>> Playground mode?).  There could even be a tool that migrates the prototype 
>> to a real project and adds the `inheritable` annotation where necessary.  
>> Regardless of what happens here, the prototyping problem can and should be 
>> solved independently of the production language and should not influence the 
>> default is used in and impacts production code.
>> 
>> 6) Education.  There may be some value in allowing inheritance by default in 
>> education settings, especially early on.  I view this as being quite similar 
>> to the prototyping case and again should not have an influence on the 
>> default that professionals use in production code.
> 
> I think these three concerns would be addressed in good part by having sealed 
> by default instead of `final`.
> 
> I'm not sure why you say the last two should be addressed separately from the 
> "production" language. Are you proposing Swift should come in multiple 
> language variants?
> 

Not exactly. 

My point is that it is best to design the language to address production 
concerns first.  If the defaults in that design cause problems for prototyping 
and / or education it is possible to offer an environment with a modified 
default.  I don’t know if that is a good idea or not.  I am not a target user 
for either of those use cases (personally, I would rather prototype with the 
production language).  Either way, it is possible, just as it is possible to 
have @testable to facilitate unit testing.

I strongly feel that I shouldn’t pay a price in production code in order to 
better support those use cases.  IMO ‘final’ is the right default for 
production code and we pay a price if the default is anything less, including 
‘sealed’. 

Matthew
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to