3 ms·
So 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
by xxgreg 8y ago
So 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.
- xxgreg 8y agoWell for the mainstream VMs: Hotswap on the JVM is very limited, likewise with edit and continue on the CLR. Xamarin has live XAML updates, only for markup though. V8 is better at hot reloading, but then suffers on the performance front, since it's basically impossible to do efficient AOT for it. So which languages/platforms do you mean?
- pjmlp 8y agoEiffel would be such an example, from the list I have listed. Regarding JVM, hotswap is only limited if you constrain yourself to the OpenJDK basic features. As we in the Java community are well aware, that are other options out there, like HotswapAgent and JRebel for example. Commits adding Fuchsia support for ART started to land on AOSP, so lets see how much love Flutter/Dart will actually get from Google internal politics.
- xxgreg 8y agoHaven't used Eiffel. Seems to compile to C and CIL, also GPL and likely even less popular than Dart. Jrebel dicontinued android support. Does hotswapagent support android? Cool watching Fuchsia evolve. It will definitely support Android apps, otherwise google throws away their playstore monopoly.
- pjmlp 8y agoEiffel uses its own VM for interactive development, and compilation to native code via system C and C++ compilers. CIL and Java support is just a kind of integration support, the MELT VM is what matters. Eiffel is a commercial language, with a GPL based license for open source projects. It is also used in enterprise production code since the mid-90's, definitely more battle tested than Dart will ever be, which lets be honest it is struggling for survival.
- xxgreg 8y agoBack to where this started: "is there any feature of Dart that is required by Flutter?" This is me paraphrasing why the Flutter team think Dart is a good fit: It's a familiar language for developers who have written JS, Java, C#, or C++. It has types to allow working on large codebases, and efficient AOT compilation. It has tooling for popular IDEs. Does subsecond hot-reload on iOS and Android (also more than just method bodies). It's performance, even on iOS dev mode is sufficient to do all of the layout and widget code. It's open source under liberal license which allows you to embed it your app. Your claim: "There are plenty of programming languages that offer these applicabilities." I don't think this is true. Even if you want to count Eiffel that's one, not plenty. Nor could Eiffel have been used for Flutter since the GPL means you can't embed the VM in your app. Nor is it particular familiar for developers of existing mainstream languages. Anyways, I agree that there's nothing "special snowflakey" about any of this technology, but no-one else, that I'm aware of, is shipping a language and toolchain that ticks all of these boxes at the moment. Hopefully someone will build this stuff for other popular stacks too. (I am also aware of Eiffel. I remember hearing about it at uni back in the mid-90s when discussing CBD. I think it may be older than mid-90s too. I also don't think it would have been a very good choice for Flutter.) Also what's with this whole "Dart struggling for survival" meme of yours. It comes off as kinda unhinged. Feel free to ignore the language. And people who like using it can happily ignore you.
- ptx 8y ago> Hotswap on the JVM is very limited It mystifies me why this has not been integrated into Sun's/Oracle's JVM and OpenJDK, since it's been available in other JVM implementations for a long time and is so obviously a hugely useful feature – with the agonizingly slow startup of Java applications you really need code reloading at runtime. Anyway, the Android VM (ART) has Instant Run nowadays. It also doesn't support hot-swapping anything more than method implementations without restarting, but restarting on Android is not as painful as on the regular JVM. https://developer.android.com/studio/run/#instant-run https://developer.android.com/studio/run/#instant-run
- xxgreg 8y agoHopefully Flutter's popularity will bump the priorities of the other VM developers to improve code reloading.