I was not very surprised to read today on the ES4 mailing list a mail from Brendan Eich. Entitled ECMAScript Harmony which state that the comity decided that they will :
1. Focus work on ES3.1 with full collaboration of all parties, and
target two interoperable implementations by early next year.
2. Collaborate on the next step beyond ES3.1, which will include
syntactic extensions but which will be more modest than ES4 in both
semantic and syntactic innovation.
Sounds like ES4 as we know it right now is purely and simply dropped !
It also means that the whole “AS3 is standard” thing that Adobe has been “selling” to developers is no longer true. But anyway, that was quite hard to keep this promise from the beginning, since AS3 was released without the ES4 draft being completed, it was definitely not compatible with any standard anyway (if you want to know more about ES4/AS3, Hank Williams has a complete analysis about this, thanks to Juan for the link).
Some people might not be happy about how things are going, but as for me I think it’s good that ES4 does not become the next JS. While I agree with several aspects of the language design, I think that it’s not a good idea to have such a complex language being the main tool for the web developers.
If we look at the success of the Web, I can see two main reasons why people created a lot of content for it :
1 - it is free : no royalties, no IDE to buy, you can simply write HTML (+ Perl at first, and later PHP) and start building your own website
2 - it is easy : learning HTML is easy, doing some JS to open alerts as well, PHP is very easy to get started with, etc…
I think it’s something very important to keep in mind if we want the web to continue to evolve in a sane manner. We are web professionals and we have our own problems. As professionals, we need more powerful tools, of course, because we tend to always push the limits of our tools at their best ! But don’t forget that most of the web developers don’t care about that. They are just very happy with the way things are right now, because it’s easy.
I won’t say it’s easy to develop, because there’s all these nasty bugs in either JS or PHP that keep making people crazy, but it’s easy to get started, and you can actually build self-confidence, little-by-little, in your capacity at making websites. It’s called “learning how to program”, and that’s a very looong path, that nobody knows exactly if and how it ends.
Anyway, if we want to improve our tools, we can’t think only about our own problems. If someone want to get started programming a website, he doesn’t want to learn about OOP, classes, structural subtyping, or closures. He doesn’t even want to HEAR about it. And he’s right : things should be easy at the beginning.
So, 1 million Euros question : can you build a language that can satisfy at the same time : the beginners and the advanced developers, the proponents of static typing and the proponents of dynamic typing, the people that prefer functional programming and the one that prefer imperative style ? Can you really do that ? I don’t think anybody can. There is no such an universal language ! Each language have its own needs, and even if I am very proud of haXe for instance, I would maybe not recommend it to someone that just started programming, because simply it’s not been built for this.
So what would be best for the web, if there can’t be a single language that satisfy everybody ? The answer is : a common runtime ! Given enough openness to various languages, a common runtime should be able to run many different kind of languages on top of it : statically and dynamically typed ones, functional and imperative ones… even, why not - horror - Visual Basic !
We definitely can’t use an existing runtime : JVM has been written to run Java and .Net has been written to run C#. NekoVM has been built with this multi-language support in mind, but would need to be further abstracted and improved to reach this goal.
We’re back again to politics (or “real world”, as you wish). The Web is open - in theory - but the web client is controlled by a few players, without any way to change that…
Quite depressing, but let’s rejoice, it’s already nice that we have haXe to play with !