15

Dart has been out for ages (in internet years), but judging by Google Trends , it hasn't gotten much hype, and the fact that it only works in Chrome doesn't help either. Nonetheless, Chrome is gaining market share every day, which lends itself to a better view on Dart.

What is the big picture now? What state is the language in? Do people regard highly of it? Market share? Web App showcase? Some feature implementations that make you go "I have to use it"?

gnat
  • 20,543
  • 29
  • 115
  • 306
Mihalis Bagos
  • 698
  • 7
  • 14

5 Answers5

27

The short answer to "What's the state of Dart?" is: it's in Technology Preview. That's a special way of saying, "we launched early so we can open source everything and work in the open." "Technology preview" also means "we're not even in Alpha yet, we have a lot of work to do, but there's enough there for you to play with and give feedback."

Internet time may work for news stories or consumer product iterations, but probably not for something as ambitious and broad as the Dart effort. Remember, Dart is more than just a language. It's also a set of libraries, a better DOM interface, a virtual machine, an Editor, and integration with Chrome. The team is working very hard on a lot of parallel threads, but I personally expect it'll be six months before we have most of the pieces in place.

It's not true that Dart only works in Chrome. Dart compiles to JavaScript and targets modern browsers. Sure, Chrome will be the first to launch with native Dart support, but ensuring Dart compiles to performant and effective JavaScript is a core constraint and feature of the project.

The big picture is that Dart will become a "batteries includes" development environment for modern web apps. Dart's driving goal is to help ensure the web remains a productive and enjoyable platform for app development and deployment. This means a lot of pieces need to fall into place: language, libraries, editors, virtual machines, and browser integration. Put all together, we believe Dart will be a compelling option for modern web app developers.

The big big BIG picture is that we want to bring app developers to the web, and we want web developers to write more complex web apps. If they use Dart, that's great. But at the end of the day, the language doesn't matter. The only thing that matters is that complex, client side, high fidelity, low latency, beautiful modern web apps are being built.

The language is in a state of development. We see new releases to the spec approximately once per month. Major features are missing, such as reflection, but we keep iterating. We just added map() support to Collection, for example. Gilad Bracha, a guy who knows his languages (having created NewSpeak and worked on the Java Lang Spec) and Josh Bloch, a guy who knows his libraries (having written Effective Java and worked on the Java Collection libraries) are working on the language and libraries, along with the greater team.

Do people regard highly of Dart is hard to generalize, and it probably doesn't matter too much to you. You should draw your own conclusions after having played with Dart. My experience is that app developers from other platforms such as Java, C#, or Flex find Dart attractive and familiar. My experience with JavaScript developers is split. If that JavaScript developer has also built apps on other platforms, they are cautiously optimistic about Dart (or, at least, the solution it's trying to provide). If that JavaScript developer grew up on JavaScript and has only programmed in JavaScript, there's more hesitation. This could be some fundamental concern about the language, or hesitation in leaving a comfort zone, or simply just not running into edge cases with JavaScript. This is just generalization, but I've seen plenty of people become productive in Dart extremely quickly.

As for market share, it's extremely early in the game. It's probably not the right question to ask, as Dart isn't even shipping. A more interesting question would be, "What is the market share of apps on the web?" and then go figure out how we can address that.

As for a Web App showcase, the Dart team built Swarm, a slick newsreader. Unfortunately, we only have it in source code right now: http://www.dartlang.org/samples/index.html

As for some "killer" features, I would say there are a few pretty interesting ones:

  • optional types are slick, they add annotations and documentations for humans and machines.
  • Isolates is a great way to achieve concurrency in a safe manner.
  • Libraries (modularity) is sorely needed for the web stack, and Dart has libraries and classes.
  • Snapshots will allow for extremely fast start-up
  • Bundled libraries (like collections, Stopwatch, etc) will unify code bases and shrink shippable code
  • Nice new DOM interface, which makes working with DOM much more enjoyable. It feels like native Dart code.

I hope I've answered your questions. I think the only question that matters is, "Does my language help me build complex, high fidelity, low latency, modular, modern web apps?" The end state of all of this is simply helping more app developers deliver more successful apps to the modern web.

Seth Ladd
  • 1,724
8

You can't measure programming language age in "internet years". In fact, you can't measure any actual technology in internet years. All you can really measure in internet years are hypes, but hypes don't reflect reality.

