Everyone really likes D now, How come?
medium.com
medium.com
* Does not explain why "everyone really likes D now"
* Provides no evidence that "everyone really likes D now"
* Doesn't have the title of the submission (though, to be fair, the actual title is a vaguely similar rude joke that you can probably infer).
* Does give actionable advice about how to start programming in D, if you wanted to do that.
I guess my big, unanswered question is: what does D have over all the newer and more popular compiled languages out there that seem to occupy overlapping niches, like Go, Swift, Kotlin, and Rust? Or, for that matter, the older standbys of C, C++, Java, and C#? And if that seems like a wide spread, the obvious follow-up is: where in this space does D live? It's object-oriented (like C++, Java, C#, Kotlin, and Swift) and "makes memory access available" (like C, C++, and Rust), but that's all I can tell.
I'd go further and say it provides the opposite - it shows a low and declining search trend.
The rest of it is a fairly sloppy guide on how to set up Atom for D development.
Seems to have been written just to have an excuse to make that puerile joke.
This.
Additionally, the only moment in time when D was a reasonable concept was before C++11, when the development of C++ was stalled and there were a few pain points with C++98 that justified picking up other tools.
Since then C++ started evolving and a majority of those pain points were addressed, thus leaving D without any major selling point or even purpose.
To make matters worse, with the whole industry shift to the web C+ has since seen a decline in market share. Therefore D is placed as a poor replacement for the incumbent of a market share in decline.
I don't know enough about D to dispute this, but in a backhanded way, this is a pretty damning appraisal of D. It's not just the "industry shift to the web" that has led to the decline of C++. Why do people write server-side applications in Java or Go instead of C++? Why do people write mobile apps in Objective-C, Java, or Swift instead of C++? Even in the remaining domain of desktop applications and systems code, C++ isn't necessarily the go-to choice anymore.
And so, if D doesn't offer anything over C++ that couldn't be addressed by bolting even more features onto C++, why the heck does it exist?
Many years ago while being too naïve I created a website d-something and the name was big problem, now I see why
Walter Bright, the man who designed most of the language along with Andrei Alexandrescu, are both C++ heavyweights and it shows. Template syntax using template!type instead of template<type> is a great - surface level - example of this attention to detail: Easier on the eyes and orders of magnitude easier for the compiler
If so, it would be a sign for me no to invest in D, as my experience is that easy metaprogramming leads to more abuse than goodies. I
It's really obvious, and even at it's worst it's no worse than C++ (Except much easier to debug due to D's much less fundamentalist type system).
I hate languages that deliberately take features away from the developer: This is why - although I respect the philosophy - I would never choose to use Go, for example.
But to each their own, etc.
The don't really take the features away, they move the problem to a proper templating/code generation language. These are language neutral so you don't have to learn a different one for each language, they are often more powerful too. IME the code they generate is a lot easier to deal with than templated code.
I can't think of a language whose metaprogramming features get abused worse than C++, so saying it's not worse isn't really heaping praise.
stdin. byLineCopy.array.sort!((a, b) => a >b).each!writeln;
This example is everyday code in D, but basically unthinkable in C++ (Possible but try getting it that short without writing your own library). It is also telling that the aesthetic style of the above code (UFCS) is a feature D has had for years but was rejected for inclusion into C++ despite BS backing it.
D vs rust - D is 100% more familiar to anyone with C or C++ background
I can see why Go, if you want an easy to compiled yet middle level language with good concurrency.
I can see why erlang, if you want crazy concurrency, and reliability.
I can see why rust, if you want c/c++ power, with a modern touch and a safety net.
But what is the selling point in D ? Why should I choose D over those for a particular task, and take the time and energy on this on not something else ?
I had the opposite experience. I have a long history of C and C++ development, yet I found D pretty impenetrable (my team inherited some D code to maintain). Rust, however, was easy to use out of the box.
Pattern matching is a feature of pure functional code rather than a requirement (As useful as it is, every time I touch haskell for fun I always miss the mathematical approach to coding when I then write in C-land).
Enforced purity is a feature, however. That's what I was referring to. However, ..., there is no pure-IO so it would be like Haskell before Monadic IO was figured out (I assume).
What would you choose D for ? What kind of task, project ? And why D and not the competition, given the cost of learning it ?