So I started reading this small article (as a piece of opinion, not sure what to call it), and suddenly Touhou. Not something I expect in a rant about a programming language.
But back on topic: I believe Dart was doomed to die as a JS replacement for the sole reason it was not the joint work of all mayor browser vendors, but an attempt of dominance of a single one.
- CoffeeScript came from the JS community (the author also writes underscore, the most popular JavaScript module)
- Many frontend web developers are also Ruby or Python developers
- Typescript came from Microsoft, who use it to do big apps like xbox music. Seperately, C# has beautiful ideas about inline-async via generators that are similar to yield in ES6. They get async, and Typescript is still more popular than Dart.
- Although not browser/DOM related, Swift shows what Apple considers valuable in a language.
- JavaScript now has the largest package manager of any programming language thanks to npm
Whatever succeeds in replacing JavaScript should come from all of those. Dart had a great DOM API, but bared very little resemblance to the languages web developers actually prefer to use.
Personally I believe that once Dart development is finished, Google will roll the good parts of the server-side pieces to Go and frontend into ATScript/Angular 2.0.
Supposedly one of the reasons ATScript isn't just a small fork of TypeScript and instead is an oddly reimplemented TypeScript built on top of Traceur is so that ATScript can still compile to Dart, so apparently at least a few people on Angular 2.0 still like Dart...
When Dart was released, I was curious to see if they'd position it as an alternative to Java on Android.
They hired kevmoo (a pretty well-respected Seattle area engineer and game dev) as a PM, which again led me to believe they were perhaps looking at game dev on Dart on Android. I fully expected them to start shipping Android with the Dart VM, open up a new set of Android packages for taking advantage of existing/native stuff, and boom: suddenly the Android ecosystem benefits from a new set of developers coming at it from the web angle. That's what Ludei and others have been trying to promote. This goes deeper into solving perf issues, however.
Now that Chrome tabs are represented as individual windows in Android 5.0, the line between "app" and "web app" on mobile is ever more blurry.
I have written apps in Dart, CoffeeScript, and JavaScript. CoffeeScript is a definite improvement on JavaScript, but I find it still lacks a lot compared to Dart. I still hope Dart takes off, and any new language needs at least 10 years to gain any amount of significant support.
I also find that JavaScript developers love their spaghetti code. Bad code proliferates in the JavaScript world. Many may disagree with me, but the empirical evidence does not. Just look at the codebase for any major product, like jQuery for example. I have encountered JavaScript developers with years of experience encourage practice that in any other language would be considered a "hack."
Edit: By this, I mean some JavaScript developers will not like Dart because it's too different and restrictive compared with JavaScript.
That depends significantly on the language. All languages have lots of bad code of course, but I think the JavaScript community (and the language) itself promotes bad code. Or, at least un-intentionally fosters it.
> I also find that JavaScript developers love their spaghetti code. Bad code proliferates in the JavaScript world. Many may disagree with me, but the empirical evidence does not.
It's the world's most popular programming language - a lot of people use it hate it (often with good reason, often not - how often have you heard "JavaScript isn't object oriented" from developers who should know better) but don't spend any time learning it.
The people who actually seek to learn about JavaScript don't write spaghetti: they have arguments about their preferred flow control mechanisms - the JS world is quite famous, in fact, for this. And they get excited about yield in ES6.
The only use of Dart I've seen in the wild is Notch's Ludum Dare work... Although it's a good language, it's not great and doesn't offer much more than what's in the wild. So, Google should use the good pieces and merge them in other projects.
14 comments
[ 4.6 ms ] story [ 57.4 ms ] threadBut back on topic: I believe Dart was doomed to die as a JS replacement for the sole reason it was not the joint work of all mayor browser vendors, but an attempt of dominance of a single one.
- CoffeeScript came from the JS community (the author also writes underscore, the most popular JavaScript module)
- Many frontend web developers are also Ruby or Python developers
- Typescript came from Microsoft, who use it to do big apps like xbox music. Seperately, C# has beautiful ideas about inline-async via generators that are similar to yield in ES6. They get async, and Typescript is still more popular than Dart.
- Although not browser/DOM related, Swift shows what Apple considers valuable in a language.
- JavaScript now has the largest package manager of any programming language thanks to npm
Whatever succeeds in replacing JavaScript should come from all of those. Dart had a great DOM API, but bared very little resemblance to the languages web developers actually prefer to use.
Dart also has async/await, and synchronous generators using yield.
They hired kevmoo (a pretty well-respected Seattle area engineer and game dev) as a PM, which again led me to believe they were perhaps looking at game dev on Dart on Android. I fully expected them to start shipping Android with the Dart VM, open up a new set of Android packages for taking advantage of existing/native stuff, and boom: suddenly the Android ecosystem benefits from a new set of developers coming at it from the web angle. That's what Ludei and others have been trying to promote. This goes deeper into solving perf issues, however.
Now that Chrome tabs are represented as individual windows in Android 5.0, the line between "app" and "web app" on mobile is ever more blurry.
I also find that JavaScript developers love their spaghetti code. Bad code proliferates in the JavaScript world. Many may disagree with me, but the empirical evidence does not. Just look at the codebase for any major product, like jQuery for example. I have encountered JavaScript developers with years of experience encourage practice that in any other language would be considered a "hack."
Edit: By this, I mean some JavaScript developers will not like Dart because it's too different and restrictive compared with JavaScript.
It's the world's most popular programming language - a lot of people use it hate it (often with good reason, often not - how often have you heard "JavaScript isn't object oriented" from developers who should know better) but don't spend any time learning it.
The people who actually seek to learn about JavaScript don't write spaghetti: they have arguments about their preferred flow control mechanisms - the JS world is quite famous, in fact, for this. And they get excited about yield in ES6.
Just because something isn't super trendy, doesn't mean it's not a useful tool.