On Thursday, 11 August 2016 at 15:41:42 UTC, Edward Diener wrote:
I am a C++ expert who has looked at D in the past. Perhaps my
reasons for not programming in D may be taken as some of the
reasons why D "is not popular enough". My opinions are not
meant to start a flame war, even if some of my insights may be
harsh to those who do use D. They will hopefully give some idea
of why and where D went wrong in trying to appeal to the
general intelligent programmer as a programming language.
1) Until very recently the documentation for D has been very
substandard. I do notice better documentation both on the web
site now and a few more books on D as a programming language.
For a very long time after D was created, even after version 2
was created, there was essentially no decent documentation at
all. If you are trying to promote the use of a computer
language to the general public you must create first-rate
documentation and explanation of your computer language from
the very beginning. Without this first-rate documentation your
programming language, no matter how good it might be, is just a
toy to those who want to play around with it and try it out.
This is the case that D promoted for a very long time, so the
expectation that D was going to become popular to the
programming public with such poor documentation was just
foolish. C took off as a programming language for the general
programming when Kernigan and Ritchie wrote their classic book
and C++ took off as a programming language for the general
public when Stroustrop and subsequently Lippman wrote their
classuc books. While I think that Alexandrescu's book is decent
it is not written at the level of these others.
I never got that point, really. When I started to program in D
around 2010, documentation for D was almost non existent, but I
quickly learned how to use it by just, well, using it.
Programming languages have a lot of things in common, once you
know one (or two) others are not so hard to learn/understand/use.
If you come from a C++ background, understanding D should be a
piece of cake.
2) While I greatly respect the programming abilities of Mr.
Bright and Mr. Alexandrescu and their hard work in creating and
improving D, having followed both from the C++ world, the
arrogance by which D was initially and repeatedly compared
against C/C++ has been totally out of place since the
beginning. C++ is a very good language and the effort made to
denigrate it with specious and ridiculously false arguments
about it vis-a-vis D as a programming language has almost
irreparably hurt D as a serious programming language
irrespective of its actual abilities or weaknesses. You are not
going to appeal to the really intelligent programmers out there
if you are not honest and rigorous in discussion of your own
programming language in relation to others. All that you end up
doing is to alienate anyone with real programming intelligence
by the tactics that D has taken over the years with such
comparisons.
Cf. Patrick's comment. Let me add this: by constantly mentioning
`intelligent programmers` you insinuate that people who use D are
idiots who religiously worship the language. Anything but. The
thing is that in D things are moving (and people in the community
perceive it as something positive), which brings me to your next
point.
3) D has suffered greatly because it has had too many moving
targets as if constant change to something slightly better is
going to endear programmers to using a computer language.
Programmers need stability. The needed to know that if they are
using a programming language they are getting a particular
standard at a particular time with particular libraries that
work. They also need backward compatibility when things change.
D appears to have presented an almost constantly moving target
to this programmer, where adding/changing some feature is much
more important than fixing problems and providing stability.
True. I admit that I "fear" every new release in the sense that
something will break and I'll have to fix it. More often than
not, however, the fixes are trivial, and if they make sense and
improve the language, I'm willing to pay the price. But your
argument shows the fix D developers are in: to provide a better
language without changing it (paradox). The trivial truth is that
you can only improve a language by changing it and you need a
community that is willing to go along with the changes. For this
reason D hasn't taken off, because most people are not willing to
risk (or cannot afford) frequent changes. Personally, I don't
know which is worse, frequent (educated) changes or years of
suboptimal coding until changes are made at long last (cf. Java).
Mind you, well established languages like Java and C++ are now
adopting things that have been around in D (and other languages)
for a while, because those concepts have proven to be useful.
This said, D has become a lot better in terms of deprecating
things. You get a warning well in advance and you can prepare for
the (breaking) changes. My perception (which might be biased) is
that people look at D, bash it and trash it, but nevertheless
take things on board when developing the next version of C++ or
whatever - without giving credit later. The Led Zeppelin
syndrome[1].
[1] https://www.youtube.com/watch?v=tiiY4ciKFQA
4) As a C++ programmer largely interested in C++ template
programming, C++ concepts etc., and potential
compile-time/run-time introspection, I have never found a
compelling reason to use D rather than C++. I do recognize that
C++'s template syntax is difficult and abstruse but I do not
and have never seen where D improves upon these matters in any
serious and rigorous way. This may be because the documentation
about these areas in D is either very light or almost
completely lacking. Even in Mr. Alexandrescu's book the
discussion of these areas was very light in my estimation. So
whatever D has to offer in these areas, if there are really
impovements, is either lacking in the D documentation or does
not really exist for me.
I cannot comment on this, because I don't know what you've read,
know or want to know about D.
Edward Diener