Vision for the D language - stabilizing complexity?
Shachar Shemesh via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jul 15 03:25:16 PDT 2016
On 15/07/16 13:13, Walter Bright wrote:
> 1. no protection against casting away const and changing it anyway
> 2. no protection against adding 'mutable' members and changing it anyway
> 3. only good for one level, no way to specify a data structure of
> generic type T as const
>
>> (and, sadly, not something D does very well)
>
> Explain. D fixes C++ faults 1..3.
>
Yes, it does. And the result is that const is well defined, safe, and
completely impractical to turn on. There are many many places I'd have
the compiler enforce const correctness in C++, where in D I just gave
up. In one of those places we even went as far as to add run time checks
that no one inadvertently changed a buffer.
I think the one that hurts the most is fixing "C++ fault" #3. It means
there are many scenarios in which I could put const in C++, and I simply
can't in D, because something somewhere needs to be mutable.
Check this thread out to see that we actually do need something like #1
in D (though, at least if my suggestion is accepted, without throwing
away the optimizations it allows).
>
>> In terms of optimizations, there are, indeed, cases where, had const
>> not been
>> removable, things could be optimized more. I don't think D has a right to
>> complain about C++ in that regard, however.
>
> Of course D does. I had to disable const optimizations in my C++
> compiler, which is one of the motivations for the way const works in D.
>
For const, yes. In almost every other aspect of the language, however, D
favors safety over performance. Just look at range checks, memory
allocation, default values, and those are just the examples off the top
of my head.
I'm not saying that as a bad thing about D. It is a perfectly valid and
reasonable trade off to make. I'm just saying D has no right to
criticize C++ for missed optimizations. People who live in glass houses
should not throw stones.
Shachar
More information about the Digitalmars-d
mailing list