D is dead

JN 666total at wp.pl
Thu Aug 23 07:27:56 UTC 2018


On Thursday, 23 August 2018 at 06:34:01 UTC, nkm1 wrote:
> The only real problem with D is that it's a language designed 
> with
> GC in mind, yet there are numerous attempts to use it without 
> GC.
> Also, supporting GC-less programming gets in the way of 
> improving
> D's GC (which is pretty damn bad by modern standards).
> That's the only real technical problem.

I think a large part is defining what kind of users D wants to 
attract. There are two main groups of programmers, and there is a 
vast rift between those groups. One group is people who are 
closer to OOP programming and languages such as Java, C#, 
Javascript. These people are OK with things like garbage 
collectors and in cases where it matters, have learned to work 
around it (avoid allocations in hot loops, etc.). I feel like D1 
was attractive for these people for having the convenience they 
are used to from their languages (batteries included standard 
library, automatic memory management), with additional features 
that their language/environments struggle with (C interop, native 
binaries), everything packed
with a very clean syntax.

The second group are the C/C++ programmers, the 'zero cost 
abstraction' group. For this group of programmers, any overhead 
is a disadvantage, garbage collector is unusable for most 
usecases (whether true or not, that's the perception). D1 
appealed to those people, for having a clean syntax and the 
features they know without having to include the monster that is 
Boost. Battlefield was different back then too. Around D2 came 
the competition, be it Rust, Go, or C++17. Go is appealing more 
to the first group of programmers, since it has a GC, and mostly 
sticks to webservice usage. Rust is heavily appealing to the 
zero-cost abstraction group and C++17 obviously appeals to C++ 
folks.

Is it possible to make a language that both groups would be happy 
to use? Perhaps, or perhaps the gap is too wide. Is adding 
features like dip1000 and betterC spreading ourselves too thin? 
Perhaps. Perhaps there are features that aren't really used, and 
should be reworked or cut from the language instead (has anyone 
ever used contracts?).

D's not UNIX (DNU?), but the first rule of UNIX philosophy is 
"Make each program do one thing well. To do a new job, build 
afresh rather than complicate old programs by adding new 
'features'.". It may or may not be relevant here.


BTW. on the offtopic note - the thread title doesn't look too 
good. Imagine being a newcomer, and the first thread you see on 
the forum is titled "D is dead".


More information about the Digitalmars-d mailing list