[Citation Needed]
As I understand it ES6 is meant to be backwards compatible with ES5.
CS classes won't make use of the new "class" syntax, but they should be compatible ES6 classes (they can subclass each other) because they're both really just sugar on top of JavaScript's prototypal inheritance.
That's ok if the latter two (and other such languages) can change to track ES6, as MS promises TS will.
Just one example from CS: the difference between for/of meanings.
And I think the parent comment was concerned CS/TS would break as ES changes underneath.
"... because when the underlying JS changes (Like ES5->ES6) it can cause big breakage and/or confusion (Will CS classes work like classes do in ES6?)"
Having two kinds of for-of loops and two kinds of classes, even if CS tries to present only its flavor and hide the underlying (but you can still escape out to raw JS from CS), does make for confusion.
Also, separate point, ES6 sucks oxygen from CS, so while I expect CS to live on, it won't see as much adoption as it would have absent ES6.
The reason to consider this is that if it's a big enough oxygen-sucking effect, CS might want to break its own backward compatibility in order to re-align with JS. I've heard talk of such a change, but I haven't talked about it Jeremy or Michael. Pointers welcome.
http://www.lemonde.fr/pixels/visuel/2015/03/06/google-memori...
http://channel9.msdn.com/Shows/Going+Deep/Anders-Hejlsberg-a...
At one point, Lars and Anders both say they liked ES4 and they wondered why it died. I LOLed a lot :-|, in view of how their employers were intimately involved in killing ES4.
(I write this without rancor, as ES4 needed to die.)
Why is that by the way? From what I read at the time in the PDFs it seemed nice and not out of the ordinary. Did you ever wrote about technical failures of ES4 and I missed it?
* why ES4 had to die? https://news.ycombinator.com/item?id=8906807 says why in brief: "But ES4 was trying for too much too soon." Adobe bailed, too.
* (yet MS was about to give in! If only Adobe had known.) ES4 toward end was not AS3-compatible because JS wasn't AS3 compatible.
* enabling incompatibilities under opt-in version selection was fairly toxic to all implementors (V8, JSC esp. ) and many users.
* With 1JS idea, based on modules (classes, also generators via function*), new syntax is its own opt-in: no big red mode switch.
Update: also the "ECMAScript Harmony" email I wrote in July 2008 talks about the problem of namespaces:
https://mail.mozilla.org/pipermail/es-discuss/2008-August/00...
The early binding problem for the Web with multiple script tags was not an issue for Flash with a single SWF link-time tooled image.
The open namespaces costs can be thought of as a third lookup rib for identifiers beyond scope chain and prototype chain -- anything like this (e.g., scoped object extensions a la C#) is still bouncing off of engine implementors.
— jhnns
But we couldn't map AS3 directly to ES4, because Flash was too different from the Web: single SWF link-step and static typing were two big diffs.
Even now static typing in dynamic code loading environment, or "gradual" or "hybrid typing" if you will, is not quite a solved problem. SoundScript or whatever it's called is an experiment, as the V8 folks have been careful to say.
I agree with Brendan about the difficulty of mapping features from AS3 (Flash) to ES4 (the web). I'd go a step further and say that the only way this even would have been possible is to grow it out of the host's DNA of JS1/ES3.
Even if at a high level many of the emerging features of JS look like those in AS3/ES4, they are in their details profoundly different. This is as it should be. They need to grow out of the primordial stuff of JS1, not AS3. I suspect that the ES4 effort has informed many of those now working on ES.next in a way that wouldn't have happened otherwise. So in that sense, at least, ES4 lives on.
After ES6 finally providing a concise syntax for prototype inheritance, hybrid typing is the last "AS3 feature" I'd love to see in ES.
But btw: You guys are doing great job! I totally agree with your approach of evolving slowly and considering community feedback.
Apparently Chrome feels the same about ES6 .. they continue playing launch pad chicken (only 39% on Kangax)