Why is D unpopular?

Siarhei Siamashka siarhei.siamashka at gmail.com
Mon May 16 06:51:46 UTC 2022


On Sunday, 15 May 2022 at 17:21:18 UTC, Walter Bright wrote:
> In my experience, it is not an option to rewrite working C code 
> into D.
>
> Note that I have successfully converted small and medium C code 
> projects to D.

Don't these two sentences contradict each other? Unless I'm 
misinterpreting the meaning of words "converted" and 
"successfully".

> I've done other translations of programs from one language to 
> another.
>
> 1. if you don't have a test suite for the program, a successful 
> conversion becomes an order of magnitude harder
>
> 2. converting a program all at once does not work. It must be 
> done incrementally, one function at a time

Can you elaborate on this? One function at a time conversion can 
be easily done if one language is mostly a superset of another, 
such as converting from C to C++. But converting from C++ back to 
C one function at a time would be not so easy anymore (because 
there are classes, templates and other advanced language 
features).

> 3. even so, when faced with a large, complex project, there's 
> just no business case for doing a conversion

Yes, if it ain't broke, don't fix it. Especially if this costs 
money and introduces unnecessary risks.

C is not very good for implementing new code compared to the 
other programming languages. But once the job is done, long term 
maintenance is relatively painless. The language is standardized 
and newer versions of the compilers are only becoming more strict 
about certain things.

D is good for rapid development of new code, but isn't great for 
long term maintenance because of the language evolution and 
compatibility breakages. My understanding is that many D projects 
and libraries died off because they could not afford to keep up 
and can't be even compiled anymore.

I don't think that converting the existing C code into D makes 
much sense. Because such conversion only turns the strength of 
one language into the weakness of another.

> Even just converting the .h files to D can be a major, rather 
> unpleasant undertaking. We've put a lot of time into converting 
> the various system .h files into D for druntime. There's always 
> a risk of a mistake, and we've made them and the result is 
> bizarre crashes because of ABI mismatches. Hand-checking them 
> is error-prone, tedious and very boring work.

Well, everyone is doing this and bindings for popular C libraries 
are available for most programming languages.

> ImportC makes things so much easier. You can write new D code 
> and hook it up with your existing C code base. You can get 
> reliable, easy, and accurate access to .h files. D will happily 
> work with a project that's a patchwork of C and D code.

> I.e. it dramatically lowers the barrier to adopting D.

Do I understand it right that ImportC is intended for 
implementing major new features in the existing old C projects 
using D language?

One of the old C projects is the Linux kernel. I know that some 
people are working on making it possible to develop some parts of 
the Linux kernel using Rust language. Would ImportC make it 
possible to use D for developing some parts of the Linux kernel 
and how is it different from what Rust people are doing?


More information about the Digitalmars-d mailing list