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

Chris wendlec at tcd.ie
Fri Nov 23 12:59:26 UTC 2018


On Friday, 23 November 2018 at 10:25:57 UTC, Joakim wrote:


>
> You would expect that from a language coming out of a tools 
> provider. I thought it was interesting how he mentioned that 
> one of the main reasons he didn't want meta-programming in 
> Kotlin is because it's extremely hard for an IDE like theirs to 
> deal with.

> That's potentially one of the big advantages of D's 
> string-based mixin approach: the IDE can tell the compiler to 
> dump them to files and then just treat them as regular D 
> source, though I don't know that anybody is doing that yet.

>
> It's probably D's biggest differentiator, the one feature that 
> people always say blows their mind when they use D, both from 
> its power and relative ease of use. Of course, it's not for 
> everyone, just like lisp macros, so I asked you what you 
> thought, without saying "Kotlin sucks" or whatever.

No, in fairness, you didn't say Kotlin sucks. To be honest 
meta-programming is really hard for the compiler and the D user. 
And when you look back at the code after all the headache you 
wonder was it really worth it. Also, an IDE / compiler that 
immediately tells you what's wrong is _very_ handy.


>
> This is a common theme in open source: OSS devs are often much 
> more interested in trying their hand at writing some whizbang 
> tech, which they may not get to do at their day job, than 
> fixing bugs and taking out the trash. Another is that they 
> simply write a clone of some expensive proprietary software 
> that only has some strict subset of its features, say Linus 
> writing the linux kernel because he wanted to run UNIX on his 
> home desktop.
>
> Neither are conducive to production, stable environments: it 
> took many companies coming in and polishing up the linux kernel 
> or LLVM before they became core components at many companies 
> today. The same will have to be done for D.
>

Exactly, so what is the D Foundation waiting for? D is 18 years 
old.

>
> Why hasn't ruby/rails, Rust, or Nim gotten backing from big 
> players yet? Most things don't get backing from big players, 
> especially initially. What you hope is to create a superior 
> tool that helps small companies grow into the big players 
> someday.

D could be a superior tool. But D is drinking all its money.

>
> I agree that D has had perhaps too much of an emphasis on 
> breaking new ground rather than the boring nuts-and-bolts of 
> adding new platforms and bug-fixing. Now that multiple 
> multi-million-valued and several small companies are built on 
> D, let's hope they get together and make a push with the 
> community in that direction, as Nicholas indicates.

It's 2018. The IT world has realized that you need to be 
compatible. And it has to be as easy and smooth as possible.

> In the meantime, you are a commercial user of D, one who has 
> always been _extremely_ positive about the language over the 
> years in these forums. What changed your mind recently?
>
> I'm asking for specifics: bugs not fixed or concrete incidents 
> that indicate the wrong mindset. We can all wave our hands in 
> the air over perceived generalities, but nothing can change 
> without specifics.

Thanks for asking. It's little things and big things that 
happened over the years. I think what really made me go "Hm" was 
https://issues.dlang.org/show_bug.cgi?id=16739 and that it took 
so long to fix it. I was starting to write a new text parser and 
came across this stupid bug. Then there was the whole issue of 
string handling and autodecode and the way the leadership / big 
guys in the community dealt with it. I was of the opinion that 
such an essential issue had to be fixed immediately (of course 
with a proper path to fix it). I even offered to be the guinea 
pig and document the transition. But no.

Then there were the dreaded dmd updates. "Shit, what will break 
now?" this question would be my constant companion. Sometimes 
nothing, sometimes quite a few things. How would fixing it affect 
my code? Yes, I updated my code, but...Once my code broke and I 
was told to use the `-allinst` flag (Why? It had worked before!), 
then a few releases later my code broke completely again and on a 
whim I removed the -allinst flag and it compiled again. Just 
don't ask why! It's Ahhhrrrrrrrr! The thing is, in D normal 
features break, not the experimental ones. Ordinary idiomatic D 
code just breaks and then works again and breaks again. WT*?

And, being a vibe.d user, the compiler would spit out loads of 
warnings related to vibe.d or just break it. I would have to wait 
for poor Sönke to fix it, but in the meantime there would be a 
new dmd version and again...poor Sönke. You can put up with this 
for a while until you realize that it need not be this way.

Then there was the whole issue of ARM. Walter said he had no 
experience with it and kinda didn't care either, while everything 
was going in the direction of mobile (talking about priorities 
and signs of the time)! If it wasn't for you we'd have nothing, 
zero, nada. 5 years ago I raised the question. 5 years. D is 18 
years old.

What makes my blood boil is when I see lengthy discussions about 
semi-demented constructors and how they are soooo useful and then 
they forgot the semi-demented deconstructor and it wouldn't work 
anyway, because it would break some sh*it and conflict with the 
PR for the new loco-allocator library...and the guys don't even 
have a new XML parser you can safely use...but who needs XML, it 
suck anyway...ah, no lads, it's just crazy.

And the advent of the D Foundation didn't help either. Quite the 
opposite.

All I know is that I got things working fast in other languages 
(even if they don't have semi-demented constructors), I'm more 
productive than in D,...and I don't need to be afraid of the 
compiler...afraid of the compiler!



More information about the Digitalmars-d mailing list