Other

digitalmars.D - Re: D's greatest mistakes

What I can see now, mistakes are mostly syntactical like switch, auto,
const, rebindable, array ops, full slice, arbitrary-code-contracts
instead of single bool expression. Choice for round braces for templates
leads to slightly unreadable template code: foo!(params params)(yet more
params). Omissible parens feel like omissible semicolons :-/
Implicitly nested classes.
Versions should be typed variables.
C baggage is still around.
Extensive use of unsigned ints.
Well, I admit, properties are hard to get good.
Zealous backward compatibility with baggage, early desing and legacy
code: these issues are no more fixable, I'm afraid.

I agree on switch, version, backwards compatibility and maybe "const" but
could you at least give a few examples to others or give some links to
your reasoning?
For example what is wrong with auto?

It used to mean automatic storage. Rebindable - no syntax to declare rebindable
const class variable. Array ops/full slice - see bugs 3395 and 3889.
Arbitrary-code contracts require the body keyword, while single bool expression
is enough (like for template constraints).
Hmm... statement about nested classes may be invalid, I only vaguely remember
there was some problem with it.