Lost a new commercial user this week :(

Tobias Pankrath via Digitalmars-d digitalmars-d at puremagic.com
Wed Dec 17 01:48:26 PST 2014


> We didn't 'learn' javascript, or python, or html, or whatever 
> else you
> pick up on the job.
> The investment in learning 'programming' is decades behind us, 
> and I
> think it's a reasonable expectation that a language present 
> itself in
> such a way that it's intuitive and easy to get some basic things
> going.
> Leveraging small example snippets from the docs, etc. D is very 
> easy
> for a C/C++ programmer, but the docs don't make it appear that 
> way,
> and they give the wrong impression.
> The overpowering presence of templates in the docs give a first
> impression that reminds people of everything that's wrong with 
> C++,
> which I suspect most C++ programmers looking into D are actively
> trying to escape!
>
> There simply can't be friction on step 1! There can be friction 
> on
> step 4 or 5 when you've already made some minor achievements, 
> and have
> a good few hours invested.
> Any friction on step 1 or 2 will lead to an almost immediate 
> rejection.

I second this. I remember very well that the docs really annoyed 
me
when I was starting with D. Sadly I can't see the issues I had
any more, because I'm used to it now, so it's kind of hard to
improve in a meaningful way.

But two things come to mind. The first is that the language 
documentation actually is a very dense language specification. If 
you look at the rust documentation you'll find a ‘Guide’ and a 
‘Reference’. We need such a tutorial as well. Just linking to 
some books is not enough.

Second thing is template arguments and constraints. For example 
std.container.Array has a specialization for bool. That looks 
like this in the docs:

std.container.Array(T) if(is(Unqual!T == bool)) vs.
std.container.Array(T) if(!is(Unqual!T == bool)).

That's super unhelpful for newcomers. The difference is hard to 
spot, newcomer don't know what a qualified or unqualified type is 
and they won't recognize the is-expression.

I think the documentation should call those to overloads Array!T 
and Array!bool.



More information about the Digitalmars-d mailing list