Dart
Dart looks promising; something that, thanks to Gilad Bracha, no doubt, learns from JavaScript without just looking like a new syntax for it.
For example, the single-event-loop side effect of JavaScript web browser implementation is carried into Dart, through the workings of isolates which are once again eddies of sequentiality in a concurrent world, without access to shared state. Heavy initialization is explicitly ruled out by only allowing constants on some static constructs. Constructors can each have a “method name”, solving the overload problem for them. Factory constructors unifies factory methods and actual constructors. Optional types allows stapling on types and lets prototyped functionality turn into something solid. And so on.
The documentation is, to put it gently, “present”, but the language spec may be the most thought-out document.
The big question is “do we need another JavaScript alternative”? Maybe we don’t, but the actual warts in JavaScript (and I do mean warts, not just the way it’s constructed) are ugly enough that I want something more than a preprocessor to paper them over with. We’ll see how much of an alternative Dart turns out, but it’s got enough good ideas to get off the ground and I trust Gilad Bracha to not just toss in everything that looks exciting without thinking over how it’ll upset the rest of the language.
I’m trying to decide how bummed out I am. Was hoping for something more CoffeeScriptish in look’n'feel. I do realize that C-style is more comfortable for folks and allows for faster uptake, wider pool of users, etc. I haven’t done much actual playing around because the setup story looks miserable.
I read about the setup too, and since I have neither the partridge nor the pear tree, I haven’t yet attempted it.
If you’re looking for CoffeeScript, why not try CoffeeScript?
Dart is far from perfect, but at least they have sidestepped tons of issues, like having something called an ‘array’ or that looks like a C pointer around. (Hi, Go.) Let’s see if one of those sidesteps lead right into a bear trap instead – we’ll have to see how only having pure objects (an int variable initializes to null and not 0) turns out.