> On Dec 23, 2016, at 11:07, Xiaodi Wu via swift-evolution 
> <[email protected]> wrote:
> 
>> On Fri, Dec 23, 2016 at 1:33 PM, Callionica (Swift) 
>> <[email protected]> wrote:
>> I support the principle of progressive disclosure. I still fail to see how 
>> if class capture were introduced it would prevent people from learning about 
>> classes, functions, closures or any other existing concept in whatever order 
>> the student or teacher preferred.
>> 
>> I disagree that there is any significant risk that a novice user that 
>> doesn't expect to be able to use names that are in scope would be worse off 
>> with this change. Think about the exact sequence of events that has to occur 
>> to trigger this user's confusion. OTOH beginners that expect to be able to 
>> use names that are in scope will be better off. 
>> 
>> In general I don't believe learning has the linearity you suggest and I 
>> don't think there is anything particularly natural about the specific 
>> sequence of concepts you've listed.
> 
> I'm making no claim that learning _has_ to be linear or ought to be, nor that 
> any particular sequence of learning is _particularly_ natural. Rather, I 
> understand the notion of progressive disclosure to mean that there ought to 
> be _some_ sequence or sequences of learning where it is possible to master 
> things in a linear fashion _if_ any particular learner wishes to proceed 
> linearly, with concepts introduced earlier not making reference to concepts 
> learned later. It is entirely fair if someone finds it more intuitive to 
> learn or teach the same material in a different order, or even to learn or 
> teach multiple concepts simultaneously.
> 
> Put another way, the question is not whether it's reasonable to have all 
> learners progress through Swift in one particular blessed way. The question 
> is whether, _if_ a learner is not yet ready to learn concept Z, it's possible 
> to teach unrelated concept Y without reference to Z, for some reasonable 
> ordering(s) of concepts from A to Z.
> 
> In this analysis, I think that classes capturing variables from a containing 
> function would be detrimental. If one considers classes, functions, and 
> closures as three topics, it is currently possible (I think) to master 
> classes and functions without reference to closures. In a scenario where 
> classes can capture variables in a containing function, one must understand 
> the concept of escaping closures to master classes and functions. The 
> argument isn't that one linear sequence of learning is superior to the 
> others; the argument is that a reasonable linear ordering of these concepts 
> conducive for at least some learners would become non-linear by having this 
> new feature.
> 
>> I think it's worthwhile to analyze features from the point of view of 
>> beginner users of the language, but I reach the opposite conclusion in this 
>> case.
>> 
>> -- Callionica

If that's the only objection, couldn't we put it behind a per-file 
"#enableScaryFeatures" flag? Maybe up by any import statements, so it's easy to 
see? Seems shortsighted to not let advanced programmers use a feature just 
because it's tricky for beginners. Or maybe "#enableExperimentalSyntaxes", for 
stuff that we know we want, but for which we don't yet have a syntax that's 
sufficiently "swifty" for us to commit to it (which would have the added 
"benefit" of giving us a place to put any feature whose syntax is a bit 
unstable).

(That's it... I don't have much of an opinion one way or the other on the 
thread's proposal yet.)

- Dave Sweeris
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to