Hacker News new | ask | show | jobs
by silisili 1663 days ago
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 :).

2 comments

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.