ECMAScript disharmony

posted on 2008-08-14

In a previous post about ES4, I was a bit complaining about how things are getting political. In the past months, things have gone even worse. The ECMA comity got really split into two, one part of the people working on ES3.1 - which is a minor javascript language update - and the other one working on ES4 aka “Javascript 2″.

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 !

What does it mean ? It means first that we are still very far to see a major upgrade in the way Javascript will run on the browsers (for reasons why some people definitely don’t want that to happen, read my previous post on ES4).

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).

It also means that the approach of haXe is successful : instead of waiting for a particular technology to eventually be deployed, you can start right now using an highlevel programming language to develop for the client-side (Flash and Javascript) and for the server side (PHP and Neko). And when a new technology will come up, haXe will just be able to adapt to it as well : that’s the haXe Judo, as Blackdog is calling it ;)

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.

And even if it was built, who would distribute such a runtime ? Microsoft ? I’m afraid not. Adobe ? They will definitely concentrate on the Flash Player. Mozilla ? I don’t even know if they would be interested since they seem to focus a lot of Javascript…

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 ! :)

Leave a Reply

You must be logged in to post a comment.