Andrei's list of barriers to D adoption
poliklosio via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 7 13:41:10 PDT 2016
On Tuesday, 7 June 2016 at 08:57:33 UTC, Russel Winder wrote:
> On Mon, 2016-06-06 at 19:57 +0000, poliklosio via Digitalmars-d
> wrote:
>> […]
>>
>> I should have been more specific here. I mean I want to
>> elliminate GC in my code. I don't mind if you or anyone else
>> uses GC. Even I use GC languages when writing things like
>> scripts, so I'm not a no-GC-because-I-say-so person.
>
> Indeed. D has a GC by default which can be switched off. This
> is good. That D needs a better GC is an issue.
For me a much bigger issues are:
- Smaller power of the language with GC switched off.
- Mixing GC and noGC is still experimental thing that few experts
know how to do properly.
Better GC is not a bigger issue for me as I'm not going to use
much of it.
Better GC is of course advantageous for adoption, I just have a
strong impression that there are more important things, like
nailing easy setup of editors, and providing a guide for
programming **without** the GC and for mixing GC and NoGC.
You have to distinguish switching GC off (that implies 2
languages, 2 communities, 2 separate standard libraries, all with
some overlap) from being able to mix GC and non-GC code in the
same program. The problem is that AFAIK the second is not a
viable methodology outside a tightly controlled environment,
where you select used libraries very carefully and limit their
number.
>> (...)
> My feeling is there is no point in over-thinking this, or being
> abstract. C++ can have a GC but doesn't. Rust can have a GC but
> doesn't. Python has a GC. Go has a GC. Java has a GC. D has a
> GC that you can turn off. That seems like a USP to me. Whether
> this is good or bad for traction is down to the marketing and
> the domain of use.
I'm trying to be as far from abstract as I can. Having GC is
hardly a unique selling point. As for switching it off, see
issues above. After they are solved to a point when experts can
get noGC stuff done easily, it will be a USP.
>> D's power is in its native-but-productive approach. This is an
>> improvement in C++ niches, not a simplified language for
>> banging end-user apps.
>
> Productive is way, way more important that native.
For some people native is necessary. For them D is the way to get
productive. Others ideally would use D as well but currently
there are more productive options for them, like C# or python.
> […]
>>
>> Why would they not use D? D is a much better language for them
>> as well. To give some examples, in C++ code there is a ton of
>> boilerplate, while D code hardly has any. Also, the number of
>> bugs in a D program is smaller due to easier unittesting.
>> Also, templates don't cause day-long stop-and-learn sessions
>> as in C++. I don't think those people are a lost market.
>
> Can we drop the unit and just talk about testing. Unit,
> integration and system testing are all important, focusing
> always on unit testing is an error.
There's nothing wrong with discussing unittesting on its own. In
fact, this is very relevant because its the unittesting that D
makes easier. More coarse-grained testing can be done as easily
in any other language - you just make some executables for
various subsystems and variants of your program and run them in
test scenarios.
> As to why not use D? The usual answer is that "no else is using
> D so we won't use D" for everyone except early adopters.
>
> D needs to remanufacture an early adopter feel. It is almost
> there: LDC announcing 1.0.0, Dub getting some activity, new
> test frameworks (can they all lose the unit please in a
> renaming), rising in TIOBE table. This can all be used to try
> and get activity. However it needs to be activity of an early
> adopter style because there are so many obvious problems with
> the toolchains and developer environments. So let's focus on
> getting these things improved so that then the people who will
> only come to a language that has sophistication of developer
> experience.
As long as those are improvements in getting started fast and
time-to-market for D apps, than yes, and that's probably 10 times
more important than the both slow GC and poor noGC experience.
>> This is a big issue now due to lack of a comprehensive guide,
>> as well as holes in the language and phobos (strings,
>> exceptions, delegates). C++ doesn't have those holes.
>
> Holes in Phobos can be handled by having third-party things in
> the Dub repository that are superior to what is in Phobos.
I don't think that third-party libraries can have the reach of
Phobos libraries. Also, things as basic as strings should be in
the standard library or language, otherwise the whole idea of
using D looks ridiculous. Having said that, third-party libraries
can help.
> Documentation, guides, and tutorials are a problem, but until
> someone steps up and contributes this is just going to remain a
> problem. One that will undermine all attempts to get traction
> for D. So how to get organizations to put resource into doing
> this?
I think those things can be easily done by individuals as well,
as long as pull request are accepted. But of course until someone
steps up... :)
More information about the Digitalmars-d
mailing list