During the past two weeks I’ve given three presentations on Tamarin and ECMAScript 4. I’ve gotten a ton of great feedback, criticism, and commentary – all of which has been very helpful.
Here’s a quick re-cap of how the talks went:
Ajax Experience East (The Future of JavaScript)
There were some very smart questions asked by the audience here – and some pressing concerns. Although, the theme of “being concerned” was a large one throughout the conference (this was right about the time of the white paper release and ensuing blog kerfuffle). That being said, of those that attended my talks, I was able to help alleviate most of their initial doubts (such as towards backwards compatibility, the new type system, or the complexity of the language). It was pretty easy to spot conference attendees who did not attend my talk as those questions were raised again during the ensuing panel discussions. I generally found that those who were at the talk were able to get up to speed pretty quickly; understanding most of the changes and being excited about when they could start to test them.
Adobe Max Japan (Tamarin and ECMAScript 4)
This was a really unique speaking situation for me – talking to a large room of ActionScript developers about the future of their language. I only have a cursory knowledge of ActionScript so I was able to gloss over some of the details of ES4 (since they already have type annotations, classes, and packages). That being said, I got some really fantastic questions. Considering that these developers have already been using a large subset of ECMAScript 4 for close to 1.5 years it was great to hear the sort of concerns that they had.
Overwhelmingly, of the developers and Adobe employees that I talked to, everyone seems to love the new changes that were introduced in ActionScript 3 – and they’re all looking forward to the ECMAScript 4-based updates. It’s interesting to see where the ActionScript community has gone, as it’s a good indicator of where the JavaScript community will lead once JavaScript 2 is out the door.
Mozilla Japan/Shibuya.JS (The Future of JavaScript)
This talk was the most fun, out of the three. I was primarily presenting to members of Shibuya.JS (the only JavaScript user group in the world) and they were very excited and asked lots of good, hard, questions. Probably their biggest concern was over the “expressiveness” of the language and if that would be maintained into the next version.
Members of Shibuya.JS streamed the talk that I gave to them over ustream – you can find recorded copies below:
» The Future of JavaScript (Video)
» The Future of JavaScript – Lightning Talks and Q&A (Video)
After the talks a number of us went out for dinner and it was great fun. We talked JavaScript, jQuery, and ECMAScript for many hours – frequently just writing code on paper to talk to each other (JavaScript being the universal language).
I hope I can make it back to Tokyo soon (Gen has a longer recap of my trip up) and be able to visit Shibuya.JS as well.
Seeing them in action has given me a serious itch to start up a Boston.JS group.
Ryan Breen (November 9, 2007 at 7:27 am)
Boston.JS group. I’m in!
pd (November 10, 2007 at 9:10 am)
these ustream clips don’t seem to work, or is it just me?
Jonathan Watt (November 11, 2007 at 10:34 am)
There seems to be an error in your ‘let’ slides. I believe the line:
var x = 10 + (let (a=3) a) + a*a;
should be:
var x = 10 + (let (a=3) a + a*a);
John Resig (November 11, 2007 at 3:44 pm)
@Jonathan: THat was intended – to show that you could scope the value of ‘a’ to a single variable within an expression (granted, it’s not hugely useful in that context – but I just wanted to show that it was different from the other ‘a’s).
Jonathan Watt (November 11, 2007 at 4:03 pm)
Oh, sorry. My bad.
Jonathan Watt (November 11, 2007 at 4:13 pm)
Should I not be able to use the var ‘a’ inside the ‘let’ expression like this:
var a = 5;
(let (a=2*a) a); // evaluates to 10
John Resig (November 11, 2007 at 4:26 pm)
@Jonathan: No, that’ll work just as you expect it to. You can use outside variables (with the same name) inside of a let expression, let block, etc.
I did some testing and both let expressions and let blocks seem to be wonky in the Reference Implementation – but you can test this right now (in Firefox 2) using JavaScript 1.7:
<script type="application/javascript;version=1.7">
let a = 5;
let ( a = a * 2 ) {
alert(a);
}
alert( (let (a = a*2) a) );
</script>
How those work won’t be changing from how they’ve been implemented in JavaScript 1.7.
Jonathan Watt (November 11, 2007 at 4:54 pm)
Okay, thanks. I filed http://bugs.ecmascript.org/ticket/302
James Burke (November 13, 2007 at 7:52 pm)
Looking at the “Tamarin and ECMAScript4” slides, comparing slide 1 (The Big Picture) with slide 2 (The Direction): Rhino is not in the Direction slide.
Does that mean there is no planned Java container for ECMAScript4 (something like a Rhino for ECMAScript4)?
John Resig (November 13, 2007 at 11:21 pm)
@James: Oops! That was a mistake on my part. Yes, the Rhino developers are currently planning on bringing it up to JavaScript 2 once the specification has solidified.
Alecs Galindo (November 29, 2007 at 11:57 am)
So, the next ECMAScript is much similar to Java and ActionScript 3?? The greats things of JavaScript 1.X is the simplicity like
var MyObject = {
name: "Bender",
lastName: "Rodriguez",
takeDrink: function(drink_name) {}
};
MyObject.takeDrink("beer");
Where is it? out of ECMAScript 4?
John Resig (November 29, 2007 at 11:07 pm)
@Alecs: Nope, nothing is being removed from the language – you can continue to do the traditional techniques that you currently enjoy. ECMAScript 4 simply gives you additional power with which to build complex applications (whereas, previously, it simply wasn’t possible).
Alecs Galindo (November 30, 2007 at 11:50 am)
So, if I have a script on 1.8 or less and run it on ECMAScript 4 engine it will run without any problem?
John Resig (November 30, 2007 at 12:44 pm)
@Alecs: Yep, that’s correct! ECMAScript 4 is being designed such that it’s fully backwards compatible.
zakłady bukmacherskie (May 7, 2008 at 2:07 pm)
That guy looks like J. Lenon… with different glases. OK kidding.
Java is going down, dpd is a future ?!??