Dart is public since 3 months now. Compare that to the "fresh" and "hot" techs in the field, like CoffeeScript or Node.js, which are public since 2 years and almost 3 years respectively. Also it's worth noting that both are relatively small steps compared to Dart. Basically CoffeeScript meant plugging a JavaScript-generator into a Ruby-based parser and Node.js meant binding non-blocking I/O to the Google V8.

Dart is an attempt to redesign front end web programming at all levels, i.e. syntax, language features, runtime environment, APIs. Comparing Dart to CoffeeScript for example, is like comparing a prototype of a solar energy powered, auto-piloted personal aircraft with a 1968 Shelby GT. Sure, the former has far more potential, but investing in it, let alone boarding it requires a lot of audacity. The latter has a lot of known deficiencies, but they are known, which makes the whole thing predictable and reliable.

Of course this is just speculation, but I think Dart is a dead end, that will eventually be salvaged for moving JavaScript forward, or other solutions. If you want a dynamic language, CoffeeScript and Parenscript already do what Dart promises. If you rather prefer a statically typed language, then haXe and Opa will do the trick. All the four have a head start on Dart. And all of them are designed to be compiled to JavaScript as a default, not just as a fallback.

back2dos
  • 30,140
5

Dart is still in technical preview. At the moment the language specification has the version 0.0.6, a 0.0.7 is expected somewhere this week. It is far from "complete". There are several example in the repository: http://www.dartlang.org/samples/index.html

Here is one view on what is better in syntax terms than in JavaScript: http://www.grobmeier.de/10-reasons-why-dart-is-cooler-than-javascript-03012012.html Disclaimer: it is my post. I need to say here I like JavaScript, but at some points it has quirks, which I don't like very much.

There is also a growing community around it: http://www.dartosphere.org

Some people have managed to port Box2D to Dart, another guy connected to CouchDB. Anyway, there is nothing you should use in production.

Before a while Josh Blochua has joined the team to work on a refactoring of the API. You can expect some changes even in the Core API.

Browser support: you can transcompile Dart to JavaScript, preferably with Frog (not DartC, it compiles to huge javascript files). Dartium is one of the browsers which supports native Dart, a controvers discussed Webkit branch is somewhere too.

My personal expectation is to get something more concrete in the middle of next year. From my experience Google Devs are doing lots to make the language proper and good, borrowing not only from Java, but also from Erlang and JavaScript.

Here is an example, a game ported from JavaScript: http://blog.sethladd.com/2011/12/10-lessons-from-porting-javascript-to.html

One can expect Dart to arrive to Android, maybe even as a "main language". People are saying it will come to AppEngine.

Personally I think Dart is very elegant and already pretty nice. In addition I think it will have a marketshare once it is complete.

You'll find many of your questions answered in this FAQ: http://www.dartlang.org/support/faq.html#compare-to-coffeescript

Christian
  • 336
0

Dart has been out for ages (in internet years)

It isn't even used extensively and it is immature. Production ready technologies have existed for 10-15+ years... for Dart you can't even say it's a pre-alpha. New technologies always look good, on paper, when no one is using it.

it hasn't gotten much hype

I think the opposite. It's a shame such a bad, backward language got so positive reviews. It's going back from beautiful Ecma/Java Script OOP with parasitic inheritance, closures and callbacks to some wooden, decade old OOP taken from Java with all horrible programming practices Java comes with.

Some feature implementations that make you go "I have to use it"?

None. If you know java and you have intolerance for knowledge to learn Ecma/JavaScript properly Dart is probably only thing that'll work for you.

You know how google works. They use Java a lot, so probably that's why they produced such horrible language... they're just acustomed to it.

Beside it's further fragmenting the web and i can only hope Mozilla and Opera never implement this (because MS won't add support for some google java like language for sure). Beside the whole concept is DATED, we should get rid of languages like C++ or Java at least when coding UIs because these are very ineffective. It's like replacing C++ with Assembler, because coders in their late 50s refuse to learn new things.

Slawek
  • 2,892
0

Dart is a flawed concept following in Javascript's footsteps. Google should be collaborating on creating a standard runtime for web browsers (sort of like an HTML 6). Similar to java byte code or microsoft's IL.

We should not be standardizing on specific languages, but on runtimes. The "browser is an operating system". Right? WTF google? Follow your own vision!!!

Lord Tydus
  • 1,441