Dart is such an uninspiring, imagined-in-1995 language that I still wonder if I ever find a use-case for it.

This we-are-from-Google-and-everyone-else-is-stupid approach to language design is imho the real disease (also see the comment on Google Guava, that tells a lot).

I just don't want to develop in a language which throws the last 2 decades of language design experience over board because they designed a language for the lowest common denominator.

EDIT
====

Some people don't know the comment from the Google Guava authors, so here it is: https://plus.google.com/113026104107031516488/posts/ZRdtjTL1...

The problem imho is that this attitude, behavior and world-view is endemic inside Google. (Look at all the NIH stuff written solely because it was non-Google.)

They think YOU are stupid and treat you like a kid, keeping away potentially useful functionality they deem to advanced for you.

Re "decades of language design":

- nulls, even for numbers. Seriously? So there is no efficient integer type which can be mapped to simple CPU instructions, but they also make sure that the arbitrarily sized one is slow without huge investments into VM technology and data flow analysis? Additionally, double is of course fixed length. Just wondering ... shouldn't this be exactly the other way around?

- A totally broken approach to types. The guy designing the language is more or less at war with static type systems. Seems like he is trying to prove a point by designing the most useless, statically-typed-looking system he can come up with. I mean seriously ... they allow people to write types down, but declare that they have no effect at all? Java did that too with the type erasure of Generics and everybody knows how that tiny amount of we-will-ignore-the-stuff-you-wrote worked out. Now extrapolate to a language which does that for everything.

- Single-implementation inheritance. Even the COBOL of language design (Java) is moving away from it. Designing a language in the 21st century lacking traits ... are they kidding me?

- Conflation of Null, Unit/Void and Bottom/Nothing.

IMHO, Dart is more or less a combination of all bad ideas of Java (poor Collection libraries, user-visible type erasure, semicola ...) and JavaScript (untyped, collection literals, no usable concurrency ...)

Really, Dart is like PHP. It is a hoax fooling people to believe it is a programming language. For instance: "If the last statement of a function is not a return statement, the statement return null; is implicitly appended to the function body." REALLY? Who in his right mind comes up with ideas like this?

Or this: "Type void: [...] On the other hand, it is possible to return the result of a void method from within a void method. One can also return null; or a value of type Dynamic." Are they KIDDING me?

Another one: "It is a compile-time error for any type other than the types int and double to attempt to extend or implement num." So not only are the provided types the most unfortunate combination imaginable, but the also make it hard for people who want to provide their own number types?

What the Web would have needed was a module system and an approach to security (because the current HTML5/JavaScript implementations of browser vendors lack any thought about it).

Sorry, if I got a bit aggravated at the end, but such remarkable bad language design just infuriates me, especially if it doesn't arise because the language designers are stupid but because they think their users are stupid.