On Friday, 9 February 2018 at 21:05:10 UTC, H. S. Teoh wrote:
On Fri, Feb 09, 2018 at 08:49:24PM +0000, Meta via
Digitalmars-d wrote: [...]
I think the perception of D being complicated is more from
programmers coming from Python/Ruby/JS (and to a lesser
extent, Haskell/Scheme/Java). D is quite different if you're
coming from a "VM" or "scripting" language because it exposes
you to a lot of new concepts such as static typing, value
types, templates, monomorphization, immutability, memory
layout, linking and compilation, compile-time vs. runtime,
etc. It's not that these programmers are less skilled or less
knowledgeable; it's that if they've never used a language that
has forced them to consider these concepts, then it looks to
them like D is a massive step up in complexity compared to the
language that they're used to.
I think if you asked 100 C++ programmers whether they thought
D was a complicated language, 99 of them would say no. If you
ask 100 Python programmers, 99 would probably say yes.
Thanks for this very insightful post.
Before reading this, I couldn't understand why people thought D
was complex... I come from a strong C/C++ background, so to me
D is like a breath of fresh air in terms of understandability,
flexibility, and verbosity level. "Complex" certainly isn't
what I'd think of when I think about D. But I suppose if
someone is coming primarily from a Python background, D could
certainly be considered quite a step up in perceived complexity!
I've done lots of C++ (though more in the earlier years), and I
have to disagree. I'd agree C++11 is more complicated than D,
but D is still complicated. I think I've programmed in enough
languages (from asm, Perl, Java,...) and in large enough projects
to have a good idea of what languages can be like.
I'll probably continue to stick it out and play with D for
personal projects because of the things I like and find
interesting, but professionally it's a no-go (pardon the pun).
Frankly, I think it is doomed to be a niche-use language. While
many more things were done right compared to C++, too many things
were done wrong and there doesn't seem to be interest in breaking
backward compatibility to excise them from D.