I tried dart just last week with dart IDE (1.4.3). It was good, much better than javascript.
My observations:
Installing dependencies was easy. Types help a lot. The IDE is good but sometimes can not show the correct type or just shows dynamic, the autocomplete is usable if you write `this.` . Usable for a modify-refresh cycle but the attached chromium seems to be a little buggy (on xubuntu the window is not correctly drawn). In-browser exceptions are a little cryptic to read. Very similar syntax to java/c#. Good stdlib (I tried async/browser/math). Little cumbersome calling JS but it works. Bult-in factory pattern, setters/getters.
I think they could let users create multiline functions with the => operator (currently only one line). :)
I tried to pub my code, but it did not work for some reasons. I haven't tried since then so I don't know what kind of js it generates.
How well does Dart interact with JavaScript, especially libraries that are asynchronously loaded? I know that the Dart compiler is a whole-program optimizer, and I get the impression that Dart wants to own all the code on the page.
In my line of work (web analytics), I have to use third-party JavaScript libraries in order to integrate tools onto my page, like Adobe Analytics (formerly Omniture SiteCatalyst) or IBM CoreMetrics or WebTrends. Fully instrumenting a page generally involves wiring up other JavaScript on the page with event handlers for web analytics functions (e.g. video play/pause/progress, with video name & length as parameters).
Most analytics tools are also moving towards asychronously-loaded script-injection techniques, like Adobe DTM or Ensighten. These usually include the ability to selectively load relevant libraries, like only having video tracking on video pages.
What's Dart's story for interacting with tools like that?
If Google is even half interested in Dart (which is seems to be, since it pays for the Dart team), why doesn't it do any proper moves to push it, besides for the browser which ain't gonna fly by itself?
1) Properly package and add "batteries" for a server side version of Dart. Pay some team to write a proper and complete Rails/Django or at least Flask level framework -- and document it.
2) Make a Google version of node.js using Dart instead of v8.
3) Even better, merge (1) and (2) for a serve side framework with both good syncrhonous (e.g Django like) and async (e.g Node like) story.
4) Support Dart as a first tier development language for Android.
What is Google's vision for Dart going forward? Why is it not a primary language for Android?
I really like Dart. Google is pretty much the only company trying to break the tyranny of JS in browsers.
(e.g. Microsoft clearly said that they are betting on C# and .NET as their main offering for everything - would be nice if Google was capable of this sort of direct messages)
One of the things that for some reason really confuses me about Dart even though it probably shouldn't is it's status as being full stack.
I really want to use AngularDart for the front end of an application I am using and I would like to use Rails for the back end as well as some static content. I can't seem to find an easy way to make that happen. In addition, how does Dart interact with existing JavaScript libraries?
What is your take on swift? Do you think dart can borrow some ideas from swift? Most of it is just syntax sugar, but it is very pleasant to look and work with.
I'd like to Dart to happen. What worries my is that Dart has Java EE mentality. Hipster programmers won't touch it and lack of traction may kill the project. What's the solution? Performance may be a great USP. Rewrite Gmail in Dart, so tools like Streak, Rapportive and other extensions won't kill the performance.
I use Dart in production, it has its advatages like:
1.- It is better than JavaScript, is like using C# with a litle mix of Java.
2.- It comes with its own libraries, no more underscore.js or other patch libraries that JS needs, it is already in the toolkit.
3.- It comes with the Dart Editor, where you can debug your code easily, for scalable projects I find this to be invaluable.
4.- It will run in all your browsers, because it will export your code to JavaScript, but not only export it, it will optimize it and will run really fast.
5.- The pub library, go to pub.dartlang.org and you will find lots of packages that you can install and use, like a bootjack, a bootstrap port in Dart.
There are prolly many more, but these are the ones that come to my head right now.
But it also has its own problems like:
1.- No Dart support for Chrome yet and we don't know if there will ever be at this point.
2.- The generated JavaScript will be huge, and I mean huge, mine is like 460k per file and I'm not using polymer, when I used polymer the generated JavaScript was over one megabyte, just insane in the cloud.
3.- Get use to regressions, with every point update I've have issues, I upgraded from 1.4 to 1.5 two days ago, now my code is broken It runs, but it will for example run futures twice, So I went back to 1.4 for now, I had some other issues with UTF when migrating from 1.3 to 1.4 so, get use to.
4.- They are slow fixing bugs, looks like polymer and speed are their priorities, but when you need something trivial that other languajes have had for years and you report a bug it will get ignored, I've waited for 18 months and my open bugs are not fixed yet.
I would say that Dart is nice and you should give it a chance.
Yup. At Sendbloom.co we have used Dart to build a tool that is used by sales people to send out email campaigns. The tool is inspired by quartz composer/Max MSP's interaction paradigms (drag-and-drop visual programming).
As someone else mentioned, Dart code can be fairly verbose, but it is very readable and programming with it is a joy when compared to writing vanilla javascript/jquery.
I'd be happy to answer if you have any other questions about Dart.
I was at last year's Google IO and a lot of people were asking the Dart representatives about whether Dart was going to be supported in Chrome (not just Chromium). We were told the team was holding off because of performance considerations. It has been ONE WHOLE YEAR since then.
I'd much rather they keep holding off. We've had more than enough of big companies fragmenting the ecosystem by making their own languages, file formats etc. because they can. As things currently stand, Dart compiles to JavaScript, which is exactly the right way to do it; that way it's a tool that's available if you want to use it, but it doesn't screw up interoperability.
Chrome already comes with NaCl which nobody else but Google uses it. Do we want another VM inside Chrome that nobody else will adopt?
And now they're putting Android inside ChromeOS, too, just because they don't want to admit Android itself would work better on notebooks (given the right interface) than ChromeOS.
fyi, I think most of my original complaints in that bug are either fixed, or largely mitigated. I don't think we've had any issues for over a year now (since Dart 1.0). I still wish it was even more bulletproof, but it isn't scary anymore like it was. Google is building lots of stuff in Dart too, so we're on the hook if something breaks.
I would like to use it but Javascript Frameworks and libraries are being developed so rapidly that it gets difficult to choose Dart and plus it is yet to mature. I may be wrong.
Dart's been very stable for a while now, and has a really good library ecosystem already.
Personally, I wouldn't worry too much about JavaScript frameworks evolving rapidly, just go with anything the supports Web Components. In JavaScript that would be Polymer, X-Tags or Bosonic. In Dart that's Polymer. Or, in either you can write directly to the platform APIs without a library.
In my mind there is BWC and AWC: Before Web Components and After Web Components. The world or web apps is undergoing a paradigm shift on par with AJAX right now, and I wouldn't use any framework that doesn't support Web Components.
I too would like to see a lot more work done on Dart web frameworks (particularly client side) and a lot more documentation/tutorials demonstrating non-trivial real applications which have a complex UI, data binding, and talk to a database on the backend. Right now it's the dearth of documentation/tutorials/books holding me back as I'm on the beginner end of the spectrum--but still very interested in Dart.
Hello, golangs channels and go routines have been quite popular with some. So popular that the clojure guys created core.async and even adopted the "go" command(as a nod I'm assuming?). This works in the JVM via clojurescript.. Has the Dart team considered such a system? Was it brought up when planning the await stuff?
While it's true that Dart is aimed at the sort of territory dominated by JavaScript (client-side code in the browser), Rust is instead aiming towards the sort of use cases one might choose C++ for today – for example, as the language used to create the browser itself.
As in Mozilla Rust? That is a systems language, nothing to do with JS (other than it is being used to build Servo, Mozilla's experimental new parallel browser engine)
I usually browse the docs when starting with a new topic; the dartlang website has tons of stuff (and the articles are usually kept up to date), it's quite easy to get started.
This is a very simplified answer, but here's my take:
CoffeeScript says that the main problems with JS are the inelegant C-style syntax and a few semantic trip wires. It addresses those while still keeping the underlying semantics, APIs and ecosystem.
If what drives you up the wall about JS is stuff like the DOM, or JS's object model, CoffeeScript won't help you much. If you are OK with how JS behaves and like the very large JS ecosystem, CoffeeScript can be a nice fit.
Dart takes a much larger semantic step away from JS. Syntactically, it's more similar to JS than CoffeeScript is. It sticks with braces and statements, and the whole C kit and kaboodle.
However, semantically, it's much different. It has a full-featured class system with inheritance, mixins, getters, setters, operator overloading, etc. It has a static type system so you get the nice tooling experience you expect from a language like Java or C#. It also completely revamps the DOM APIs to (hopefully) be more rational, modern and consistent.
The cost, though, is that interacting with the existing JavaScript world is a little more difficult. You can interop, of course, but it isn't as seamless as CoffeeScript.
I just don't trust Google to do languages and developer tools very well. They don't seem to depend on developers enough to bend over backwards for us the way that Microsoft does.
Plus, they seem to want to use web tech to build native desktop tools all the time and little things like "keyboard acceleration" don't seem to matter to them because there are no standards for that in web-world.
Not sure what you mean: MS has a history of abandoning its developer platforms and frameworks that thier developers have invested in, so much so that there's no longer a clear UI story for building native desktop windows apps, i.e. VB6, Silverlight, WinForms and WPF are all effectively deprecated. Although they have long support life, when they officially abandon a platform they also refuse to Open Source it so others can keep it alive (e.g. VB6 http://bit.ly/KPMUS6). I personally can't see how anyone can put trust into building native Windows desktop apps (i.e. over web apps) given the repeated a history of abandonment.
Likewise on the server side there's been history of deprecated frameworks a lot of developers have invested a lot of energy into learning, e.g: .asmx, CSF, WCF, WCF/REST, WSE, WCF DataServices, RIA
Whilst VisualStudio is a great IDE, I find it a subpar experience without R#. The major advantages Dart has over C# is that it still provides an enjoyable experience to develop even without an IDE which also includes support for the most popular text editors: https://www.dartlang.org/tools/
If you like IDE and tooling support, the DartEditor offers a good experience with built-in analyzer, debugging and refactoring support you can expect from a well engineered language.
By contrast, C#'s configuration model, msbuild project format, heavy frameworks and tooling makes it unfeasible to develop without an IDE.
The other major advantage Dart has is that it compiles down to JS where even the compiler is completely self-hosting and runs inside a browser without plugins: http://try.dartlang.org/
Being able to share the same code on client and server and having a single integrated development full-stack experience is a huge win in re-usability and utility.
Another killer feature is that the language and tooling is cross-platform which supports Windows, OSX and Linux. Something .NET devs often miss out on is the value and utility of being able to host apps on cost-effective Linux servers.
Google continues to invest a tonne of resources in Dart and Polymer which are massive undertakings that are providing a much simplified and consistent experience for developing large, complex web apps. Nothing like Dart or Polymer exists. Dart is a platform that transpiles to JS, includes a native Dart VM, an entire toolchain including IDE, analyzer and debugger both in Dart Editor as well as in Chrome, in both the Dart VM as well as debugging with Source maps.
The worlds best VM engineers work on the Dart VM, i.e. the same pedigree responsible for the StrongTalk VM that was later acquired by Sun to form the basis of the world-class Java Hotspot VM that later went on to develop V8, are now leading the development on the Dart VM.
The excellence shows itself in the consistency and minimalism goals in the language, providing a productive, iterative dynamic language experience for fast prototyping with the benefit of static analysis with optional typing when scaling up to a maintainable, well-documented code-base (best of both worlds).
Not only is Dart a productive dynamic language, it also has excellent performance, the best performance of all languages I benchmarked with a port of Peter Norvig's Sudoku solver: https://github.com/dartist/sudoku_solver#benchmarks
luos|11 years ago
My observations: Installing dependencies was easy. Types help a lot. The IDE is good but sometimes can not show the correct type or just shows dynamic, the autocomplete is usable if you write `this.` . Usable for a modify-refresh cycle but the attached chromium seems to be a little buggy (on xubuntu the window is not correctly drawn). In-browser exceptions are a little cryptic to read. Very similar syntax to java/c#. Good stdlib (I tried async/browser/math). Little cumbersome calling JS but it works. Bult-in factory pattern, setters/getters.
I think they could let users create multiline functions with the => operator (currently only one line). :)
I tried to pub my code, but it did not work for some reasons. I haven't tried since then so I don't know what kind of js it generates.
munificent|11 years ago
lmkg|11 years ago
In my line of work (web analytics), I have to use third-party JavaScript libraries in order to integrate tools onto my page, like Adobe Analytics (formerly Omniture SiteCatalyst) or IBM CoreMetrics or WebTrends. Fully instrumenting a page generally involves wiring up other JavaScript on the page with event handlers for web analytics functions (e.g. video play/pause/progress, with video name & length as parameters).
Most analytics tools are also moving towards asychronously-loaded script-injection techniques, like Adobe DTM or Ensighten. These usually include the ability to selectively load relevant libraries, like only having video tracking on video pages.
What's Dart's story for interacting with tools like that?
coldtea|11 years ago
1) Properly package and add "batteries" for a server side version of Dart. Pay some team to write a proper and complete Rails/Django or at least Flask level framework -- and document it.
2) Make a Google version of node.js using Dart instead of v8.
3) Even better, merge (1) and (2) for a serve side framework with both good syncrhonous (e.g Django like) and async (e.g Node like) story.
4) Support Dart as a first tier development language for Android.
_random_|11 years ago
I really like Dart. Google is pretty much the only company trying to break the tyranny of JS in browsers.
(e.g. Microsoft clearly said that they are betting on C# and .NET as their main offering for everything - would be nice if Google was capable of this sort of direct messages)
macspoofing|11 years ago
Dart on Android?
Will the Dart IDE look correctly on Windows 8 high-dpi devices? (I know that's partially an Eclipse problem)
In fact, what is the future of Dart? Is it just a complement to browser-based JavaScript?
_glass|11 years ago
[1] More than https://code.google.com/p/dart/wiki/Android
alptrv|11 years ago
rezistik|11 years ago
I really want to use AngularDart for the front end of an application I am using and I would like to use Rails for the back end as well as some static content. I can't seem to find an easy way to make that happen. In addition, how does Dart interact with existing JavaScript libraries?
gozzoo|11 years ago
lukasm|11 years ago
I'd like to Dart to happen. What worries my is that Dart has Java EE mentality. Hipster programmers won't touch it and lack of traction may kill the project. What's the solution? Performance may be a great USP. Rewrite Gmail in Dart, so tools like Streak, Rapportive and other extensions won't kill the performance.
crncosta|11 years ago
msoad|11 years ago
1. One big issue with JavaScript applications is that they are single threaded. Does Dart/Web Component platform provide any solution to this?
2. Will we see another UI rendering layer other than DOM for Dart?
mmozeiko|11 years ago
pohl|11 years ago
If I'm using GWT, should I be thinking about using Dart instead?
derengel|11 years ago
bluepill|11 years ago
leccine|11 years ago
Thank you.
ben336|11 years ago
adrianlmm|11 years ago
1.- It is better than JavaScript, is like using C# with a litle mix of Java.
2.- It comes with its own libraries, no more underscore.js or other patch libraries that JS needs, it is already in the toolkit.
3.- It comes with the Dart Editor, where you can debug your code easily, for scalable projects I find this to be invaluable.
4.- It will run in all your browsers, because it will export your code to JavaScript, but not only export it, it will optimize it and will run really fast.
5.- The pub library, go to pub.dartlang.org and you will find lots of packages that you can install and use, like a bootjack, a bootstrap port in Dart.
There are prolly many more, but these are the ones that come to my head right now.
But it also has its own problems like:
1.- No Dart support for Chrome yet and we don't know if there will ever be at this point.
2.- The generated JavaScript will be huge, and I mean huge, mine is like 460k per file and I'm not using polymer, when I used polymer the generated JavaScript was over one megabyte, just insane in the cloud.
3.- Get use to regressions, with every point update I've have issues, I upgraded from 1.4 to 1.5 two days ago, now my code is broken It runs, but it will for example run futures twice, So I went back to 1.4 for now, I had some other issues with UTF when migrating from 1.3 to 1.4 so, get use to.
4.- They are slow fixing bugs, looks like polymer and speed are their priorities, but when you need something trivial that other languajes have had for years and you report a bug it will get ignored, I've waited for 18 months and my open bugs are not fixed yet.
I would say that Dart is nice and you should give it a chance.
smizell|11 years ago
[1] https://www.blossom.io/ [2] http://www.ramen.io/post/46936028144/we-are-switching-to-dar...
amartya916|11 years ago
mda|11 years ago
msie|11 years ago
mda|11 years ago
Oilpan project: https://docs.google.com/presentation/d/1YtfurcyKFS0hxPOnC3U6...
You can track Darts's performance here: https://www.dartlang.org/performance/
rwallace|11 years ago
higherpurpose|11 years ago
And now they're putting Android inside ChromeOS, too, just because they don't want to admit Android itself would work better on notebooks (given the right interface) than ChromeOS.
comex|11 years ago
stesch|11 years ago
jmesserly|11 years ago
kasperset|11 years ago
spankalee|11 years ago
Personally, I wouldn't worry too much about JavaScript frameworks evolving rapidly, just go with anything the supports Web Components. In JavaScript that would be Polymer, X-Tags or Bosonic. In Dart that's Polymer. Or, in either you can write directly to the platform APIs without a library.
In my mind there is BWC and AWC: Before Web Components and After Web Components. The world or web apps is undergoing a paradigm shift on par with AJAX right now, and I wouldn't use any framework that doesn't support Web Components.
laughfactory|11 years ago
Rapzid|11 years ago
shakethemonkey|11 years ago
[1] https://www.dartlang.org/samples/
sethladd|11 years ago
caycep|11 years ago
josteink|11 years ago
Dart is Google's me-too attempt at creating something which compiles to JavaScript. It borrows heavily from java and generates equally bloated code.
OK, so maybe last sentence is a bit over the top critical, but last I checked, hello world in dart rendered in at 100kb [1] of js and dependencies.
[1] http://lostechies.com/jimmybogard/2011/10/12/the-dart-hello-...
pohl|11 years ago
arscan|11 years ago
http://en.wikipedia.org/wiki/TypeScript
carlosdp|11 years ago
phn|11 years ago
unknown|11 years ago
[deleted]
unknown|11 years ago
[deleted]
gress|11 years ago
munificent|11 years ago
dannyr|11 years ago
sethladd|11 years ago
[disclaimer: I work for the Dart team, and I'm a coauthor of that book.]
bluepill|11 years ago
pm90|11 years ago
munificent|11 years ago
CoffeeScript says that the main problems with JS are the inelegant C-style syntax and a few semantic trip wires. It addresses those while still keeping the underlying semantics, APIs and ecosystem.
If what drives you up the wall about JS is stuff like the DOM, or JS's object model, CoffeeScript won't help you much. If you are OK with how JS behaves and like the very large JS ecosystem, CoffeeScript can be a nice fit.
Dart takes a much larger semantic step away from JS. Syntactically, it's more similar to JS than CoffeeScript is. It sticks with braces and statements, and the whole C kit and kaboodle.
However, semantically, it's much different. It has a full-featured class system with inheritance, mixins, getters, setters, operator overloading, etc. It has a static type system so you get the nice tooling experience you expect from a language like Java or C#. It also completely revamps the DOM APIs to (hopefully) be more rational, modern and consistent.
The cost, though, is that interacting with the existing JavaScript world is a little more difficult. You can interop, of course, but it isn't as seamless as CoffeeScript.
WorldWideWayne|11 years ago
Plus, they seem to want to use web tech to build native desktop tools all the time and little things like "keyboard acceleration" don't seem to matter to them because there are no standards for that in web-world.
mythz|11 years ago
Even the #1 feature for VS.NET is to continue developing very popular XNA framework: http://visualstudio.uservoice.com/forums/121579-visual-studi...
Likewise on the server side there's been history of deprecated frameworks a lot of developers have invested a lot of energy into learning, e.g: .asmx, CSF, WCF, WCF/REST, WSE, WCF DataServices, RIA
Whilst VisualStudio is a great IDE, I find it a subpar experience without R#. The major advantages Dart has over C# is that it still provides an enjoyable experience to develop even without an IDE which also includes support for the most popular text editors: https://www.dartlang.org/tools/ If you like IDE and tooling support, the DartEditor offers a good experience with built-in analyzer, debugging and refactoring support you can expect from a well engineered language.
By contrast, C#'s configuration model, msbuild project format, heavy frameworks and tooling makes it unfeasible to develop without an IDE.
The other major advantage Dart has is that it compiles down to JS where even the compiler is completely self-hosting and runs inside a browser without plugins: http://try.dartlang.org/ Being able to share the same code on client and server and having a single integrated development full-stack experience is a huge win in re-usability and utility.
Another killer feature is that the language and tooling is cross-platform which supports Windows, OSX and Linux. Something .NET devs often miss out on is the value and utility of being able to host apps on cost-effective Linux servers.
Google continues to invest a tonne of resources in Dart and Polymer which are massive undertakings that are providing a much simplified and consistent experience for developing large, complex web apps. Nothing like Dart or Polymer exists. Dart is a platform that transpiles to JS, includes a native Dart VM, an entire toolchain including IDE, analyzer and debugger both in Dart Editor as well as in Chrome, in both the Dart VM as well as debugging with Source maps.
The worlds best VM engineers work on the Dart VM, i.e. the same pedigree responsible for the StrongTalk VM that was later acquired by Sun to form the basis of the world-class Java Hotspot VM that later went on to develop V8, are now leading the development on the Dart VM.
The excellence shows itself in the consistency and minimalism goals in the language, providing a productive, iterative dynamic language experience for fast prototyping with the benefit of static analysis with optional typing when scaling up to a maintainable, well-documented code-base (best of both worlds).
Not only is Dart a productive dynamic language, it also has excellent performance, the best performance of all languages I benchmarked with a port of Peter Norvig's Sudoku solver: https://github.com/dartist/sudoku_solver#benchmarks