Rant time? Rant time.

Abdulhaq alynch4047 at gmail.com
Mon Sep 21 10:58:53 UTC 2020


On Monday, 21 September 2020 at 10:55:22 UTC, FeepingCreature 
wrote:
> On Monday, 21 September 2020 at 09:29:21 UTC, Tomcruisesmart 
> wrote:
>> Hi,
>> I'm looking for healthy conversation.
>> What are the prominent downsides of the D programming language?
>
> Okay, real talk.
>
> D is *incredibly* uneven.
>
> When it works well, it works great. When it breaks, it can 
> break in really horrible ways that I can't accurately describe 
> except by referencing Mickens' seminal article on systems 
> programming [1] - that is what it is like, except replace 
> pointers with templates.
>
> Parts of the language are outright broken, everyone knows 
> they're broken, this is not documented *anywhere*.
>
> Parts of the standard library are not meant to be used. There's 
> replacements that got proposed years ago and are languishing. 
> Key projects that replace Phobos are written by individuals who 
> may or may not reachable for issues. And there *will* be issues 
> - templates can't be unittested completely at the site of 
> definition, because you don't know all the cases you will 
> encounter, so you can't even predict the types of your own 
> variables sensibly.
>
> immutable is broken with a good fraction of language and 
> runtime features. shared is broken with another fraction. 
> Synchronized has a hole the size of a truck that is unfixable 
> without pulling in all of shared for no benefit. Incredibly 
> useful DIPs like formatting string literals or named parameters 
> are decided not by any kind of vote system, but by "let's see 
> if anyone says in the thread that they don't like it, and then 
> we won't do it." This leads to horrible DIPs that try to 
> placate those people, which then leads to other people 
> complaining that the DIP doesn't go far enough. There is no 
> winning there, which is why language improvements are either 
> trivial or depend on Walter deciding to just go for it.
>
> Dub is the official build manager. Dub is included with the D 
> distro. Dub has an open bug where it simply ignores the 
> selected version when you try to run a binary with dub. Look at 
> the unit-threaded prebuild line. [2] Just ... look at it. Dub 
> has 424 open bugs. Let's not talk about how many open bugs DMD 
> has.
>
> You can learn the core of D in an afternoon. You can get a good 
> understanding of D in a month. Coming from C, D really is an 
> incredible logically-designed language, and it's a joy to use. 
> That's not the bad part of learning D.
>
> The bad part is the years of picking up the problematic parts, 
> the features to avoid, and the parts that are just silently 
> broken. The bad part is the hours spent exploring "maybe I can 
> do X", getting incredibly close, then failing due to a bug 
> reported in 2012.
>
> There's a reason so many D devs run off to develop their own 
> language. D shows you what is possible with C-like languages, 
> then falls short. It ruins you for other languages, but it's 
> too frustrating to really love.
>
> Still the best language I know. At least for now, until my 
> current compiler project is off the ground...
>
> [1] https://www.usenix.org/system/files/1311_05-08_mickens.pdf
>
> [2] https://github.com/atilaneves/unit-threaded search for 
> preBuildCommands

Head, meet nail.

Nail, meet head.


More information about the Digitalmars-d mailing list