Logical const
Jonathan M Davis
jmdavisProg at gmx.com
Sun Nov 28 15:20:53 PST 2010
On Sunday 28 November 2010 14:02:02 Walter Bright wrote:
> Jonathan M Davis wrote:
> > Walter is certainly against logical constness,
>
> I don't know of any language that provides logical constness as a feature.
> I know of no way to make it a statically verifiable attribute. Doing it
> with runtime checks is arbitrarily complex (imagine having to verify with
> a runtime check that one didn't change a 1Gb data structure).
>
> D has a focus on providing features that promote verifiability of programs.
> As programs inevitably get more complex, I believe this is crucial (as
> opposed to the older technique of relying on convention).
The more I look at your comments on the matter, the more I see that logical
constness does not really give you any guarantees in the general case, because
it's technically possible to cast it away and ignore it or just make all of your
member variables mutable and ignore it. But (if nothing else, due to programmers
not abusing it that badly) programmers don't usually view it that way. From the
programmers point of view, it does provide guarantees, and in practice, I
believe that it generally holds. But it is true that when you look at it, it's
convention that's holding it together (albeit one which is generally followed).
So, I do think that D has taken the correct route (though logical constness
_can_ be really nice at times), but I'm sure that most programmers aren't going
to see it that way (certainly not without a fari bit of convincing), especially
when so many of them are used to going without it entirely.
I'm glad to finally understand why you're against logical constness though. I'd
never quite understood it before. It's definitely food for thought.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list