Hacker News new | ask | show | jobs
by VHRanger 1663 days ago
Yes, I just wished more people liked D so it got momentum.
4 comments

I first learned C++ 20+ years ago. While I've appreciated it, I also knew its shortcomings and had been looking for a replacement.

D had some missteps along the way that lost some initial traction. I also wouldn't be surprised if timing was a factor with more C++ warts being added while the programming community has learned more lessons along the way that could be applied to the next languages (Go, Rust).

As I followed D, the problems I remember there being were:

- Compiler availability (DMD vs GCC)

- Split stdlib

- It was aiming for C/C++ post-Java but covered more Java use case (GC) than the remaining C/C++ ones (no-GC). It took a while before BetterC. No idea how well that ecosystem has matured.

- It felt like they were shoehorning every feature into the language rather than having a cohesive design strategy

These have slowly been resolving but Rust is now here, targets most of BetterC's use cases by default, and the borrow checker has let me squeeze out performance out of my code that would have been irresponsible without the compiler making it maintainable.

> - Compiler availability (DMD vs GCC)

> - Split stdlib

Oh, yes, even as a complete outsider who merely reads D related threads from time to time, I remember these coming up repeatedly years ago. Both on HN and the programming side of reddit, among the top comments on D related threads. The tone was one of these being showstopper issues too.

To be clear, I have no experience with D myself - the point is just about the PR side of things and how things seemed to an outsider.

They come up now still, in part because people read old hackernews threads and don't actually read our docs or other information i.e. the standard library issue (Tango vs. Phobos) has been resolved for 10 years.
My point isn't that this is still a problem but that this was one of the blockers when I was originally looking at D and it was never clear from an outsider when it was resolved (I've assumed it was resolved at this point, more speaking 5-10 years ago).
Ironically as someone who wishes D distanced itself from C++ more, my feeling is that D is catering too much to the C++ programmers and not catering to the "Java programmers" enough. There is a lot of effort going into not only binding to C/C++ libraries, but also C/C++ interop, which appeals to a small group of users who potentially want to migrate a C++ project into D incrementally.
> shoehorning

That happens to all languages over time. The more interesting thing is how well do those features fit in with the language's style.

D was still fairly young when I was looking at the feature list [0]. The impression I walked away from it with is "Hey, this thing in boost is cool, let's bake it into the language".

[0] https://web.archive.org/web/20110320130326/http://www.digita...

the "Split stdlib" thing is about 15 years out of date (and only applied to D1, whose final release was in 2012).

I wish that criticism would go away.

My post was about why D had a hard time gaining initial traction. I also brought up DMD vs GCC and I assume that was also resolved years ago.
That's never been a "vs", both work very well.
I wanted to like D because I respect Walter a lot, and D's community probably has by far the highest SNR of any community I've visited... seriously smart people.

But the language just wasn't for me. Right off the bat, the default import style which thrusts everything exported into the default namespace like C seems odd at this point. Apparently one can use what are called static imports, but as a code reader I can't enforce it.

It feels a lot like a language for C(++) folks, who IMO tend to be more conservative and entrenched.

Given the initial paragraph, maybe I'm just not smart enough to grok it :).

The SNR point is well taken. It's probably why I find less popular languages to be more enjoyable. Practically anything Python or Javascript related is flooded with too much entry-level commentary and Medium articles (yick). Languages such as D, AWK, Prolog, etc etc attract those who have broken that threshold, generally many years ago.
D programmers have also been in high demand in the industry, because D programmers tend to not need social proof, and tend to be self-educated and self-starters.
Walter, what do you mean by social proof in this context? Wondering if you have a brief example?
Social proof is buying a Ford car because your friends and family all drive Fords.

The old phrase "nobody ever got fired for buying IBM" is another one (though nobody has said that since 1990).

Majority of pro D developers are there by word of mouth / hiring "weird" smart people.
Wow, and someone else just yesterday was giving D credit for not thrusting everything into the global name space like C does!

Yes, two different D modules can declare the same name as public, and they will not conflict with each other.

Apologies if I misworded what it's doing.

It wasn't about name clashing, but readability. It's not clear at first glance what functions belong to which imports.

As an example: https://tour.dlang.org/

Three imports and what appear to be four unqualified functions from them.

I'm sorry you don't like it, but that's a feature! But if there are identical names from two different imports, the compiler will demand that you qualify them.

Or just use static import.

With all respect for all the work you've done in C++ and D but imo that is a mistake. This is one of the reasons I have a distaste for languages like C# and Ruby and prefer languages like Python and Rust. I've had a hard time following what is happening in other people's Ruby code because of this behavior. Whether items are imported from a module should be left up to the developer and not done on their behalf.
> Whether items are imported from a module should be left up to the developer and not done on their behalf.

Well, the developer wrote `import thing;` instead of either `static import thing;` or `import thing : specific, list;` so it was their decision.

What language are you used to that doesn't do this? I think I would go nuts if I had to always use the fully qualified name for all symbols.
D doesn't have evangelists or a marketing team. It's just people who find it really useful.
Still wondering why don't people like D more after all these years it's been there.
Probabaly lack of killer application.

If you released super popular whatever (game engine, embedded platform, 3d design software) that uses D as its customization language suddenly a lot more people would have a good reason to learn D.

The largest-scale usage of D that I have personally seen is a AAA game studio who had an in-house 3D-engine in C++, and chose to write plugins and game logic in D because of easy integration and hot-swappability. AFAIK worked out well for them.
Which is amusing because the compatibility means a lot of customization would just be written in C.