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.

Reply via email to