On Friday, 12 October 2018 at 07:13:33 UTC, Russel Winder wrote:
On Thu, 2018-10-11 at 13:00 +0000, bachmeier via Digitalmars-d
wrote: […]
Suggestions?
My guess is that the reason they've heard of those languages
is because their developers were writing small projects using
Go and Rust, but not D.
I fear it may already be too late. Go, and now Rust, got
marketing hype from an organisation putting considerable
resources into the projects. This turned into effort from the
community that increased rapidly, turning the hype into
frameworks and libraries, and word of mouth marketing. It is
the libraries and frameworks that make for traction. Now the
hype is gone, Go and Rust, and their libraries and frameworks,
are well positioned and with significant penetration into the
minds of developers.
Talk to Java developers and they have heard of Go and Rust, but
not D. Go is
more likely to them because of Docker and the context of The
Web, for which Go
has a strong pitch. They have heard of Rust but usually see it
as not relevant
to them, despite Firefox.
Talk to Python developers and they know of Go, many of them of
Rust, but
almost never D. C and C++ are seen as the languages of
performance extensions,
though Rust increasingly has a play there.
D has vibe.d, PyD, GtkD, and lots of other bits, but they've
never quite had the resources of the equivalents in Go and Rust.
Also the D community as a whole is effectively introvert,
whereas Go and Rust communities have been quite extrovert.
"Build it and they will come" just doesn't work, you have to be
pushy and market stuff, often using guerilla marketing, to get
mindshare.
D has an excellent position against Python (for speed of
development but without the performance hit) but no chance of
penetrating the places where Python is strong due to lack of
libraries and frameworks that people use – cf. Pandas,
SciKit.Learn, etc.
D has an excellent position against Go as a language except
that Go has goroutines and channels. The single threaded event
loop and callback approach is losing favour. Kotlin is
introducing Kotlin Coroutines which is a step on from the
observables system of Rx. Structured concurrency abstracting
away from fibres and threadpools. Java may well get this via
Project Loom which is Quasar being inserted into the JVM
directly. Whatever D has it doesn't seem to be going to compete
in this space.
D without the GC has a sort of position against Rust, but I
think that battle has been lost. Rust has won in the "the new C
that isn't Go and doesn't have a garbage collector, and isn't
C++, but does have all the nice monads stuff, oh and memory
safety mostly".
When it comes down to it D will carry on as a niche language
loved by a few unknown to most.
There is truth in much of what you say, but D has to pick its
battles. Given the design of the language, I see two primary
use-cases right now:
1. apps that need some level of performance, ie Tilix
2. Low-level tools that need a lot of performance, ie Weka or
Sociomantic
Going after some established tool like Pandas and its mix of
Python and C is likely to fail right now, as D is never going to
be as easy as Python, and presumably Pandas has already sped up
whatever it needs to in C. Maybe you could create a better tool
in D some day when the D ecosystem is larger, but I don't think
it would be the best approach today.
We need to think about what markets D would be best suited for
and aim for those, while at the same time resisting the
temptation to make D too specialized for those initial markets,
which is a trap many other languages fall into.