Why is D unpopular?
Joshua
jtacoma at pm.me
Tue May 10 04:16:32 UTC 2022
On Saturday, 7 May 2022 at 19:30:08 UTC, Dukc wrote:
> On Friday, 6 May 2022 at 15:27:58 UTC, Ola Fosheim Grøstad
> wrote:
>>> That doesn't mean if you have a webservice to write, that Go
>>> is the "best tool for the job". D could be very well be the
>>> "best tool for the job".
>>
>> D does not have cloud service support as I am aware of. Eco
>> system matters.
>
> It is definitely true that comparing our ecosystem side-by-side
> with Go or Rust, we lose. Even in general, let alone if
> considering only the area where Go is presumably the strongest
> at, web servers.
>
> But I argue that this does not always matter much. When you
> need a library to do something, it does not matter whether you
> have 5 or 50 good options. As Guillaume's DIID series shows,
> D's ecosystem is easily big enough for most purposes. Of
> course, most purposes != all purposes, but still. If you're
> compare the languages in something where both D and Go/Rust
> provide good libraries for, it's the language itself and it's
> standard library that make most of the difference. Not the
> ecosystem.
Yes.
I tried D a few times over the past twenty years or so, passing
on it the first time over GC performance concerns (I was a bit of
a purist) and the second time over uncertainty around D1 vs D2. I
came back to it in the past week or two for use in a hobby
project after trying many other options…
I’m so tired of jumping through hoops to combine build systems
just so I can use one neat Go library or one neat Rust library or
just build most (but not all) of mobile app in Flutter/Dart
…however, the standard libraries for these languages don’t
support UUIDs or graphemes, so I need to pull in even more
dependencies and then one hobby coder owning a small test helper
project ten layers deep in my dependency graph introduces a
subtle incompatibility that ripples through my whole build system
and I’m almost back to square one. It would be nice if choosing a
language didn’t have to mean choosing the entire build system and
ecosystem of hobby projects that comes with it. Worse, these
build systems’ support for mixing languages is mostly
superficial. Rust’s Cargo, for example, or Go’s Get, are neither
optional nor easy to integrate into other build systems. Have you
ever tried combining C++ and Rust in the same project?
So I keep looking back to C++ or even C to just build a
cross-platform base that can be extended with plugins written in
whatever other language, and then scripting languages start to
look good. Lately I started looking at compiled functional
languages that integrate easily with C because I expect I’ll need
their expressiveness and type safety for some tricky data
transformations. OCaml gets pretty close - if it came with
pkg-config support to find the runtime library, I might even have
stopped there! However, I looked even further and found D has it
all: it’s compiled, it integrates easily with existing C code
whether I’m using GCC or Clang, it doesn’t force me to use a
bespoke build system (I’m avoiding DUB so far, Meson is good for
me), and wonder of wonders: it has standard library support for
iterating through Unicode text one grapheme at a time! Well I’m
sure I’ll encounter a rough edge or two. Maybe I’ll even move on
again. However, with CTFE and lazy parameters to boot it’ll take
more than one or two scrapes to shake my newfound hope in this
language.
More information about the Digitalmars-d
mailing list