Why aren't you using D at work?

Chris via Digitalmars-d digitalmars-d at puremagic.com
Fri May 29 04:14:55 PDT 2015


On Friday, 29 May 2015 at 10:05:08 UTC, Paulo  Pinto wrote:
> On Friday, 29 May 2015 at 09:33:25 UTC, Kagamin wrote:
>> On Thursday, 28 May 2015 at 14:38:51 UTC, Manu wrote:
>>> I expect I'm not alone. Please share the absolute blockers 
>>> preventing
>>> you from adopting D in your offices. I wonder if there will 
>>> be common
>>> themes emerge?
>>
>> If you're interested in enterprise point of view, our 
>> ecosystem is build around .net technologies, it gets the job 
>> done, so it's usually hard to come up with a case for D. There 
>> is a small utility, which updates database in a multithreaded 
>> fashion and doesn't share code with the rest of the project, 
>> but it needs database connectivity for mssql and oracle and 
>> again D can't show any advantage in such use case.
>
> Same here.
>
> Our customers live in Java and .NET world. They also tend to 
> choose the technology stack themselves.
>
> C++ only appears into the scene when there is the need for some 
> OS integration or performance boost. So just as JNI, P/Invoke, 
> COM component.
>
> Also there are native compilers for both eco-systems around the 
> corner. .NET Native on one side and the AOT support is being 
> discussed for Java 10 (ignoring the commercial options).
>
> For the customers doing mobile projects, we tend to go with a 
> mix of platform SDKs and some web help.
>
> Overall, for the amount of C++ code that gets written, D would 
> hardly make any difference and cannot compete with the 
> eco-systems being used from business case point of view.

I'm using D at work successfully. However, what is lacking that 
makes it hard to convince others:

1. [medium priority]
No standard GUI ("Look Ma, there's a button that says 'Hello, 
world!', if I press it!"). You can work around that, because you 
can still call D from any GUI either as an executable, a socket 
or interface to D (via C). Still, people love GUIs. I hope 
dlangui can help here.

2. [high priority]
Uncertainty regarding ARM (iOS/Android). Deal breaker, show 
stopper. Was worrying a few years ago, but is just bad now in 
2015.

3. [constant priority]
Learning resources, learning curve. As mentioned in a comment 
above: you have to know D well to be able to make sense of error 
messages etc. You need to know D "low-level" or D's internals in 
order to take full advantage of it. A lot of concepts are 
unfamiliar to people and/or not yet common ground (ranges, 
templates, component programming), especially as inbuilt 
features. The other day I needed startswith and ctypes in Python 
and immediately got this:

https://docs.python.org/2/library/stdtypes.html
https://docs.python.org/2/library/ctypes.html

For D I get:

==> http://dlang.org/phobos/std_string.html
==> http://dlang.org/phobos/std_algorithm.html#startsWith
==> 
http://dlang.org/phobos/std_algorithm_searching.html#.startsWith

uint startsWith(alias pred = "a == b", Range, Needles...)(Range 
doesThisStart, Needles withOneOfThese) if (isInputRange!Range && 
Needles.length > 1 && is(typeof(.startsWith!pred(doesThisStart, 
withOneOfThese[0])) : bool) && 
is(typeof(.startsWith!pred(doesThisStart, withOneOfThese[1..$])) 
: uint));
bool startsWith(alias pred = "a == b", R1, R2)(R1 doesThisStart, 
R2 withThis) if (isInputRange!R1 && isInputRange!R2 && 
is(typeof(binaryFun!pred(doesThisStart.front, withThis.front)) : 
bool));
bool startsWith(alias pred = "a == b", R, E)(R doesThisStart, E 
withThis) if (isInputRange!R && 
is(typeof(binaryFun!pred(doesThisStart.front, withThis)) : bool));

WTF? :-)

I know, we all know that, but still it puts people off, a simple 
psychological issue. D smells of elitism and hackeritis. Python 
and Java are more like "Hey, I can do it too. Look Ma, it prints 
'Hello, world!'!!!" In other words, it doesn't make people feel 
good about themselves, there's no immediate reward. This is 
purely a marketing issue and has nothing to do with the language 
itself. But even if people are free to chose a language, they shy 
away from D.

And since we're talking about psychology, I think D is a language 
you only come to appreciate after years of programming in other 
languages. People won't adopt it as long as they feel comfortable 
- or secure - in other languages, as long as they don't see an 
immediate benefit in using D. I'm not sure if there's anything 
the D community can do about this except for keeping on keeping 
on.


More information about the Digitalmars-d mailing list