It is the year 2020: why should I use / learn D?

Chris wendlec at tcd.ie
Wed Nov 21 14:38:07 UTC 2018


On Wednesday, 21 November 2018 at 13:26:34 UTC, Joakim wrote:

> What did you think about this bit?
>
> "There's one thing that we don't really have and I don't really 
> want it in the language: it's meta-programming... instead we 
> had a very good experience doing compiler plugins."
> https://www.youtube.com/watch?v=PsaFVLr8t4E?t=2126
>
> Also, no "first-class immutability."

I watched the whole keynote. Well, to begin with it's still a 
very young language (not 18+ years old) and keeps getting better 
and better. Things that were a bit tricky just recently are now 
much easier and part and parcel of the language. It shows that 
they listen to their user base and make things as easy as 
possible. In many ways it's already miles ahead of D in terms of 
what you need as a programmer to get things done fast, e.g. 
tooling, interop, multi-platform, handling of deprecations etc. 
There are useful features (I already knew from D) that make life 
easier (e.g. lambdas).

And as for meta-programming (I knew this would come up ;)), I 
don't really miss it / use it anymore. There was only one case 
where I said it would have been nice, but it wasn't _really_ 
necessary (it was just an old D habit, really). In fact, 
meta-programming in D can cause a lot of unnecessary headaches 
(cryptic compiler warnings galore, code breakage) and stall the 
whole development process unnecessarily - and often for very 
little extra value. It says a lot that Adam D. Ruppe stated that 
if you don't want your code to break, use non-idiomatic D. So 
what's the point of it then? It's just absurd.

D could have been a real contender here (e.g. C interop) but 
instead of investing in a good infrastructure / tooling, cleaning 
up and stabilizing the language, the community has turned D into 
a "feature laboratory" where ideas are discussed to death and 
really important issues are swept under the rug. Other new 
languages focus on tooling and interop from the very beginning as 
they realize that this is very important these days, more so than 
fancy features (that can be added later).

Then, of course, the inevitable "X doesn't have feature Y, but D 
does! That's why X sucks." Only: are all these super features 
indispensable for production? Why hasn't D got backing from big 
players yet? Because of the community's elitist and parochial 
mindset and the overall lack of consistency.

Joakim, you have done some great work as regards Android / iOS 
and I believe we are on the same page here. But see that the D 
Foundation didn't pick up on it and say "Let's take this and 
create some sound tooling for ARM cross-compilation." If it's not 
about fancy super-sophisticated allocators, contributors are 
completely on their own. This is no way to treat people who make 
an effort.




More information about the Digitalmars-d mailing list