ECMAScript 4.0 Is Dead
TopSpin writes "Brendan Eich, creator of the JavaScript programming language, has announced that ECMA Technical Committee 39 has abandoned the proposed ECMAScript 4.0 language specification in favor of a more limited specification dubbed 'Harmony,' or ECMAScript 3.1. A split has existed among the members of this committee, including Adobe and Microsoft, regarding the future of what most of us know as JavaScript. Adobe had been promulgating their ActionScript 3 language as the next ECMAScript 4.0 proposal. As some point out, the split that has prevented this may be the result of Microsoft's interests. What does the future hold for Mozilla's Tamarin Project, based on Adobe's open source ActionScript virtual machine?"
ECMA Script 3.11 for workgroups.
The joke works this time !
It's not dead. There will eventually be a Fourth Edition of ECMAScript, it just isn't the focus now. The ES4 proposal wasn't ever enshrined as the actual Fourth Edition either.
I was really skeptical about the concessions made by the ES4 side before I listened to some of their rationale; it wasn't so much concessions to the 3.1 side, it was that the things they were dropping didn't adequately solve the problems they were put in to solve.
There's a great talk about it here: http://openwebpodcast.com/episode-2-brendan-eich-and-arun-ranganathan-on-ecmascript-harmony
Mozilla and Adobe should just go ahead with v4.0, keeping it public so Apple and Opera can use it, too.
.
It is good to see the standards committee taking a breather from major new features, and instead focusing upon the alignment of behavior of functionality across the various browsers.
Hopefully, there will be a robust and rigorous compliance test suite as a deliverable of this standards process.
Another win for standards based "innovation". Let private companies innovate and submit to standards bodies. Otherwise you get crap like this and XHTML 2.0.
It might be (a bit) naive. Maybe Mozilla (along with, say, Google or other companies) should implement a well designed language independent virtual machine for a browser with modern features and ECMA 4.0 spirit ? Along with MSIE bindings. Shipped with Mozilla by default. Open source. Microsoft will have no chance to obstruct this effort. After (successfull) rollout it would be proposed to ECMA as a standard ?
Just wondering.
Brendan Eich may claim it to be dead, but I'd really rather wait for Netcraft to confirm it before actually basing any decisions on this news...
*''I can't believe it's not a hyperlink.''
What scares me most from reading that article was this part: "In fact The Adobe CEO has stated they are moving their entire application suite in the next 10 years to the Flash platform, so this language spec is serious stuff."
Our computers are getting faster but we're getting more power hungry applications that don't do much more than what came before. This goes agaisnt the current popularity of small and cheap laptops.
I invite everyone to read Douglas Crockford's latest post on the YUI blog entitled: The Only Thing We Have To Fear Is Premature Standardization
He gives some insight into how ES4 got to where it is today and its impact on standards in general
Long live ECMAscript 5.0!
Knowledge is power. Knowledge shared is power lost.
[Can I just point out] That Javascript as a development platform, as it seems to have become, is evil. It's just horrible from an efficiency, performance, security and architectural point of view. It seems to be the future.
You can point that out, but you'd be wrong. JavaScript hasn't recently "become" anything. The last major revision that all browsers supported was in November 2000.
It is a beautiful, expressive and quite powerful language that is just now starting to shine after years of being misunderstood by people like you.
Such a damn shame to let ECMAScript edition 4 go in this way.
The small shame is for Adobe's efforts, who entered the ECMA standards body to contribute, donated the entire engine to Mozilla and plenty of other efforts to get this going. But AS3/Flash will not be affected in a big way from this.
The web community as a whole will be. That's where the big shame is: for all of us, web developers. I see that packages, namespaces, classes and early binding are out, likely forever.
Classes are not "sugar", we do need those paradigms when creating bigger applications, because they are more rigid, more readable, more maintainable, understandable. I love lambdas, prototypes and all that, but that's the lower level, the implementation inside a class, inside a package. Those are not interchangable paradigms.
ES4 and AS3 have managed to add those higher constructs to the language, while maintaining full compatibility with all flexible features of ES3 (the JavaScript currently used in browsers).
The reasoning behind dropping all constructs appears to be the preconceived notion that JavaScript must exist in the form of disparate text files loosely connected to each other, something that doesn't scale to bigger efforts at all (and which makes Flash much more viable for such deployment), hence packages and early binding are out. What a mistake.
Who's to say we won't see JAR-like environment where bigger libraries can be compressed together, and some preprocessing can be done to ease the load on the client CPU/bandwidth? I've been praying we get such deployment option soon as a modern web application typically has to download a ton of CSS/JS/image files to build an average GUI nowadays. Why isn't this the focus of ECMA's efforts, but instead the focus is to maintain the status quo and reject us basics that have proven themselves in time to work well in all environments out there.
If you doubt this would work, look no further than Java/Flash applets distributed over the web in this fashion (and Flash is very widely used nowadays).
What ECMA has achieved with their decision, is to basically stagnate the browser environment, and empower third-party cross-browser plugins to eat more from the advanced web application market share, because Adobe's Flash, Microsoft's Silverlight are not even thinking of dropping their mature OOP features, just because ECMA said we don't need them.
It's a nice language overall, but OOP in Javascript is a real pain in the neck. I wouldn't mind a more traditional class structure.
as i do, about all the different dhtml and javascript implementations across different browsers, be very scared
here is a vision of the future where different browsers use different script languages
its as if internet explorer never decided to support javascript in the mid1990s but still gained massive market share, forcing us in the industry to code for sites in javascript and vbscript
(shudder)
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
Oh well; Microsoft scores one here, considering that Silverlight 2.0 will be scriptable using Python and Ruby out of the box.
By the way, the whole fuss about MS being behind this is pretty stupid and unfounded. MS was actually one to jump on the ES4 bandwagon early, along with Adobe - their early implementation of it was called JScript.NET, first released in 2002 with .NET Framework 1.0, and it does in fact still ship with all versions of .NET, and is an officially supported .NET language. They certainly wouldn't have any trouble extending it to the more recent spec, should it become standard. Now, I guess it will just be quietly dropped in the next version of the framework.
Any ideas ?
The problem with Java and the CLR in browsers are mostly with the libraries, not the virtual machines. So, I think the thing to do would be to start with, say, the CLR and develop an open applet environment and browser integration based on it. This environment could even be emulated in Silverlight, allowing things to run without any install on Windows.
Although JavaScript is not very good as an application language, it can do some really neat things which makes it very interesting to language nerds which is why it is so popular.
One thing is that functions are also objects which means they can be returned and taken as parameters by other functions. This is called lambda coding. Function pointers do not allow you do to quite the same thing since they can't be dynamically generated and modified. It makes certain kinds of mathematical programming very easy. For instance functions can be dynamically defined to return the derivative function of another function.
Not many languages allow you to do this. Ruby, Python and Perl, JavaScript and ActionScript all allow lambda coding, but Java, C and C++ don't probably for performance reasons since the runtime environment of the compiled program itself requires a compiler. The latest edition of C Sharp I think does though.
In any case, since JavaScript allows this it would nice just have a compiled version of JavaScript with lambda coding and classes. I think that's what they are shooting for with Harmony so I'm not really that disappointed with this decision.
OOP !== Class based OOP
JS isn't a class based OOP language, it's prototype based OOP language - the two are _very_ different. I can understand why it's a pain in the neck. It's also a pain in the neck to force a square peg into a round hole, but is the blame on the person who made the square peg or on the person whom thinks that the square peg should indeed be able to be put in the round hole?
I agree that JavaScript/ECMAScript is horrible, but it's what we have.
At least it's not as horrible as VBScript.
But I sure would like to have had a language with strong static typing, which in effect would have made it very similar to Java. By doing this we would have had at least some bugs straightened out before deploying to a large number of users.
The inconsistency between browsers is also a catch, but it could have been a lot worse.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
JavaScript is popular only because it exists in almost every browser since a long time ago. This means that if you code something for a browser in JavaScript you know that it has a reasonable chance to work for the most commonly used browsers.
The use of JavaScript outside the environment of browsers is very limited, and exists only in specialized applications where it may be useful to have a script language. But then it competes with other script languages like TCL/Tk.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
exactly what Microsoft is doing its best work to cause. Javascript and all the tech in AJAX which allows application-like browser-neutral pages is a massive threat to Microsoft's income.
I don't know what Microsoft had to do with this but their position on any industry committee is purely to find ways to either stall the project or make sure they have ways to dilute it on Windows. They have no other reason or purpose. IMO.
LoB
"Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
It is an ugly, gutteral, non-expressive, but quite powerful language.
If you want a beautiful language you would get a lot closer with Ruby. JavaScript is many things, but beautiful or easy to use it ain't.
Perhaps you'd like to read my post again.
Deleted
... of how Microsoft seems to prefer to win through destruction of others rather than production of their own.
Not that we need another example. How many have we had already? Does anybody doubt?
Yes, what suckage. Who on earth wants a simple, dynamic, low-cruft language with first-class functions, closures, lambdas and a prototype object system that still manages to look like the C language family? Evil, evil, evil...
Note: I don't consider myself enough of a language expert to judge your first assertion, but your second assertion makes me strongly suspect the first. That you would claim Brendan Eich has no business being associated with language design doesn't exactly help your case.
In my case, I really didn't START to like Javascript until I began to read up on it's functional capabilities.
I think there is more to Javascript's popularity than what you say. It is actually a fairly nice little language, and hopefully when a few annoyances are cleaned up in version 2.0 it will be used outside the browser more and more. In fact, anyone who has done some serious Mozilla application programming with XUL realizes that there is no reason Javascript must be restrained to a web browser context to be useful.
It is far from expressive. It's full of php-esque issues, such as no namespaces, and a very poor OOP system. Misunderstood, yes. As something it's not, yes. A good solution? No.
I'm waiting for Javafx. It looks pretty interesting to be honest.
Who on earth wants a simple, dynamic, low-cruft language with first-class functions, closures, lambdas and a prototype object system
Hardly anyone, it seems. Otherwise, how do you account for the popularity of C++?
I am TheRaven on Soylent News
Java Script is a really bad joke. Not that there is anything better at hand, but it is utterly and completely in drastic need a of "Lift up the radiator cap, and drive a new one underneath it treatment" and damn soon.
Right along next to it, is the Document Object Model, yet another thing needing the same treatment,
.
And right along with those two is CSS, a good idea gone horribly wrong.
So what do we do? How do we fix this, how do we build something that everyone can agree on? The short answer is, more then likely we cannot. Why? Because there are to many ego's involved, to many pet languages involved, to many pet methods and styles.
But with a lot of "We are going to ram this right up your ass, everyones ass, because it will be so clean and functional you won't have a choice but to bend over and take it." attitude AND aptitude we can succeed.
The idea of DOM is great, because it creates a known method of manipulating the bits and parts of an web page to effect the best possible user experience, but the loosely coupled nature of JS, DOM and CSS just keep making the whole thing just become to overwrought with complexity and errors.
The way to fix this is IMNSHO is to rebuild it into one entity.
Wait for it......Ohhh the horor!!!!!. No kids it is not a horror, it is supremely logical. The very notion that you treat a web page as if it was a bit of paper is ludicrous! It is not a peace of paper, it is a digital screen capable of all sorts of neat tricks, and the engine that drives it is superb. The notion of paper needs to be simply left behind, move on, it was a hell of a go, but it is time to grown up, but into what?
The web browser needs to transform into a sand-boxed window manager. How is that again? A window manger, huh? The idea sits in front of ALL of you every day. The GUI desktop moves things around, arranges windows, covers them up allows them to be moved, adjusts for sizing, everything we desperately try to implement in CSS and DOM but pretty fail to do.
How do we accomplish this? Well not without a lot of yelling and screaming. But consider this, if you had the same level of control over your your web page presentation as you have over any GUI application, how happy would you be? Personally I would be ecstatic! I mean Wooooo-Whooooooo! Just think of the level of control you would have, you could build perfectly interactive web pages that would vow to your and more importantly, your audiences every whim.
As a set of verbs and nouns JS is not that bad. I would tweak it a little a little but not much. What I would do though, is make DOM ( or an equivalent name ) be derived from JS instead of having JS simply be able to connect to it, for example, a web page would begin with a call to JS ( or the equivalent name ) MyPage = NewDocument(...) and that would pop open the new page, fresh and clean. After that you start laying out the sections, eg: UpperLeft = MyPage.CreateArea(...) rinse and repeat until you have all your areas defined. At that point, you begin to fill in all the areas by making calls to UpperLeft for things like control's, backgrounds, colors, scrolling text area's and the like. At that point you could then have a successor to CSS be a value passed to UpperLeft that would then style it as you desire.
This would eliminate some of the biggest problems with CSS, ie: the box model and DIVS freeing you up to really concentrate on the content. In addition there would be a menu model in there. Trying to do menus in CSS is at best a dark art and at worst damn near impossible, depending on what you want to do. How about something like TopMenu = MyPage.New.H[V]menu which could then be fed a very small XML hierarchy ( and by the way, I HATE XML with a passion you can only imagine but in this case it makes sense ) that would populate the menu, it handles the layout of the thing, you simply provide it colors, sizes, content and the OnClick call's
But this will make web pages WAY to complicated you say
Hey KID! Yeah you, get the fuck off my lawn!
I think you are confusing a few things. Lambda calculus is a simple universal model of computing invented by Church. A lambda expression can reference variables explicitly inside its scope ('bound') or outside ('unbound'). By performing a beta reduction, you explicitly bind a variable in a lambda expression. This is what the lambda operation in Lisp does.
It sounds like you are confusing the fact that functions are objects, and the fact that functions are closures. The fact that they are objects lets you pass them as parameters and introspect them. The fact that they are closures allows them to reference variables in their enclosing scope even after the enclosing scope has exited.
JavaScript is a Self derivative, and Self is a Smalltalk derivative (with Lieberman prototypes instead of classes). All languages in this family have closures as first-class objects, including newer ones like Io. For Ãtoilé, I have written a Smalltalk compiler which generates code ABI-compatible with the GNU Objective-C runtime, which allows us to mix Smalltalk and Objective-C in the same project (actually, in the same object), so we get exactly this advantage from a compiled language (for various other reasons, Smalltalk is still slower than Objective-C).
I am TheRaven on Soylent News
I think I get what you're saying but the difference between function having closures and functions being objects, but I just intended to point out that unlike JavaScript, Java, C, and C++ don't allow first class functions (which I refer to as lambda functions) though they do allow first class objects and function pointers though
First class functions and Lambda functions in Lamda calculus are the same thing. I also used the calculation of a derivative using a lambda function as an example which is something from mathematical calculus which may have added to the confusion.
Javascript is half-assed, broken implementation of prototype OOP. Look at Io for a real implementation of the ideas developed by SELF.
What does that have to do with the language? You can write crap programs in all languages. How about you discuss it in more substantial terms like how much time is needed to X in that language? Does it save you keystrokes vs. another language? Does it make the code easier to understand?
Classes are syntatic sugar. That's what the working group found, when it discovered that most class-centric features can be boiled down to simpler APIs such as .freeze(), .defineProperty(), &c., all of which are being implemented in ES3.1. Classes, then, would only be user interface to what can already be implemented using these features.
ES-Harmony is about standardizing new features that already work in (three out of four) major browsers, without changing the syntax of the language. Brendan Eich of Mozilla in the Open Web Podcast already discussed how script versioning will allows coders to use different language versions in the future. So syntax changes are not out of the question, they're simply being postponed until after ES3.1.
Until then, users will still have all the power of classes in their code, just without the ease-of-use of a "class" keyword (which will be a lot easier to implement after ES3.1 is proven and tested).
You do realize that the HTTPRequest object which makes AJAX possible was introduced by Microsoft in the first place?
ok, so you are saying that they produced "HTTPRequest object" with the W3C? I doubt that and would figure it was probably originally tied to some Windows-only technology. Even if in the far off chance they did submit this to the W3C, I'd bet that they would take it off the market in a heartbeat if they could.
And I don't doubt they have some good developers. They, as a business, don't put solutions or customers first so that their shareholders are rewarded. They know their shareholders are rewarded only because they've got Windows in a monopoly position and keeping it there with anti-competitive tricks and methods is what they do and have done.
If the cure for cancer came out on a Mac or Linux, Microsoft would crush that and the result would be more like a Kleenex for the common cold. IMO.
LoB
"Anyone who stands out in the middle of a road looks like roadkill to me." --Linus
> What is needed in the JavaScript world is not more
> features, but more consistency of implementation
> across the various browsers.
While I agree with you about the need for greater consistency of implementation, I don't expect that will ever happen. Microsoft does not want that to happen; and will do all it can to prevent cross-platform and cross-browser adherence to agreed standards where those standards will reduce its monopoly position - even to the extent of hijacking standardisation processes.
http://www.consortiuminfo.org/standardsblog/index.php?topic=20071125145019553
http://www.consortiuminfo.org/standardsblog/index.php?topic=20051116124417686
my god, and nobody asks why slashdot, thereg and others tell us that standards are dead ? The bottom line of this story is about "kill standards, let money be innovative" with crap software. Who the hell cares about standards compliance ? Me ! I'm fed up with writing compatiblity layers ! Human being should be ashamed of its lack of ability to comply with standards ! Please, people, do believe in standards, this is the only way to go next stage. Don't listen to all these pseudo journalists trying to make you feel sad about practical and beautiful solutions. And also don't forget to look at epiphany-webkit, the only browser with 100% acid3 test !
What parts of Javascript don't work?
Scuse me while I build up and then destroy this straw man, followed by a head-first dive into rhetoric.
The only aspect of a language that has anything to do with browser security is its security model. Are you trying to criticize Javascript's security model or are you just against browser scripting in general? If the former, please make a more specific case for how the security model could be improved, and if the latter, please make yourself clear, because it sounds like you have something against Javascript in particular.
He said that the Javascript platform was "horrible from an efficiency, performance, security and architectural point of view." I think his statement is completely consistent with Javascript being a beautiful, expressive, and powerful language.
I don't understand why his post was moderated Flamebait, since he's just repeating complaints that you hear every day from web developers, even the ones who like Javascript as a language.
As for Javascript "becoming" a development platform, he's talking about the recent explosion of rich, highly interactive web applications written in Javascript. It might be based on 2000 vintage technology, but it took a few years for the programming paradigms and cross-browser libraries to emerge.
Once you have first-class functions and closures you have a prototype-based object system.
Inventions have long since reached their limit, and I see no hope for further development.-- Frontinus, 1st cent. AD
Why classes? Are they inherently superior to other approaches?
http://www.dieblinkenlights.com
And they've been kicking themselves ever since. If they had let someone else invent it first, they could have come out with an incompatible version and made cross-browser development even harder.
As it turns out, it wasn't a total loss for Microsoft, since without standardization you have to use browser-specific extensions to acquire an HTTPRequestObject. Still, once you have that HTTPRequestObject, it has the same basic functionality in every browser. Somebody probably got fired from Microsoft for allowing that to happen :-(
ECMA sounds like a bad skin disease... ... I knew this girl once, she wasn't that bad looking, you know, but man did she have ECMA all over... gave me the creeps!
You can point that out, but you'd be wrong. JavaScript hasn't recently "become" anything. The last major revision that all browsers supported was in November 2000.
Try reading the OP's post with some thought. He isn't saying that Javascript has changed, rather it has become the development platform for Web 2.0.
As for beauty, well, there's lot less ways to do method dispatching using immutable arrays than mutable hashmaps. Simplicity and transparency are closely linked with beauty as well.
he pointed out that it is a development platform for Web 2.0. There are many web development frameworks that do quite well, with only just enough javascript to support ajax and nothing more.
Having stated that, it is also true that if you want smooth cross-browser compliance, Flash with actionscript has been the only way to go for quite a while. And given that, then Microsoft might just have shot itself in the foot again, because Flash and actionscript are more consistent cross-browser than JavaScript has EVER been... and Microsoft's competitor Silverlight is -- as usual -- too little too late.
No, just as the Perl 5 model of OOP isn't inherently superior to the class-based approach (or, for that matter, just as OOP isn't inherently superior to other paradigms). They do employ different modes of thought, however, some of which could be easier to use in certain domains. The class-based method also tends to be the more familiar one, for what that's worth.
I agree but its not just its functional capabilities. It has a really nice (if limited) syntax. True, it is in many ways just a knockoff of C or C++ but that, to me, is part of its appeal. It is far less cumbersome than either and that makes it fun.
Time flies like an arrow. Fruit flies like a banana.
Yes, what suckage. Who on earth wants a simple, dynamic, low-cruft language with first-class functions, closures, lambdas and a prototype object system that still manages to look like the C language family? Evil, evil, evil...
There have been dozens of such languages around. The hard part is also making it (1) fast, and (2) correct. And JavaScript is neither.
> The web browser needs to transform into a sand-boxed window manager.
> How is that again? A window manger, huh?
Every time you add power to a scripting language, you invite abuse. Considering how well MS has *NOT* sandboxed stuff inside IE, absolutely the *LAST* thing the web wants/needs is "more powerful" web apps.
The article at http://www.theregister.co.uk/2008/08/15/webbased_clipboard_hijacking/ describes the latest Flash exploit. It appears to come in via Flash in 3rd-party banner ads. It causes Flash to rewrite the user's clipboard once a second, with a URL to a malware-laced website. The logic is that if you're doing a bunch of cut-n-paste, you may not notice that you've pasted something other than what you've intended. These malware URLs will end up being pasted into people's email messages and web postings.
This is an "equal opportunity attack". Because Schlockwave-Trash is so ubiquitous, the clipboard-hijacking is affecting all major OS's (Windows and Mac and Linux) and browsers (IE and Firefox and Safari).
The problem is that Flash is not a mere player. It's a programming environment complete with scripting language (Actionscript). This includes stuff like System.copyToClipboard() It's not a bug, it's a feature. Yet another reason to block Flash. I use the Flashblock extension for Firefox.
We should send a message loud and clear to web developers...
You may send *DATA* (including text/pictures/sound/movies etc) to my browser, but *YOU MAY NOT EXECUTE YOUR CODE ON MY MACHINE*!!! If I wanted the Russian Business Network to be able to execute their code on my machine, I'd run Windows and IE with ActiveX enabled.
I'm not repeating myself
I'm an X window user; I'm an ex-Windows user
People who complain about Javascript usually don't really understand anything about it - Activation & Variable, [[scope]], closures etc etc. They try to write a program in traditional OOP fashion and maybe they accidentally form lexical closures and see unexpected behaviour that they interpret as variable visibility issues. Or, they touch one of the many places where JS is incompatible across browsers and become confused. Then they go on some forum to explain in how many ways JS sucks. I wish they just studied the language and took the time to understand it.
I'd love to see Haxe ( http://www.haxe.org/ ) supersede Ecmascript.
{{.sig}}
Original post says
That is wrong, ES3.1 is the smaller increment and repair of the current third standard, and "Harmony" is new features beyond that. Doug Crockford, who seemed opposed to much of ES4, wrote:
Some of the features that were in ES4 were reasonable, so a new project, called Harmony, is starting which will look at adapting the best of ES4 on top of ES3.1.
TopSpin's summary is pretty crappy!
=S
ecmascript schmecmascript already! There's be no fun in web development if you didn't have to try and hack around subtly different incompatible implementations of more-or-less thae same goddam thing.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
The blame is on idiots like you who think it's ok to do stupid things. "Hey, hold my beer, watch this." - is a stupid fucking development method for mickey mouse developers like you. "Hur hur hur, I can add this method to a class, have no good encapsulation, and it does something." Thanks, now you've made something difficult to use and that's shittily documented. Fucking asshole JS developers ruining it w/ their php-esque crap.
Just like a PHP developer. "I'll just jump on the trend of the net being more useful." - and fucking derail it.