Thursday, November 21, 2013

Is Google Dart Death ?

Update actually it's now an ECMA Standard after SDK 1.0 release
This year more than ever, the Chrome Dev Summit event has been full of freaking interesting talks ... except one ... you guess which one ...
Despite the sensationalism of the chosen title, and just to be clear this is about my personal thoughts on such language (or better the way it keeps being introduced) so the trophy for the less interesting talk today goes to the ... drumroll ... Dart one.
Please note that in this post I am not judging speakers ability to either give a talk or their amazing programming skills, I am judging the content and the message to all developers like me.

Update on day 2 there is a Dart interview that eventually tells us more about what Dart is and how it can make web development better. Now this is what I'd like to know/see/hear and thank for, way better than how it has been re-introduced on day one. Back to the post, this was day 1

Where Are Real Achievements ?

I honestly wasn't expecting to hear again all JavaScript problems we learned and we know. At release 1.0 of the Dart language, I was expecting a talk about all the amazing things that Dart can do these days or improved 'till now ... instead, the whole talk was something like:
Dart does not have undefined as JavaScript does ... how cool is that?
Dart has classes, with scriptish syntax, much better than JavaScript ... how cool is that?
Dart has no coercion (aka easy casting through explicit + or ==) ... how cool is that? (n.d. is it?)
Dart has operators overload ... how cool is that? (n.d. so Dart has an extra problem JavaScript hadn't ...)
So now that the everyone got how shitty looks JavaScript, let's go to how Dart works ...

Dart Desugars To JavaScript

So please cut all this crap and start respecting the language able to show all your features because I'm really fed up of all these battles against JavaScript, when once again this language has demonstrated, with all its undefined "problems" thanks gosh no real developer has anymore since 2004, to be very flexible for the modern Web, coming from 14 years ago ... do you get it?
It does not matter how cool is your new language if everything it does can be done as well with JavaScript in all platforms that do not have a native Dart VM ... so just Respect The JavaScirpt and get over it: Dart lost before even trying!

Even Google Seems To Know It

The last talk of today, probably the one with less audience being late in the afternoon (but there were still many developers in that room), was about bringing native performance to the browser through Google Native Client.
Bear in mind, we are talking about native, not yet another VM that won't be able to do the impressive work that Emscripten did and asm.js is doing as well, both based on JavaScript as the target (so go home Dart, you are late to the party!)
The worst part of this post is that I don't even know anything about Dart and how great this could be on my daily basis job because all I know is that JavaScript, the language that I know the most, has coercion and an apparently infamous undefined value I can forget through the undefined == null coercion (problem solved Dart)

Be Polite And Respect JS Or Leave The House

I know I've historically been not so keen about Dart, but waiting a year to see progresses, waiting the final 1.0 release, and hear what I've heard today and from people that worked on V8 too, really got me thinking people are still wondering what the hell is all this about.
When you go at Ruby, Python, even PHP conferences, you hear about how great is any of these programming languages.
You don't need to tell everyone that JavaScript in IE8 is crap, if you are attending a scala conference, you know what I mean?
Even more disturbing, You cannot logically blame the language that makes your language work cross platform ... it's like blaming Assembler for making programming possible ... are you out of your mind?
I think if this is all I can learn about Dart V1.0, specially with ES6 and new Class syntax behind the corner already possible with transpilers, I rather would like to know it's gone ... they tried, but Google Native Client was a better possibility (and I have thoughts about that too ... a talk full of "we were in a plugin era" that talks about yet another browser plugin, even if integrated as Flash has always been in Chrome).
These are fun times Google, I think you are doing great stuff since ever ... but Dart .. show its real muscles or stop wasting ultra skilled developers on something nobody wants and nobody needs, thank you!


Plain JS said...

Dart is impolite, and dead before born

Dart is arrogant, but doesn't have mirror :D
They should look at their self before judging another language

A Matías Quezada said...

As always we have to start our opinions explaining what we are NOT saying:

- I'm not saying Dart is the best option
- I'm not saying Dart speech was good
- I'm not saying I hate javascript
- I'm not saying I like to develop big apps on javascript

I think than the same way we are exhausted of people blaming javascript just because they don't know it we should avoid to critique some tool we don't know.

I've used Dart and I liked it, I mean, I will not enter in "Dart rulez" "Dart is shit" debate, I'm saying it has some amazing, really amazing ideas I would love to use (the way you can implement a class as a interface, constructors convertible into factories is so much easy, optional types...). Of course, a speech introducing Dart should talk about it. I can't enter in details because I used Dart on it's first 6-8 months and I don't know what version 1.0 finally has.

Other thing: "it's like blaming Assembler for making programming possible" what??? you can or can not blame assembler, but will you develop a desktop application with it? Come on! this is just a stupid thing to say, you can blame the language you use as much as you want to, to blame it doesn't mean you don't see it's benefits, like javascript's portability.

And finally, please, please, PLEASE, don't compare "classs-oriented classes" with "ES6 classes", if people didn't understand the prototypes when they where visible how will it be when ES6's classes hide it all? If now it's really (REALLY) hard to make people understand than javascript object-oriented is not like java's class-oriented and than the code is failing not because some javascript bullshit but because misunderstanding of prototypes, how will we explain it when javascript include this false-classes? oh god, I don't even want to think about it... the kid programmer inside me dies a little bit every time someone compares real classes with ES6 classes.

A. Matías Quezada

Andrea Giammarchi said...

A Mathias Quezada this is not a war and I won't reply on anything related JS classes before or after ES6 and about assembler: I don't write in ASM and if I did I probably wouldn't like it being so low level but I would never have fun bulling it because without it any other code or programming language I might love wouldn't exist.

This was the sense of that specific sentence, the rest is: I am sure there's something good about Dart but I had enough of these talks which aim is to tell me how bad is JS instead.

They should get over it if that's all they can do on promoting a new language.

clive.boulton said...

Good discussion. Agree Day 2 was much better. Upcoming Dart events in February hopefully focus less on the debate and more on how Dart complements javascript.

We have a huge overhang of enterprise applications that move money around and javascript wasn't designed for fractions. Yet so many components like 3djs need incorporating.

Nice also if Dart could play well with Node and Android (who apart from manager type wants to write Java).

Rüdiger Möller said...

Well, in have experienced more than once, skilled developers just refuse to do JavaScript. From a viewpoint of a senior developer, some of the fundamental quirks and shortcomings of JS are literally insulting.
In my view lack of experience using a well structured (typed) language in large projects is the only explanation why some people thinks one can build real systems using JavaScript.