Google’s Dart Programming Language Disappoints Hackers

Google Dart logo As expected, Google announced its new programming language Dart at GOTO Conf. We previously reported on the language here.

Dart is a new programming language that will run in its own virtual machine in Chrome and compile to JavaScript in other browsers. The stated goals are:

  • Create a structured yet flexible language for web programming.
  • Make Dart feel familiar and natural to programmers and thus easy to learn.
  • Ensure that Dart delivers high performance on all modern web browsers and environments ranging from small handheld devices to server-side execution.

The essential purpose seems to be to create a language better suited for creating large, complicated Web applications such as Gmail. A leaked Google memo had described Dart, then called Dash, as a language the company hoped would “replace JavaScript as the
lingua franca of web development on the open web platform.” Google developer Alex Russell confirmed the memo’s authenticity but distanced himself and Google from the goal of replacing JavaScript. The company seems to be deliberately avoiding calling Dart a replacement for JavaScript at this point. Here is an excellent overview by Dr. Axel Rauschmayer, who sees Dart as more of a replacement for Java than for JavaScript.

Since the two presenters at GOTO, Gilad Bracha and Lars Bak, both worked on Smalltalk related projects – Newspeak and Strongtalk- so many of us expected Dart to be Smalltalk like. This isn’t the case. Most developers are comparing Dart’s syntax to Java. The joke “Dart puts the Java back in JavaScript” is circulating on Twitter. It seems many were hoping for some syntactic sugar, a la CoffeeScript. And in case you were wondering whether you could use CoffeeScript to compile to Dart, CoffeeScript creator Jeremy Ashkenas tweeted: “Emitting any language other than JS from CS doesn’t make much sense — it’s entirely designed around how JS works. Do DartScript.”

At first glance: #Dart a hybrid of #Java and #Erlang with syntactic "noise" from C++/Java. I like "actors" though for concurrency @dart_lang

The overall sentiment in places like Hacker News is that of disappointment, but some developers did find something to like. Dart features actor-like entities called isolates. The actor model is used in programming languages like Erlang and Scala, both of which are increasingly popular. Erlang developer jlouis goes into more detail on Dart’s similarities and differences with Erlang in a blog entry.

Apparent from the syntax and features of the language, there is concern that the language will cause fragmentation. JavaScript creator Brenand Eich wrote on Hacker News earlier this year:

A Dart to JS compiler will never be “decent” compared to having the Dart VM in the browser. Yet I guarantee you that Apple and Microsoft (and Opera and Mozilla, but the first two are enough) will never embed the Dart VM.
So “Works best in Chrome” and even “Works only in Chrome” are new norms promulgated intentionally by Google. We see more of this fragmentation every day. As a user of Chrome and Firefox (and Safari), I find it painful to experience, never mind the political bad taste.

I agree that this is the biggest issue regarding Dart. If it gains any traction – or even if Google rebuilds major applications like Gmail and Google Maps with it – we could be brought closer to the bad old days of Internet Explorer 6-style fragmentation.

About Klint Finley

Klint Finley is a Senior Writer at SiliconAngle. His specialties include IT services, enterprise technology and software development. Prior to SiliconAngle he was a writer for ReadWriteWeb. He's also a former IT practicioner, and has written about technology for over a decade. He can be contacted at angle@klintfinley.com.