Hacker News new | ask | show | jobs
by stupidcar 3442 days ago
I believe it has a lot to do with internal Google politics.

Back in 2004, Google hired Lars Bak and his team (who had previously created the HotSpot VM for Sun) to create the V8 JS engine for Chrome. Their work was a spectacular success. Overnight, JS became one of the fastest dynamic languages in existence, and this ushered in an arms-race for better JS performance across competing browsers.

However, after a few years of wringing ever more speed out of JS, Bak and co. were totally fed up with it. In particular, how its various quirks prevented a lot of the optimisations they wanted to do. Afraid that Bak would quit, and maybe go work for a competitor, Google schemed to keep him. They let him design his own new language (originally called Dash, later Dart) that would be more amenable to optimisation, and planned to ship a separate Dart VM within Chrome.

However, these plans got leaked, and caused a bit of a furore back in 2011. The feeling was that Google were attempting something of an Microsoft-style takeover of a big chunk of the web platform. When other browser vendors said they wouldn't ship a Dart VM, they plan was dead, sort of. Google still wanted to keep Bak and his team on-board, so they let them continue working, and they developed a Dart-to-JS compiler so Dart could run on the web without a separate VM.

Google's big enough and rich enough that they can afford to run plenty of these strange projects. And if Dart is popular internally, and delivering value, why kill it? It is ironic though that of all the big web platform technology plays that Google have made — GWT, Dart, Polymer — the one that went stratospheric was Angular, a random, minor open-source project without any place in the grand strategy.

Incidentally, one side effect of all this was that Chrome's V8 engine lost most of its key developers, and so its progress stalled for quite a while. Eventually Google formed a new team V8, based in Munich, to pick up the ball. That's why there's been so much more progress on stuff like ES6+ features and better JIT compilation in the past year or so.

1 comments

Thanks for the retrospect. I always think Dart has lots of potentials. It could be a great general-purpose programming language, as versatile as perl/python/ruby while tens of times faster than them all. Unfortunately, the dart developers are too obsessed about web programming and reluctant to embrace the bigger world. It is really a pity.

PS: when dart came out, javascript was already blazingly fast (as a dynamic language) and largely usable. Dart is indeed better but not that better to revolutionize web programming. On the other hand, most general-purpose programming languages are very slow even nowadays. Pypy is faster than CPython, but not to the level of V8, dart, julia or luajit. A capable JIT compiled dynamic language may change how we program. Dart was the closest, but missed the target.

Seems like nim and crystal would fill that void better, maybe even rust.
> Seems like nim and crystal would fill that void better

Having seen a talk on Nim at the Bris.tech conference [1], I can't think of any void it would fill better than an alternative. My takeaway was it was a very flexible but poorly designed language with too many ways to do anything.

1. Video coming soon; keep an eye on https://www.youtube.com/user/bristechmeetup/videos

That's sad to hear. But I want to learn more. Can you give some specific examples of what gave you that impression?
Yes, especially considering that Nim can compile to JS too. It truly is general purpose in that regard.
Julia is a general purpose language
Julia focuses too much on numerical programming, which makes it great for matlab users, but awkward for other purposes.
In what way?
> A capable JIT compiled dynamic language may change how we program.

You mean Lisp? AOT/JIT available since the 70's.