|
|
|
|
|
by moonchrome
1528 days ago
|
|
Have you actually used Dart on a non-trivial project ? It's boilerplate hell and spaghetti code generator nightmare that works around the nonexistent reflection system and closed object model. If you look at libraries like built_value and built_collection and think that's beautiful when comparing it with Clojure than I'm sorry but you just don't know what you're talking about. Even the authors of these libraries (AFAIK from the Dart team) acknowledge the design decisions they had to make are a result of language limitations. IMO it's literally the worst of Java and JavaScript - off the top of my head I've had several cases where I would get runtime exceptions about a type mismatch in a ternary expression that wasn't caught by type-checker, JS style. Type system was very weak in general. And the ammount of boilerplate and code generators I had to work with brought me back to Java 6 days. TypeScript is miles ahead of Dart in terms of expressiveness and productivity, even when built on a pile of shit that is JS. Flutter is an interesting project (the asynchronous IPC rendering architecture has some major drawbacks when interoperating with native components), but Dart is hands down the reason I wouldn't touch it in the future unless the team spends some serious effort on language ergonomics. A decent implementation of Clojure + Flutter would change that equation for me considerably and Clojure would be a really good fit for Flutter. |
|
As mentioned elsewhere in this thread it clearly DOES do well at exceptional scale given that the majority of Google’s revenue is all run through Dart. It’s also a really critical part of the new operating system they are currently spending stupid amounts of money building.
It’s funny that you mention TypeScript because for me every time I touch it I wish it was Dart for a million different reasons.
Not sure when the last time you used Dart but some of the things you mentioned gave me the impression it was either a while ago or you were doing some very specific stuff with it. I absolutely do not associate Dart with large amounts of boilerplate and especially not compared to a language like Java.
The package you mentioned built_value was just a clone of auto value in Java and similar to how the language made auto value no longer needed the same is happening in Dart this year as they are bringing in the concept of static metaprogramming to remove the limitations that lead to its initial existence.
I actually think of it as having the best language ergonomics of any C style language I’ve ever seen.
Guess we value different things…