D is dead (was: Dicebot on leaving D: It is anarchy driven development in all its glory.)

Ola Fosheim Grøstad ola.fosheim.grostad at gmail.com
Tue Sep 4 17:56:14 UTC 2018


On Tuesday, 4 September 2018 at 13:34:03 UTC, 
TheSixMillionDollarMan wrote:
> I think D's 'core' problem, is that it's trying to compete 
> with, what are now, widely used, powerful, and well supported 
> languages, with sophisticate ecosystems in place already. 
> C/C++/Java/C# .. just for beginners.

Yes, I believe there was an academic early on that allowed 
students to use D, but when C++17 (etc) came about he held the 
view that it would be better for D to align its semantics with 
C++. He was met with silence, except me, who supported that view. 
D is too much like C++ for a skilled modern C++ programmer to 
switch over, but D semantics are also too different to compile to 
C++ in a useful manner.

> Then it's also trying to compete with startup languages (Go, 
> Rust ....) - and some of those languages have billion dollar 
> organisations behind them, not to mention the talent levels of 
> their *many* designers and contributors.

Ok, so my take on this is that Rust is in the same group as D 
right now,  and I consider it experimental as I am not convinced 
that it is sufficient for effective low level programming. 
Although Rust has more momentum, it depends too much on a single 
entity (with unclear profitability) despite being open sourced, 
just like D. Too much singular ownership. Go is also open source 
in theory, but if we put legalities aside then I think it is 
having the traits of a proprietary language. They are building up 
a solid runtime, and it has massive momentum within services, but 
the language itself is somewhat primitive and messy. Go could be 
a decent compilation target for a high level language.

That said , I think most languages don't compete directly with 
other languages, but compete within specific niches.

Rust: for writing services and command line programs where C++ 
would have been a natural candidate, but for people who want a 
higher level language or dislike C++.

Go: for writing web-services where Python, Java  and C# is 
expected to be too resource-intensive.

D: based on what seems to be recurring themes in the forums D 
seems to be  used by independent programmers (personal taste?) 
and programmers in finance that find interpreted languages too 
slow and aren't willing to adopt C++.

> C++ is much more than just a langauge. It's an established, 
> international treaty on what the language must be.

Yes, it is an ISO-standard, and evolve using a global 
standardisation community as input. As such it evolves with the 
feedback from a wide range of user groups by the nature of the 
process.

> That is not a statement about the quality of D. It's a 
> statement about the competitive nature of programming languages.

It kinda is both, but the issue is really what you aim to be 
supporting and what you do to move in that direction.

When there is no focus on any particular use case, just language 
features, then it becomes very difficult to move and difficult to 
engage people in a way that make them pull in the same direction.

> I wonder has already happened to D.

No, it mostly comes down to a lack of focus and a process to back 
it up. Also, memory management should be the first feature to 
nail down, should come before language semantics...

> I just do not see, how D can even defeat its' major competitors.

But are they really competitors? Is D predominantly used for 
writing web-services? What is D primarily used for? Fast 
scripting-style programming?

> Instead D could be a place where those competitors come to look 
> for great ideas (which, as I understand it, does occur .. 
> ranges for example).

No, there are thousands of such languages. Each university has a 
handful of languages that they create in order to back their 
comp.sci. research.

No need to focus on performance in that setting.

> You seem to be saying that, raising money so you can pay 
> people, is enough.
>
> But I wonder about that.

There has to be a focus based on analysis of where you can be a 
lot better for a specific use scenario, define the core goals 
that will enable something valuable for that scenario, then cut 
back on secondary ambitions and set up a process to achieve those 
core goals (pertaining to a concrete usage scenario).

Being everything for everybody isn't really a strategy. Unless 
you are Amazon, and not even then.

Without defining a core usage scenario you cannot really evaluate 
the situation or the process that has to be set up to change the 
situation...

Well, I've said this stuff many times before.



More information about the Digitalmars-d mailing list