Andrei's list of barriers to D adoption

maik klein via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 6 07:43:22 PDT 2016


On Monday, 6 June 2016 at 02:20:52 UTC, Walter Bright wrote:
> Andrei posted this on another thread. I felt it deserved its 
> own thread. It's very important.
> -----------------------------------------------------------------------------
> I go to conferences. Train and consult at large companies. 
> Dozens every year, cumulatively thousands of people. I talk 
> about D and ask people what it would take for them to use the 
> language. Invariably I hear a surprisingly small number of 
> reasons:
>
> * The garbage collector eliminates probably 60% of potential 
> users right off.
>
> * Tooling is immature and of poorer quality compared to the 
> competition.
>
> * Safety has holes and bugs.
>
> * Hiring people who know D is a problem.
>
> * Documentation and tutorials are weak.
>
> * There's no web services framework (by this time many folks 
> know of D, but of those a shockingly small fraction has even 
> heard of vibe.d). I have strongly argued with Sönke to bundle 
> vibe.d with dmd over one year ago, and also in this forum. 
> There wasn't enough interest.
>
> * (On Windows) if it doesn't have a compelling Visual Studio 
> plugin, it doesn't exist.
>
> * Let's wait for the "herd effect" (corporate support) to start.
>
> * Not enough advantages over the competition to make up for the 
> weaknesses above.
I am a D user since probably 6 months now, I can give you my list 
from the point of view of a game dev.

I concentrate on the negatives

* The garbage collector eliminates probably 60% of potential 
users right off.

I think that is mostly true, while it is possible to avoid the GC 
it is not easy. The biggest problem is that you would need to use 
something like unqiue_ptr and shared_ptr.

While you can create this, almost nothing in Phobos works with 
non copyable types. Unqiue and RefCounted both still use the GC 
and Unique can't be used (any?) container in Phobos currently. 
You can't even use writeln on it, because almost anything in 
Phobos "copies" behind your back.

This makes avoiding the GC not really practical unless you are 
recreating a lot of stuff from scratch and make it move aware. I 
don't think many want to do this on their own.

* Tooling is immature and of poorer quality compared to the 
competition.

Honestly I think most languages have very poor tooling but D's is 
especially bad. I say that without any anger nor do I want to 
point fingers. I basically use D without any tooling right now 
except GDB and only use DCD for autocompleting import statements.

* Error messages

I think most error messages are actually not bad, but some error 
messages especially compile time lambdas that are passed into 
templates are especially bad. Most of the time you literally get 
no message at all if the error message is inside that lambda.

* Compiler not written in D

DMD backend is not open source and is written in(C++?). ldc is 
written in C++.

I don't think that is a big issue now, but at the time of 
evaluating D I was mostly wondering why D's compiler weren't 
implemented in D itself.

* Long standing issues

There are so many long standing issues in the bug tracker that 
also made me wonder how active the community is in fixing stuff. 
Most issues that I encountered where phobos issues that I worked 
around by creating my own stuff. Like a zipped range not being 
able to mutate its elements.

At one point I will try contribute all this stuff but my 
implementations use a lot of stuff that I have written myself and 
are not currently in phobos.

* Size of community and getting help

I think D's community is very helpful and we have a few experts 
that are answering my questions on stackoverflow very often.

But you usually have to wait for some answers quite some time. 
For example most questions have already been answered for C++ and 
if you have some advanced question for C++ you usually get an 
answer in a matter of minutes.

I think D is a amazingly well designed language and if we could 
"fix" tooling(autocompletion, renaming, goto definition etc), gc 
and error messages, I think the other issues would be fixed 
indirectly by having more users.



More information about the Digitalmars-d mailing list