Why is D unpopular?

H. S. Teoh hsteoh at quickfur.ath.cx
Wed May 11 15:45:59 UTC 2022


On Tue, May 10, 2022 at 11:08:18PM +0000, Joshua via Digitalmars-d wrote:
[...]
> I [can't](https://mesonbuild.com/Rust.html) throw Rust into the same
> build target, but even if I could I'd still have to deal with the fact
> that doing anything interesting in Rust (or Go) requires using Cargo
> (or `go get`) to download 10× more dependencies than I asked for,
> which is 10× more long-term instability than I intended to accept.

Yeah, that's one big factor that turns me off most popular "new"
languages these days.  I don't *want* tons of dependencies that I know
nothing about. I want the minimum to get my job done, and that's *it*.
Anything that requires a big hairball of dependencies is a no-go in my
book.


> I don't mean to be excessively critical: they're wonderful languages,
> and having the option to reuse work from such large ecosystems is
> _truly amazing_. AFAIK, nothing remotely similar existed for compiled
> languages more than 10 or 15 years ago. I'm just not a fan of the
> trade-off: it's like, _"Everything you can see in this vast ecosystem
> is free to reuse, all you have to do is use this here build system
> which supports the only programming language you'll ever need. Isn't
> that great? Now go forth and make a name for yourself by rewriting
> useful libraries from other ~~other~~ inferior languages into our new
> paradise!"_ It's exciting and fun and so much work and at the end you
> get... a silo. Not so with D (or at least not as far as I know yet! ☺)

This is one reason why I'm still not sold on dub, despite having used D
for a decade.  I just don't like its walled garden philosophy.  It
places arbitrary limitations on what is essentially an algorithmic
solution that applies to far more general things than its authors deemed
worthy of recognition.  This is why I wrote what I did recently, about
busting dub out of its own walled garden.  Don't know if I'll succeed;
but in the worst case, my last-resort secret plan is to write a general
build tool that can read dub configurations and process them without any
effort on the part of the package authors, so that I can import dub
projects without ever using dub.

As for D itself, its ease of integration with other languages has been
great.  It integrates with C basically seamlessly -- recently I've been
working on a project that uses libxcb, and D lets me declare xcb
prototypes on an as-needed basis: I don't even need to convert the
entire header file, just port over those functions that I actually use
and I'm good to go. And where conversion of entire headers are
necessary, tools like dpp are great.  C++ integration is a bit trickier
(some parts aren't 100% compatible, so I heard -- haven't tried it
myself). But Java integration with Adam's jni.d is awesome.  I've also
used D's metaprogramming capabilities to reduce the amount of
boilerplate needed to interface with GLSL shader code, and that's been
great too.


T

-- 
Only boring people get bored. -- JM


More information about the Digitalmars-d mailing list