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