Google believes Dart speeds up both developers and the programs they write, but skeptics worry that it fragments Web programming and undermines the industry's focus on better JavaScript. So far, it's been a largely academic debate, but that will change in coming months.

Hi, thanks for your reply, and I kinda of agree with it.
Yes, I like languages with a good class semantics, but I coded a lot in plain ANSI C before, so I'm experienced with both types.

Javascript could not add a complete class, with types that can be easily tracked from a function that uses it, surely, the language was never developed with that in mind, so it had to follow the path that was created.
That doesen't mean this is the best scenario, of course, and the debuggers in browsers help you to track types A LOT.

I don't pretend to spit in the dish I've eaten before (PHP and Javascript paid com CC degree), I like to play with javascript, I think some new features like web-sockets are incredible. It is just that, Dart is better in all aspects I've ever looked into.
To be honest, I wish javascript was "fixed" on its weak points instead of a new language to be created, but I do not believe it is possible to do so, while keeping backwards compatibility.

Yes, I like languages with a good class semantics, but I coded a lot in plain ANSI C before, so I'm experienced with both types.

I think you may have missed my point. ANSI C has no OO features. You can of course using OO techniques in any language, even C, but the language itself wasn't designed with doing that in mind.

JavaScript was designed for OO programming, it just doesn't use the same mechanics as class based languages. In many ways it is in fact far superior to class based languages, at least from the point of view of flexibility.

Javascript could not add a complete class, with types that can be easily tracked from a function that uses it, surely, the language was never developed with that in mind, so it had to follow the path that was created.

It surely could have, but it didn't want to. Most of the things you find fault with are not mistakes, they are features...

You can model class based inheritance (even with typing) in a prototype based language quite easily - but you cannot do the inverse... Granted, it isn't static typing (there is no compile time checking), but adding tags to objects to denote their type and their ancestry is trivial - its just that no one does this because it really doesn't matter. As a javascript programmer, I don't really care what "type" an object is, because the only reason to care about that is to keep you, as a programmer, from doing something to it you "aren't supposed to do".

Type checking doesn't enable any functionality - it only removes it. The problem is there are entire classes of problem solving methods that when passed through the filter of type checking look like mistakes, when in fact they are not...

To be honest, I wish javascript was "fixed" on its weak points instead of a new language to be created, but I do not believe it is possible to do so, while keeping backwards compatibility.

Most of its weak points are honestly in syntax (minor things), not the kind of things you are mentioning - the fact that it is prototype based and dynamically typed are its strong points.

I don't personally have a problem with Dart, because Dart is a language intended for general purpose programming, specifically "structured" programming by teams. That is something that JavaScript is not so great for, and it does it in a way that doesn't break JavaScript - because it is a different language.

Fixing the "weak" points you describe in JavaScript would be, in my opinion, totally destroying the essence of the language.