A few notes on choosing between Go and D for a quick project

via Digitalmars-d digitalmars-d at puremagic.com
Mon Mar 16 02:31:15 PDT 2015

On Sunday, 15 March 2015 at 14:56:23 UTC, Chris wrote:
> We invariably end up talking about language features and 
> syntax, as if D lost out against Go, because of feature X being 
> (or not being) there. We lose, because we fail to give people 
> that warm glow in their chests. The feeling of "now I have 
> something", which is basically what makes people go for 
> something. I felt like this about D when I first got to know 
> it, after a long period of being frustrated with every other 
> language. Although irrational, my intuition was that D would 
> offer me a lot, and it hasn't failed to do so. But this is, 
> because I was willing to make an effort. Many potential users 
> are either not willing to make an effort or they don't have 
> enough time. So we should make it as easy as possible for them.

Makes a lot of sense. But…

> As was said in a post earlier, the decision to go for language 
> X is often not 100% rational, but also based on subjective 
> positive feelings. To ignore this basic human fact, doesn't 
> help us. Having a great language with advanced features and 
> doing some "feel good" marketing are not mutually exclusive.

This is true, but D's main problem isn't that people haven't come 
to D with high expectations of getting a better alternative to 
C++. The problem is that they came for emotional reasons and left 
for rational reasons.

They key is in understanding why people leave. Retention of the 
_target audience_ is more important than adoption rate.

It seems that many of those that stays with D either picked it 
for a hobby, or are not primarily programmers (I am not really 
sure why they pick D? Does not seem like a rational choice.), 
then a very small (and vocal) group use it for business.

In my opinion you need to pick a target audience, and with the 
CTFE focus targeting professional system level programmers is the 
only thing that makes sense. D needs to deliver on all aspects 
that C++ is good at before it is marketable, or else it will stay 
a hobby language for professionals and others. That means 
matching C++ on stability too.

If it is more work to implement smart pointers in D than in C++, 
then there are some fundamentally unacceptable limits in the core 
language. So it is not only marketing... D is not complete.

D needs a redesign to get away from lock-the-world GC without 
scars... A  language redesign that cannot be done with "last 
minute patches of special casing hell".

Over focusing on growing the user base by making tutorials, will 
only make changes harder, and it will attract the wrong kind of 
people that will ask for the non-system-level features making it 
even harder to improve the core language.

Why grow the user base before the language is done? You end up 
with no target audience, a very fragmented user base and equally 
fragmented eco system. Fragmentation makes it harder to produce 
professional level things.

It is also completely misguided to push D as a web dev platform. 
D is up against: Ruby, Python, Dart, node.js+angular, Java, Go 
etc in an environment where performance is mostly about 
networking, database/ORM integration and infrastructure 
AWS/Azure/Google... D is nowhere near being a plausible solution 
in this space, CTFE is essentially pointless in this domain.

More information about the Digitalmars-d mailing list