16 ms·
Why I'm joining the Dart Team
- scriptproof 11y agoUsing the same language on Android and iOS will be a huge advantage, once the framework ready to production.
- marvel_boy 11y agoAnyone can share his experiences using Dart for mobile?
- on_and_off 11y agoYou can have a look at the flutter demo app. I only tested the Android version and it is still extremely early. Very basic samples that don't run very well and implement Material elements in an uncanny valley kind of way compared to the existing web & mobiles implementations. Not to mention that Android with Java/Kotlin has a truckload of tooling that Dart would have to replace.
- mwcampbell 11y agoAnd Flutter has no support for accessibility or localization yet. I think it takes a lot of hubris to implement a new cross-platform widget set that attempts to compete with the native widgets these days.
- on_and_off 11y agoyeah, it is ambitious to say the least. There are several parts of the android framework that I would like to see rewritten from scratch (activity as a god object, love of inheritance everywhere in the framework classes, weak UI/animation framework, etc) but it is also a mature code base with tons of features, tools & open source libraries built around it.
- Brad811 11y agoI'm rooting for you guys :) I've really enjoyed working with Dart
- jug 11y agoI couldn't help reading the emphasized "types" in "optional types" as a yell for the Typescript developers to come back. But I too hope that Dart will become more successful, because let's stop beating around the bush -- it isn't now, not relatively speaking and comparing to the state of web development today. And this is unfortunatenly _not_ because web development hasn't been rapidly evolving the past few years. But enough negativity. I found this part the most interesting, because today there are already so many ways to get various non-officially sanctioned languages onto both iOS and Android: > Soon, you’ll be able to write Dart code for micro-processors (think Raspberry Pi) and — more interestingly — for micro-controllers (think Arduino). This means developing for really compact, really cheap, really low-energy devices is no longer a C/C++/asm club. Maybe Dart can at least find an unexpected niche?
- saurik 11y agoYou say "TypeScript developers to come back". Did they leave? What did they leave?
- filiph 11y agoI'm the author of the article. > I couldn't help reading the emphasized "types" in "optional types" as a yell for the Typescript developers to come back. Not sure what you mean, but I definitely didn't have TypeScript in mind. I emphasized "optional" in "optional types" in the bulletpoint where I'm talking about "getting out of your way", and "type" in the next bulletpoint where I'm talking about structure. It was meant to be cute but evidently I failed... Sorry for the confusion.
- davinchi 11y agoAnd what's the future of Go language?
- rashthedude 11y agoI'm far from being an expert in Go or know the specifics about future plans but from what I've gathered it does seem like a beautiful system language. We mainly use it for writing lightning fast API's. I do have a feeling that it will have a breakout year in 2016.
- wilsynet 11y agoA systems language is language you can use to write operating systems and drivers in. What makes Go a systems language? As far as I can tell, Go is a systems language because it has very good marketing.
- coldtea 11y agoGo is neither a systems language nor "lighting fast" (that would make C, C++, Swift and all "ridiculous speed"). And what kind of APIs would one write in Go? The kind that can only be consumed by Go programs?
- dimfeld 11y agoPresumably the post above was referring to HTTP-based services, which of course don't face issues of cross-language ABI compatibility. In this case Go is often much faster than Ruby, Python, JS, etc., while still allowing relatively quick development compared to even faster, yet lower level, languages such as C/C++.
- _pmf_ 11y agoI suppose they mean lightning fast HTTP API. The sad thing is that these people are serious about it.
- dom96 11y agoIt's interesting to hear that Dart was designed as a general-purpose language. I always assumed that Dart was kind of like Coffeescript, that it was only meant to be translated into JavaScript. I'm curious how this fits in with Go, another programming language from Google, which is also presumably a general-purpose language. Can anybody compare Go and Dart?
- oblio 11y agoDart was meant to be a general-purpose language from day 1. I think they were always working on the standalone, server VM in parallel to the Javascript translator/compiler/transpiler/whatever it's called these days.
- filiph 11y agoI see Go as a systems language and I think it was designed that way (wikipedia agrees with me here but I don't know enough about it so I'm not claiming this to be true). AFAIK it's used mostly for server / CLI stuff, where its concurrency model and speed shines.
- danieldk 11y agoI do write a lot of Go and it fits in the Oberon/Modula-2/C family. It is a general purpose language and the design of the language does not really make it a system language. In fact, one could argue that many properties that people expect of a system language (e.g. no GC) are missing. Currently, Go is indeed popular for network services and command-line tools, but I think that is due to it's standard library supporting those use-cases well. But Go will surely branch out as its ecosystem matures.
- shurcooL 11y agoIt's especially interesting because you can also compile Go to JavaScript, and Go already runs natively on iOS and Android.
- rbehrends 11y agoDart was always designed to have its own VM. Compiling to Javascript was more of a necessary evil. Google's vision with respect to Dart in the browser was to have a more powerful VM rather than persistently piggybacking on a Javascript VM (this was what Dartium was about). Even now, the current VM supports state snapshotting, isolates, and native/transparent big integers [1], neither of which you can get out of a compiler that generates Javascript, unless the Javascript backend already supports it. Compilation to Javascript is still possible and useful, but you inevitably lose some Dart VM features in the process. Ironically, Ceylon now supports a Dart backend. In short, Dart is both a language and a platform, though the language can also be used to target other platforms. [1] In general, it's pretty obvious that several of the Dart developers have a Smalltalk background.
- deleted 11y ago[deleted]
- andybak 11y agoDo Dart and Typescript hurt each other's adoption? i.e. they are close enough that it 'splits the vote' and what might result in critical mass for one ends up with both feeling like they are marginal contenders.
- phloxicon 11y agoI used Dart a while ago for a personal project. Language-wise, it has dramatically improved by 'await'. My favorite part about Dart is the standard library. I've never used a language with a better standard library. Does anyone know how Dart will be affected by web assembly?
- mraleph 11y ago> Does anyone know how Dart will be affected by web assembly? WebAssembly right now is a suitable target only for C++ like languages. There is a hope that in the future WebAssembly will introduce features enabling efficient compilation of dynamic languages, but so far it's unclear when this hope is going to materialize into something more tangible than a few entries on the road map.
- danellis 11y ago> I've never used a language with a better standard library. I found myself wishing that it would take more from Scala's example, especially the collections, where they could certainly use some more utility. I also wish they'd do more to support a more functional style of programming; little things like, say, turning `if` into an expression, which, while I don't think it would affect existing code at all (the result would just be thrown away), would allow you to assign to a constant value, avoiding undefineds altogether.
- Yuioup 11y agoI've made this comment before. I'm wondering if there are plans to replace Java with Dart or Go on the Android platform. This because of the continuing threat of lawsuits from Oracle. It's probably impossible to replace Dalvik because you need the bytcode but maybe replacing the language might shield Google from Oracle.
- _pmf_ 11y ago> I'm wondering if there are plans to replace Java with Dart or Go on the Android platform. There are very few languages choices where I prefer to keep using Java. Go and Dart are two of these. I'm a dedicated Apple skeptic, but Swift is nicer than both of these trainwrecks. If what the article claims is true (that Dart can be used to target µCs), which I highly doubt, it might become interesting for me. My doubts arise from the fact that the standard library for a language makes some opinionated design choices, and in my opinion it's impossible to make an idiomatic library that works the same (and is usable!) in a GC context (existing deployment) and a non-GC context (embedded). It's sad that of the dynamic languages, Python and Ruby are performance deadends, and LuaJIT is too obscure for most people.
- kelseydh 11y agoElixir (and the Phoenix web framework) is getting a lot of attention these days from Rubyists who are looking for something that speaks their language that is also fast in realtime distributed environments.
- rdtsc 11y ago+1 for Elixir and Erlang VM.
- coldtea 11y ago>My doubts arise from the fact that the standard library for a language makes some opinionated design choices, and in my opinion it's impossible to make an idiomatic library that works the same (and is usable!) in a GC context (existing deployment) and a non-GC context (embedded). What microcontrollers you have in mind? He mentioned Arduino in the post. It's not like we need Dart for extremely low spec-ed mCs, and we could run GC just fine in higher level mCs for ages...
- mavdi 11y agoDart is a great language. I tried it on day one and it has come a long way since then. But in my experience... every time I read an article trying to justify why something is still relevant or important in a company roadmap, it dies a lonely death a short time after.
- michaelwww 11y ago> trying to justify why something is still relevant or important in a company roadmap While I know what you mean, I didn't read the article that way at all. The author isn't a marketing type or someone high up in the company, but a programmer making a calculation about Dart and passing on his observation to his friends, who don't see that situation the way he does. Dart has received a lot of bad press because some Dart engineers made the mistake of saying it would replace JavaScript. I didn't get involved in defending JavaScript from Dart and wrote a bunch of Dart, and I noticed I was about twice as productive. I also learned along the way that Google was heavily invested in something called Google Web Toolkit, a Java based system for writing web apps. I figured Google was looking to replace that with Dart so it would always have a place, and it looks like I was right. The code that powers the engine that brings in 17 billion dollars a year is nothing to dismiss, like many do of Dart, if in fact they are converting GWT to Dart, and it sounds like they are. TypeScript is one way to add safety, Dart is another. The difference in the two approaches is discussed here by the two main authors Anders Hejlsberg and Lars Bak respectively [1]. What I found compelling about Dart was the elimination of "monkey patching" that Lars talks about. I was also drawn to try TypeScript and found it a great tool as well. So does Google as they are now using TypeScript in Angular 2.0. Microsoft and Google are working together - never thought I'd see the day. [1] https://www.youtube.com/watch?v=5AqbCQuK0gM https://www.youtube.com/watch?v=5AqbCQuK0gM
- vinceyuan 11y agoI heard Dart before, but didn't know it's created by Google until now. I am a fan of Go. I like goroutines and channels. Why does google create two new languages?
- StevePerkins 11y agoGoogle is a massive organization, and this is probably the LEAST ridiculous example of redundancy! I've lost count of the number of database systems they've developed. I don't know if they're still as committed to this today, but historically Google has been famous for allowing their engineers to spend some percentage of their time on self-directed side projects. This leads to lots of engineers working on the same sorts of things in different ways.
- danellis 11y agoSome of Google's databases are just more functionality on top of an existing one, though, rather than being created from scratch. Spanner is built on top of BigTable, and F1 is built on top of Spanner, for example.
- ChekhovHemingwa 11y agoThe comparison about commit velocity across popular languages is interesting on its own (sec 2 in the article). Here's the discussion it spawned for Scala, which surprisingly lags behind its successor Dotty in that metric: https://www.reddit.com/r/scala/comments/405zw6/commit_velocity_for_dotty_surpassing_scala_last/ https://www.reddit.com/r/scala/comments/405zw6/commit_veloci...
- voider1 11y agoWhy is Google making all these languages? I mean, they have Go, use a lot of Python, and now they're developing Dart? What they're playing at?
- edtechdev 11y agoThe main thing stopping me from using Dart is the same thing as Java and Python and others. It isn't designed to compile in the browser. You have to use the command line or an IDE. I have no problems with those myself, but the apps I am interested in involve letting end users create their own apps/animations/simulations, etc. If they went forward with a Dart VM in the browser, that would be great, but it sounds like that was one of the first things they abandoned. There are so many other languages that do compile in the browser and can be used without relying on command line tools that there's no reason to pay any attention to dart at all, even though I like everything else about dart: https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS https://github.com/jashkenas/coffeescript/wiki/List-of-langu...
- jug 11y agoYes, when Dart was still recently released I fully expected at least Chrome of all browsers to directly support it, and with it being an open source project, it to perhaps even trickle out to other browsers as well. And I saw a Dart-powered web, and it was beautiful. Calling it a Javascript killer is a misnomer, because it's a Javascript eviscerator. Now Typescript is here in full force and I honestly think that, assuming the language isn't going to be browser supported, that this is a better idea. :/ Simply because TS is a superscript over JS, so developers can migrate their projects over time. Regardless how much of it is still in JS, that is per definition also TS. I think that is a huge boon, along with Typescript definition files to TS:ify libraries without having to restort to what the Dart guys seem to have been forced into doing with full reimplementations (DQuery, Bootjack, ... rather than simply downloading the appropriate files from DefinitelyTyped.org). It's too bad, because _conceptually_ I like Dart more! Everything is so coherent regardless if it's on the client or the server, and modern HTML5 features are suddenly just libraries in the language itself! I really like it, I don't even have to "want" to like it, I already do. Kind of annoying. :P
- rashkov 11y agoI'm not sure what distinction you're making between Dart and languages that "compile in the browser". You linked to Jeremy Ashkenas' list of languages which compile to Javascript, yet that list includes Java, Python, and even Dart Edit: Are you referring to languages that you can compile to Javascript by including a script in the HTML? I remember doing this with React, before I set up a build tool to my project. If that's what you're referring to, I'm not sure it's such a huge factor. For one thing, I am not aware of any technical reasons why Dart can't do this as well. For another thing, I don't think compiling in the browser is all that popular. Most front-end developers have embraced build tools like Gulp, Grunt, and Webpack which allow compile to Javascript. Compiling in the browser is also not as performant.
- Keyframe 11y agoThat's actually nice. I had the impression, for some reason, Dart was kind of abandoned from Google or they shifted focus from it.
- droidist2 11y agoMaybe because Google is backing TypeScript and using it for Angular 2 https://jaxenter.com/google-announces-new-approach-angular-2-0-115228.html https://jaxenter.com/google-announces-new-approach-angular-2...
- Keyframe 11y agoIt's a big company. I bet they back numerous stuff around.
- munificent 11y agoI feel like I sound defensive every time I bring this up, but Angular supports three languages that are all equally first-class: JavaScript, TypeScript, and Dart[1]. Angular 2 is written in TypeScript because that felt that was the best source language to transpile from. But then they have transpile that to JS and Dart for users of those languages. [1]: https://angular.io/docs/dart/latest/index.html https://angular.io/docs/dart/latest/index.html
- droidist2 11y agoInteresting, thanks for the info.
- lassejansen 11y agoI tried Dart when looking for a typed language that compiles to Javascript. It was nice but in the end I used haxe because it had a much smaller footprint. Dart seems to include its own library while haxe sticks close to what Javascript offers.
- danellis 11y agoWhen was that? Dart started out generating massive JavaScript files, but the output has been significantly reduced in the past couple of years (something to do with using transformers to replace some of the reflection at transpilation time, I think).
- lassejansen 11y agoAbout half a year ago. It turned 1500 lines of Dart into ~10000 lines of Javascript. That might not be that much to handle for a webview but it was quite hard to debug. I used it as a UserScript in WKWebView so I couldn't use DartEditor. In comparison, the haxe code, which looked very similar to the Dart code, was compiled into 1400 lines of pretty readable Javascript.
- shadowmint 11y agoOne of the things that Rust (GC free zero cost memory management), Swift (the official iOS programming language with excellent UI libraries) and Blueprint (easy coding for non-coders in UE4) have made crystal clear to me is that, if you choose to create a new programming language rather than using an existing one, you need to actually decide what the draw card you have is, over other existing solutions, and stick to it. Dart has consistently failed to be anything more interesting than slightly better javascript that interops poorly with existing the existing javascript ecosystem. That is not a draw card. Now, it seems to be trying to be 'a generally useful programming language you can use on multiple platforms'. That's not a draw card. Just stop! Please actually focus on making Dart something special, or give up on it. There's this thing, where you make something and you get invested in it, and it becomes to politically complicated to throw away. I have no technical objections to Dart, it's a fairly nice language; but I too, cannot come up with any reason to either use it, or be excited about the future of it.
- matthewrudy 11y agoI think it's interesting that the author says: "I’m betting my career on it" Careers in software are (hopefully) long and varied. Committing to work for a few years on one particular technology should not make or break your career. As long as we're always learning and sharing our knowledge and skills, we should all be better off. Regardless of whether Dart ever hits the mainstream.
- incepted 11y ago> I think it's interesting that the author says: "I’m betting my career on it" Yes, the author is probably a bit junior in that field. You don't bet your career on technologies, much less languages (especially beleaguered languages like Dart). You take a bet, see if it works for a few years and if it doesn't (which is the case for 99% of languages out there), you move on to something else.
- danpeddle 11y agoCross pollination of ideas from working with different languages is a very powerful thing. Coders often, sadly, regard 'their language' as a walled garden, whereas in fact there is so much crossover in terms of technique, it only makes your knowledge deeper and more solid seeing how solutions are achieved in different ways. At least, that's been my experience as an average/middling dev - there may well be some level of zen where this doesn't apply, but I'm hard pressed to think of one right now.
- josep2 11y agoAlright I'll give this a serious look.
- systems 11y agowell... packt free ebook for today happens to be a dart book Dart Cookbook https://www.packtpub.com/packt/offers/free-learning https://www.packtpub.com/packt/offers/free-learning 9 hours left from the time of this posting
- matt2000 11y agoAnyone have any experience with typescript vs. dart? I'm thinking of learning one of the two for frontend and wondered if anyone had any success or horror stories either way. Thanks!
- CuriouslyC 11y agoThe fact that typescript is a superset of javascript turns out to be huge in terms of adoption. Being able to start out writing javascript and gradually introduce typescript features (even in a well established codebase) is fantastic. The javascript output is also saner and fairly predictable, so (for me at least) it is easier to reason about.
- monyr75 11y agoI develop with both, and Dart wins hands-down. ES6/TS adds a lot of Dart's best features to JavaScript, but without getting rid of JS's annoying problems. Many here have mentioned that Dart's standard library is among the best there is, and that's no exaggeration. That alone makes it better. Whenever I have a choice, I always use Dart. The tools (analyzer, profiler, etc.) automatically make me twice as productive as when I use JS.
- sredna 11y agoExactly. In the browser (and node) it's not really a question of how Dart compares to TS / ES6 (for example), but how Dart + ease of using JS libs compares to TS / ES6 + ease of using JS libs. And of course that makes sense. TS is a language where the primary goal is seamless JS interoperability. Presumably, it will always make design tradeoffs to maintain that. Dart is a language where the primary goal is developer productivity. The team decided that it required a clean break from JS to achieve that. The tradeoff being that JS interoperability is harder. So it's not a great surprise that TS wins in the JS interoperability front. Dart has made big improvements here recently and continue to do so and I expect the gap to continue to close but never quite go away. Similarly, it's not a great surprise (to me at least) that Dart is a cleaner more productive language. As many have said ES6 has made big improvements over ES5 and coupled with TS has significantly closed the gap to Dart. I see this trend continuing. With Dart maintaining an edge in language features + productivity and TS with JS interoperability ease, but the gaps in both aspects being small enough that it is a matter of personal choice and what best fits the project.
- jondubois 11y agoI liked Dart from the beginning... It could have been a perfect replacement for JavaScript a few years ago, but now with ES6 becoming widely available in browsers and Node.js, I feel that some of the shine of Dart has been lost. I think the biggest problem with Dart isn't related to the project itself - My biggest concern is that other browser vendors didn't embrace it. Dart has not been universally accepted by all sides, despite the massive amount of publicity which it received over the years. With ES6, I think that JavaScript has proved that it can adapt to change and that it has significant staying power. I think the Dart team made all the right moves, but, unfortunately, so did the JS team. The project hasn't had much luck either. There was no breakthrough. Getting its own native VM inside Chrome would have been nice.
- mariusmg 11y ago"With ES6, I think that JavaScript has proved that it can adapt to change" JavaScript proved squat. Those changes should have been done a long time ago and now we should have had a sane language instead of JS. Betting on JS "evolving" is the wrong way to go.
- incepted 11y ago> Betting on JS "evolving" is the wrong way to go. Why? It is evolving. Slowly, but it is evolving. Enough to cast a doubt on the viability of Dart and Typescript.
- cwyers 11y agoI think Typescript is in a different boat. All valid JS is valid Typescript, and Typescript is adding new JS features faster than browsers can. If JS ever catches up to Typescript it'll be by becoming Typescript, basically.
- deleted 11y ago[deleted]
- sudhirj 11y agoThe rate at which JS evolves has been determined quite rightly by browser market share and aut0-updatability. When your clients need to upgrade their VM when your language changes, the only way to ensure progress is to make sure all your clients are running latest auto-updating versions. This is beginning to happen now, which is why the V8 and the language itself can start to make real progress.
- edderly 11y agoDo what you love. Programming languages take years to incubate and in five years time you never know what will happen. Don't believe that a virtual machine based language is going to fly in true embedded environments other than toys though. I've got more faith in lightweight scripting languages for rapid development.
- such_a_casual 11y agoIs JavaScript the only "language" you've programmed in? Personally, I prefer a language that doesn't require large frameworks and libraries that are here today, gone tomorrow for basic language constructs like name spacing or library references. Personally, I prefer not having "engines" silently fail on something as fundamental as syntax errors, causing bugs that can't be reproduced or tracked down. Want syntax checking? You guessed it! Another Framework/Library/Tool to learn or build! Not horrendus? Good Enough? JavaScript is the language of Satan's incompetent stepchild.
- krisdol 11y agoHave you ever programmed in JavaScript? I don't use any of those frameworks or transpilers and it's nice. ive written plenty of ruby, Python, Java, and C. What are you talking about with syntax checking anyway?
- such_a_casual 11y agoI'm talking about chrome's extension library returning NULL instead of a "tab" object when creating a new tab because of a syntax error in a completely different file.
- pluma 11y agoYou're judging JavaScript by Chrome's extension API?
- such_a_casual 11y agoIt had nothing to do with Chrome's extension API. The API works perfectly fine. It has to do with the nature of JavaScript where syntax errors are "forgiven" leading to unforgivable bugs that require line by line review unless you use a tool to check your syntax. This was not the first, last, or only syntax caused bug I experienced. It was simply the most frustrating and inexplicable.
- 11y ago
- rhizome 11y agoA downside of Medium is that we have no clue who "I" is: https://imgur.com/wIqpJyN https://imgur.com/wIqpJyN
- softinio 11y agoI gave Dart a try and liked it. In my opinion it has failed in being a mainstream. It was bad enough that browser vendors where not embracing its VM, but its downfall to go mainstream was in my opinion when Google themselves announced that it would not be included in Chrome. JS community are embracing ES6 and Typescript now. And for the none browser market there are definitely a lot of better choices.
- monyr75 11y agoWhat's really interesting in the comments on this thread is that almost everyone who has tried Dart reports liking or loving the experience. If all those people would push a little harder instead of caving to the status quo, we might just get wide adoption and a great experience for everyone. You know...progress.
- Matthias247 11y agoI used Dart for a project 1-2 years ago and really enjoyed it. It's a well designed language with an equally well designed standard library and already had fabulous tooling (IDE support, package manager, debugger) back then. My hopes were that it could really replace JS at some point of time, because I'm not the biggest fan of JS in the ES5 incarnation. For me it was a little bit sad to see that Dart got almost no external traction since while Go got lot's of traction. I personally think Dart is the better language in most regards. Since then I have worked on a few non-web projects and now got back to building some bigger application with node, a browser frontend and typescript. With the current revisions of typescript I don't miss much from Dart, Typescript did a great job on building a type system that fits to Javascript and the ecosystem (available libraries, etc.) is huge due to seamless interoperability (export typescript as JS libraries and import all JS as untyped typescript). Therefore for me the appeal to use Dart instead of typescript in classical web applications is much lower then some years before. For other applications the choice of languages is already more then abundant. I don't think it would have been a bad move to introduce it as an Android application language, but I don't think that will happen due to all the existing code. I'm interested to see what will happen in the microcontroller domain, but this is a very slowly evolving domain where real changes happen rarly and everybody is stuck on C despite alternatives have been available earlier. Don't see a special appeal for raspberry PI like devices - these are more like PCs then really embedded stuff. You can run nearly anything you want there.
- apo 11y agoTried Dart a while back and really liked the language. But I found the emphasis on Dart's use as an application building language didn't fit my use case very well - compiling JavaScript libraries. In short, I wanted to use Dart as a cleaner replacement for the Closure libraries and compiler. It didn't work well. Not only was the JavaScript quite large, but exposing APIs was a time-consuming manual process. I noticed the change of focus to using Dart as a language that transpiles to JavaScript for in-browser use. That sounds like what I'm looking for. When will it be possible to use Dart to conveniently create minified JavaScript libraries that expose well-defined interfaces?
- munificent 11y agoI can't give you any time estimates, but what you're asking for is exactly what the team has in mind with "DDC", the new Dart -> JS transpiler[1]. It produces much cleaner, more readable JS and is designed to make it much easier to interop with JS code in both directions. [1]: https://github.com/dart-lang/dev_compiler https://github.com/dart-lang/dev_compiler