4 ms·
It makes me sad that neither Nim nor D didn't take off. Expressive language with native compilation and automatic memory handling is the way to go for me. C# an
by wolvesechoes 1y ago
It makes me sad that neither Nim nor D didn't take off. Expressive language with native compilation and automatic memory handling is the way to go for me. C# and Java native AOT options are still somewhat limited, and the last thing one can say about Go is that it is expressive.
- brabel 1y agoYou may want to look into OCaml and Dart. Both are highly expressive, have automatic memory handling, native compilation and excellent performance. I like D, but it's a bit of a mess at the moment with the DIP-1000 (Rust-inspired stuff for memory management) half-baked changes, the new experimental allocators (probably coming from Zig), it keeps breaking (on MacOS at least). With the very advanced metaprogramming, it also suffers from lack of good tooling, just like Nim... Nim was going to "solve" that a few years ago, but as far as I can see from the outside, nothing really "shipped" recently to improve the situation. Without good tooling, I am quite sure I am more productive even in Rust (and I am no expert on it), let alone OCaml (tooling is decent, and the language is just really powerful) and Dart (which has absolutely awesome tooling), for example.
- patates 1y agoDoes anyone use Dart in a productive setting outside Flutter? AFAICT (from outside), they even let go of AngularDart and focus solely on Flutter - something which I avoid because of the a11y problems it brings.
- brabel 1y agoYes, it's not very popular but there's lots of good alternatives now for, for example, CLI and Server backends. Some very good frameworks/service to look at for backend development: * Serverpod - https://serverpod.dev/ https://serverpod.dev/ * DartFrog - https://dart-frog.dev/ https://dart-frog.dev/ * DartStream - https://dartstream-prod.frb.io/ https://dartstream-prod.frb.io/ * Appwrite - https://appwrite.io/docs/quick-starts/dart https://appwrite.io/docs/quick-starts/dart It's just a really good language to work on, try the tooling and you'll see it for yourself (either with Flutter or just Dart): https://dart.dev/tools https://dart.dev/tools
- wolvesechoes 1y ago> excellent performance. I wanted to check those languages at some point, didn't have time, but I doubt they offer a performance for the stuff I am doing. It is also another reason I discard Java and Go (C# seems slightly better than those). I deal primarily with scientific/engineering calculations, mostly ODE simulations, so I have some demands regarding performance. Python is of course important, but not for the core production code. Fortran is nice for math stuff, but not much else. C/C++ are as performant as awful. Rust is viable, has nice tooling and ecosystem, but introduces too much hassle that is not that important in my domain. Julia has nice ideas, but poor execution, low quality tooling, AOT delegated to some package that may or may not work with your code etc. I played with D and it strikes a nice balance. With LDC and careful allocation strategies it can be as performant as Rust, with DMD it compiles much faster, and outside performance-critical code parts it is more ergonomic because of GC. Tooling is decent. Because contrary to sentiment popular on this website I actually think Visual Studio is still the best IDE out there, I am glad that Visual-D exists. My main issue with D is exactly that - it didn't take off. As a consequence the knowledge-base is small, a lot of things are poorly documented etc. With Nim it is similar, but worse.
- brabel 1y agoDo you have any open source code you can share that demonstrates the kind of application you wouldn't be able to get the desired performance in Go/OCaml/Dart? I ask because I've seen Dart beat Java/Go/D (very high memory throughput, no idea what Dart is doing differently but it's amazingly good at it)... but I can imagine that if you only perform numerical computation, Dart may miss optimisations that will make it slower (normally, it will be optimised to approximately the same as you'd written in C, but in some cases it can hit the "slow path" - those are getting less and less every release, and if you provide an example the Dart team would likely be happy to fix that).
- Alifatisk 1y agoD is a beast, nothing you just mention like that.
- pjmlp 1y agoWhat is so expressive about doing, type StatusCodes int const ( Success StatusCodes = iota Ongoing Done ) instead of (in Java and C#), enum StatusCodes {Success, Ongoing, Done} or if you prefer something from 1976's Pascal, type StatusCodes = (Success, Ongoing, Done)
- wolvesechoes 1y agoI have written: the last thing one can say about Go is that it is expressive
- pjmlp 1y agoI misread your sentence, sorry about that.
- runeblaze 1y agoTechnically Koka checks your box. You also get algebraic effects in the same bundle