On March 24, 2017 at 10:28:43 PM, Xiaodi Wu (xiaodi...@gmail.com) wrote:

I'm not sure where you're reading that Chris thinks the current design reaches 
the stated aims to his satisfaction.
I'm pretty sure it's a fair assumption that when he introduces the 
static/dynamic system to illustrate the design goals of Swift, he means those 
goals can be seen in that feature to some significant extent.

"We intentionally want Swift to have a common 'center of gravity' and be an 
'opinionated' language, rather than fall to the 'design by committee' approach 
that leads to a watered-down design."  This is diametrically opposite to 
"shipping a full toolbox with plenty of overlap."
Chris has elaborated on this elsewhere:

Another thing to keep in mind is that Swift is opinionated, I guess is the way 
to say it. It really does encourage you to do the right thing where it can. For 
example, if you use var for everything, the Swift compiler [1:21:30] will say, 
hey, you marked this as a var but it could be a let, and let me fix it for you. 
That's just its subtle way of encouraging you to use immutable values, which is 
a very small thing, but it's just pushing you in the way that it thinks leads 
to a better code. Immutability for a local variable doesn't matter that much 
except that it communicates something more to the person who has to read and 
maintain your code.

I think that Swift really does [1:22:00] encourage you down the right lines in 
some ways. But on the other hand, in other places where you're saying, "Should 
something be a class or a struct?”, the trade-offs are more nuanced and it's a 
harder thing, and the Swift compiler can't just know what problem it is that 
you want to solve, so it can't help you with that.

`let` and `var` are "redundant" in the same way as private/fileprivate; one can 
effectively replace the other.  Far from advocating we should eliminate the 
redundant keyword, he argues the compiler should encourage it, because "Swift 
is an opinionated language" and an argument to the principle of least power.  
The analogous idea would be if the compiler offered a fixit to change 
"fileprivate" to "private" where legal.  Actually, that would be an interesting 
proposal, especially since some believe private/fileprivate is hard to learn.

But "Swift is an opinionated language" is not a battlecry for eliminating 
"redundant" keywords, it is an exhortation to use them correctly.

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

Reply via email to