Hello John I subscribe completely to this point(s) of view! TedvG
> Date: Sun, 3 Apr 2016 19:25:09 +0000 > From: John Heerema <[email protected] <mailto:[email protected]>> > To: "[email protected] <mailto:[email protected]>" > <[email protected] <mailto:[email protected]>> > Subject: Re: [swift-evolution] Revisiting 0004, 0007 etc. - Swift > deprecations > Message-ID: <d326ca33.b1738%[email protected] > <mailto:[email protected]>> > Content-Type: text/plain; charset="windows-1252" > > Thanks to all those who thoughtfully responded to this post! The folks who > responded provided kind thoughts and advice. > > Ross O’Brian asked if I was familiar with the original discussion for 0004 > and 0007. > > To answer: Yes, I read the discussions several times over a period of a few > weeks before writing anything myself. Unless the repo is somehow missing an > awful lot of discussion, I would say that both of these proposals received > startlingly little discussion at the time. These are very early proposals > (numbers 4 and 7), and were conducted before a lot of people (including me) > had any idea that feedback was being solicited. > > My thoughts on these deprecations are aimed more at the human side of how > developers actually behave, than on the strict “desirability" of the > deprecated features. > > Let’s take proposal 0004 – to deprecate the ++ and — operators. > > A few years ago, I’ve have chimed in to say “sure, let’s deprecate those > things. += is more general and obvious”. But that’s how those of us who think > about orthogonality think. > > On the human side, what do the human being who write code actually do? > Human beings notoriously do not act in the way we think they “should”. > > Lots of languages, like C, C++, C#, Objective C, Java, etc., already have > both the prefix and suffix versions of ++ and --. > All of those language also allow developers to use += 1. So, each and every > one of the millions of people who use those languages already have a choice > of using any of: > a = a + 1 > a += 1, or > a++ > > So an enormous social experiment has already been done, and we can benefit > from it, if we are willing. Given that millions of people have already been > given the choice of using any of the three forms shown above, what do they > actually prefer to use? There are many, many millions of lines of extant code > that can be parsed to determine what developers actually use when they are > given the choice. > > I’m pretty sure that everyone on this list already knows the answer, and it’s > not the choice we might think that all those millions of developers “should” > have made. Given a free choice, developers overwhelmingly chose to use ++ and > —. They predominately use the suffix version, but the prefix version is also > common. If you don’t believe me, it’s easy to find out for yourself. > Actually, I would encourage you not to believe me. Please conduct your own > experiment if you have access to a significant body of code. At a more > personal level, did you have to refactor your own code to eliminate them? Of > course it's easy to do, but why didn’t you make the “right” choice in the > first place? > > So, why would we deprecate the option that developers overwhelmingly choose > to use? > Is it “for their own good”? Let’s remember that most people resent being told > to do something “for their own good”. > > There’s something inside most people’s brains that wants to make other people > do something “for their own good”. I’d argue that this applies in spades to > language designers. We want to make Swift even better than it already is (and > I think that it’s already pretty darn good). So it’s really tempting to have > the compiler enforce doing the right thing. > > But we also want other developers to make a voluntary choice to use Swift, > when they could just as easily stick with Objective C, C, Java, or whatever > they are using right now. At least, I hope that’s what everyone on this list > wants. > > Or do we want just Swift to be the cool language that those of us in the “in” > club use, without necessarily wanting other people to join our exclusive > little club? The answer to that question affects the discussion. > > Taras Zakharko suggests that Swift isn’t trying to appeal to everyone. > Perhaps not, but I hope that it does. We are long overdue for a modern > general purpose language that compiles to, and is interoperable with native > code. I think that Swift is great enough to be that language. > > If we have already made a particular choice, and we’re used to defending our > choice as being the right one, it’s really hard for us to even imagine that > we might have made a decision that doesn’t further our eventual goal. So, > what’s the goal for Swift? Is it to be the language that finally takes over > from C’s popularity? Or is it to be a specialized niche language? > > The answer to that question affects the question of C-style For loops too, I > suspect. > > Andrew Bennett illustrated a neat way to generate an iterator using “defer”. > It’s quite nice, but I would argue that it doesn’t jump out as being the > perfect solution that’s so insanely great that people will give up C so that > they can use it. > > Taras Zakharko kindly pointed out that the Swift compiler implements > enumerable collections as lazy iterators. I was aware of that (and the way > it’s done is pretty cool), but it seems dangerous to me to assume that the > compiler will always be smart enough to avoid creating large enumerable > collections. I think that looping is so common that it deserves its own > flexible syntax. > > Xiaodi Wu says "It seemed a little irksome at first to refactor, but that was > about it”. I think it’s fair to say that the folks on this mailing list > represent a more technically astute segment of the computing community. > Several people have mentioned having to refactor their code. But if other > options are really better, why didn’t each of us use them right away, instead > of reaching for the familiar For loop? > > My thought is that it’s better to attract than to dictate. How many potential > Swift users are there? I think that the answer could be “an awful lot”. > > Even if the C-style For loop doesn’t appeal to everyone, I don’t see is as > being so terrible that it needs to be removed in order to mitigate its > horrible effects. I don’t see the Java community clambering for it’s removal. > Nor do I see C# users being advised to avoid the For loop because of it’s > horrible dangers. But maybe I’m missing something. The older I get, the more > I realize I don’t know. Are there horrible dangers associated with its use > that I’m unaware of? > > So, I’d ask “why is it so terrible that we’re going to remove it, even though > it presents an obstacle to developers coming over to Swift?” Maybe there’s a > really good answer to that, but if there is, I haven’t seen it in the > discussion thus far. Did I miss something really important in the 0007 > discussion? > > Thanks, > Dr. J. Heerema
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
