Rant time? Rant time.
FeepingCreature
feepingcreature at gmail.com
Mon Sep 21 10:55:22 UTC 2020
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
More information about the Digitalmars-d
mailing list