A language that doesnt evolve is a dead one.
> JavaScript will have gone from a nice simple, elegant language
It's neither nice,nor simple nor elegant.To many WTF,to many edge cases,and a verbose syntax.
The code you are writing today will still run with ES6.
Nobody is forcing you to use new features.
You may like ES5,you may like how one writes ES5 code.That's not my case and the case of many developpers using javascript everyday. These features, we should have had then back in 2007 with ES4.So this isnt even an evolution,this is a catch up.
> C++ 11, incomprehensible to both humans and machines
I prefer devs using the same "incomprehensible" language than having to use 10+ transpilers because devs dont get what they want with javascript.
Again,nobody's forcing you to use ES6 new features,so you shouldnt force people into what you deem "nice,simple and elegant". Devs are forced to use JS one way or another,so let's make it so all devs can at least work with it instead of trying to force everyone into a paradigm everybody is not going to agree with.
And the best is yet to come with structs,guarded types,async/await keywords,more data structures,...
Global Scope: not fixed. No integer: not fixed. Syntax to resemble JAVA more closely in a class-less language that already as 9999999999999 class libraries: FIXED
Adding an integer type is far easier said than done. It was decided to leave that hard problem to ES7; integer type (or types!) are certainly coming.
For most cases of X, some form of declaration that is scope bound.
Look at e.g. Perl, it changes quickly in this way, with very good backwards compatibility. [Also see strict mode, of course.]
Edit: That said, new keywords like those let/const/module/extends etc should work fine. Please give me them today.
Edit 2: I have been cursing the lack of multiple returns this week. It is a pain returning a hash/object or an array. That really isn't supported, from browsing the standard? :-(
Why is that?
let rational = (a, b) => [a, b];
let [numerator, denominator] = rational(38, 4);
let reduced = rational(numerator/2, denominator/2);
PS. The above code works in stable Firefox.<Cough> Obviously because I'm blind? :-) Thanks.
* `new StructType({x:uint32, y:uint32, color:Color})` - looks like integers to me..?