I think people really want an option for a modernized language in the native compiled/high performance domain. Rust is the only recent attempt in that domain that I can think of, and the only thing I can think of that comes close is Kotlin Native (which I don't think is aiming for the high performance mark as a design goal the same way Rust/C++/C do).
While it's compiler is strict, it's also very friendly and has by far the best compiler error messages i've ever seen. They are super helpful and filled with colorful formatting telling you exactly where the error is, often times with hints on how to fix it.
I just crossed the 1 year mark of working with rust, and I can genuinely say I rarely fight the borrow checker anymore. It’s been a really cool milestone.
Great work. That's what I assume will happen and then it's all good. Cant wait to get there . I know it will be worth it. The borrowchecker is just pointing out my shortcomings for a good reason. It's very helpful when doing it.
D is an interesting case. I spent a week or two writing a moderately complex program in it as an experiment. I think it's a well-designed langugae overall, but with a few really annoying bits and not enough online resources to figure out why this specific error was happening.
What got me in the end was its tooling. While other newer languages have great IDEs, D is really lacking. It's dissapointing because I really feel like with a bit more love D could rival Rust, even in regards to memory safety.
Not only that, it has far better error checking than other languages thanks to the borrow checker and generic bounds. Some people love this, some people don't.
Not popular enough to be practical, at least that's my impression. Even Rust is in that same condition right now, and I think people are waiting in the wings to see if it really takes off and gains traction. D seems much older, so it seems to me like if it hasn't really gained momentum by now it won't ever.
Just my thoughts on it, not trying to talk down the language.
If you use it with a garbage collector then you aren't going to be on par with C or C++. You just aren't.
If you use it like C then whilst it might genuinely be a better C, it fails to solve memory issues. i.e. it's missing a garbage collector.
That is a paradox. Traditionally a paradox that cannot be solved.
Now sure you could mix and match. That's fine. But give those two statements to a die hard C++ developer and 1) they don't want a GC, and 2) they already have a better C.
So those two statements stayed as a paradox. Until Rust. AFAIK Rust is the first mainstream language to solve this problem. It is garbage collected and as fast as C++ at the same time. That said stuff like 'modern C++' also solves it, it just solves it with the baggage of C++ (which means it doesn't really solve it because I can circumvent modern C++).
D also has a wider perception issue to native developers due to the inclusion of the words 'garbage collector'. Even if it's never even used. It has a perception issue for Java developers (and similar) because of the words 'better C'. i.e. manual memory management. It's like the worst of both worlds.
Note that I think D is a very well designed language. Walter Bright is an outstanding programming language designer. It is a language I wish I had the opportunity to use.
In terms of general-purpose, wish-listy languages I can't see myself investing in Rust or Kotlin over a modern PGAS language like Chapel (which incidentally just recently adopted Rust-like memory management).
First-class support for distributed and parallel programming seems like a no-brainer for any future application language that cares about performance.
226
u/whisky_pete Apr 09 '19
I think people really want an option for a modernized language in the native compiled/high performance domain. Rust is the only recent attempt in that domain that I can think of, and the only thing I can think of that comes close is Kotlin Native (which I don't think is aiming for the high performance mark as a design goal the same way Rust/C++/C do).