5 ms·
> don’t worry, it’s super easy if you’re familiar with Java, JS, Kotlin, Swift or C# Those languages are pretty different from each other. I've used 4 out of
by ken 8y ago
> don’t worry, it’s super easy if you’re familiar with Java, JS, Kotlin, Swift or C#
Those languages are pretty different from each other. I've used 4 out of 5 of them professionally, and I'd say it takes a good 6 months to get comfortable with the new syntax and idioms.
(Learning to speak a language may be super easy if you already know another one in the same family, but you still have to learn it. Easy learning is not a zero cost activity.)
JS and Swift, in particular, feel like opposites. Besides using the {} characters a lot, I can't think of much they have in common.
Programmers today frequently need to learn new languages, but why? If you believe that these languages are similar enough to be "super easy" to cross between them, then how is it the incremental value of any of these languages so great that it justifies writing a new compiler, and making millions of programmers figure it out? It's not just learning time. I've run into nasty bugs with every compiler I've ever used.
As an engineering decision, is there any feature of Dart that is required by Flutter? This looks like the software analog of the pentalobe screw. It's not technically difficult to deal with but it serves no real purpose except to be different.
- xxgreg 8y ago"is there any feature of Dart that is required by Flutter?" The Dart platform provides the following features: - Subsecond hot reload - AOT to ARM - Bytecode interpreter for debug mode on IOS - JIT for debug mode on Android - GC tuned for Flutter's build methods. (like React's render) Not aware of any other platform provides all of these features. Bolting these features on to another existing language and platform which wasn't designed with these goals would be hard.
- pjmlp 8y agoSpend some time with Common Lisp, specially the commercial versions like Allegro or LispWorks. Eiffel would be another possibility. Then there was the way Oberon was originally designed. The fact is that there is nothing special about Dart other than trying to save the language.
- ilrwbwrkhv 8y agoi dont think lisp is as popular... i actually prefer a java like language than learn prefix calls and conj
- pjmlp 8y agoSure, the point being there is nothing special about Dart. What it gets promoted as Dart special features for Flutter is also available in other languages, not only Lisp.
- kazinator 8y agoC-like languages have prefix calls; what you have to learn is that no commas are required and the opening parenthesis encloses the operator, not just the arguments. You were able to create a HN account, so I think you can handle it.
- xxgreg 8y agoSo much arm chair theorising, lol. Meanwhile someone has picked up the Dart tool chain and built a compelling framework with it. There is nothing "theoretically" special about this, but it is special in the "practical" sense that it exists, and I can use it today. I can download it, install it, and get hot-reload on Android and iOS mobile devices while coding. I can swap out code at any layer of the framework since all of the framework's layout code and widgets are implemented in the same language as used to build an app. Dart's performance characteristics and the combination of the AOT, JIT, and bytecode interpreter make this possible. I write Clojure for a living. I like the elegance of Lisps. Clojure is mostly tolerable. The thing I like most about it is loading code immediately into the REPL. I hope more of the industry moves towards live programming. (or moves back to live programming, since I guess back in the Smalltalk days it used to be mainstream.)
- pjmlp 8y agoCommercial Common Lisp compilers can also target mobile platforms, nothing theoric about it. In any case, the issue is that Dart isn't a special snowflake with some extraordinary set of AOT, JIT, and bytecode interpreter not available to any other programming language. There are plenty of programming languages that offer these applicabilities. Flutter can be equality well implemented with any of them and I believe Dart is going to bet the cause of Flutter's failure, unless Google forces it upon us, e.g. replacing Android with Fuchsia.
- Apocryphon 8y agoI suppose they're all more imperative and OO languages than not? Certainly they're more similar to each other than to Haskell or Go, for instance. As for why Flutter uses Dart, this is the canonical answer: https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf
- sebe 8y agoGoing with Dart gave flutter - complied to machine code - fast GC - stateful Hotreload, a feature of the Dart vm use in dev builds. My understanding is Dart originally started out with a vm along with a Dart-to-JavaScript compiler. The Dart team was also doing their own experiments in the iot and ios space. Flutter, at that time it was call the Sky project/experiment, looked at several languages before give dart a go. Apple only allows their JS VM on ios. The nature of flutter, creating and discard many objects per frame, required a fast GC. The hotreload feature was one the Flutter team didn't know they wanted, it was a suggestion from the Dart team. So the Dart Team was able to meet flutters needs of creating a fast GC and being able to be compiled to machine code for ios and android as well.
- thosakwe 8y agoThe Flutter team has answered this question directly in a few public pieces: https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf https://flutter.io/docs/resources/faq#why-did-flutter-choose-to-use-dart https://flutter.io/docs/resources/faq#why-did-flutter-choose... I personally already knew Dart, and had quite a bit of experience with it before I found out about Flutter, but honestly, I still don't see the language itself as _that_ much of a barrier to a platform to where it should be one of the most common criticisms of the entire framework. After all, there _do_ exist alternative mobile development frameworks/infrastructure, in the other languages that people usually bring up as alternatives to Dart (ex. Kotlin, Java, Swift, C#, JS).
- ken 8y agoThanks for replying, but I don't actually see the answer to my question here. They read like post-hoc rationalization, i.e., Given that Dart was chosen, what are some attributes of it that programmers found desirable? Several other languages offer most of these desired features. Did anyone compare the effort required to add the remaining requirements to an existing language? That's what would make it an engineering decision. Even if Dart somehow takes zero effort to learn, I'm still not convinced it was a net win.
- Apocryphon 8y agoHere's a podcast episode with Randal Schwartz on Flutter that you might find interesting, as it might shed some light as to how Flutter evolved from the Dartium project and how the Chrome team was involved. https://softwareengineeringdaily.com/2018/07/11/flutter-in-practice-with-randal-schwartz/ https://softwareengineeringdaily.com/2018/07/11/flutter-in-p... You can also skim the transcript (pgs. 3-6) Transcript here:
- christocracy 8y agoI spend most of my time with JavaScript, Obj-c and Java. It took me about 3 days to wrap my head around dart and start writing productive code.
- cturhan 8y agoI'd like to hear your opinions as well (e.g. how you manage states, what type of navigations (tab, stack, drawer) you used)
- skybrian 8y agoThe short answer is that the Flutter team wanted a language that was something like Dart, and the Dart team needed a killer app and was willing to put a lot of effort into satisfying Flutter's requirements. It's unlikely that Flutter could have gotten that level of cooperation and influence over a more successful language, back when they were getting started and nobody had heard of them yet.
- wwwigham 8y agoI got a reply here on hn awhile back with a similar question[1]. > Dart really is a big part of why the Flutter framework is as it is. Obviously you could design similar frameworks in other languages and have similar results, but there's really a very nice synergy between Dart's design and the Flutter framework, all the way down to small details like how garbage collection works in Dart vs how the framework happens to allocate objects. So the rationalization seems to be performance. [1]https://news.ycombinator.com/item?id=16476886 https://news.ycombinator.com/item?id=16476886
- marcobellinaso 8y agoYou're right, they are of course different. What I meant is that if you know any of those languages, your knowledge can be very easily mapped to Dart. I had experience with those langs before, and I was productive with Dart from day 1, it never felt like a problem to me. I'm just happy Google didn't go down the route of using JS like in RN :P