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