Re: Variables in for loop (style issue)
Walter Bright wrote:
David Abrahams wrote:
Walter Bright <walter@digitalmars-nospamm.com> writes:
1) Once you start using const, for example, you wind up being
forced to
propagate const throughout. It has a sort of viral effect
making it
difficult to ease into writing const-correct code.
A false problem. It's just like strong typing. Imagine a language
with fully dynamic typing and optional static type checking. "Once
you start using static type checking, you wind up being forced to
propagate type declarations throughout. It has a sort of viral effect
making it difficult to ease into writing typesafe code."
Yes, I agree it's just like optional strong typing - I can imagine what
a pain that would be. It's probably why there aren't such languages.
Tsk tsk. A language designer should be on studying other languages like
brown on brown rice. Cecil has optional strong typing, and Perl 6 will
have. I happen to think it's a powerful feature, plus it's interesting
what design challenges are in devising such a language and how other
languages have addressed them.
C++ does not have optional strong typing. It's required. One can write
complete, correct, and working programs in a strongly typed language
while ignoring const. To start adding in const, however, requires it to
be added throughout the program. No way to ease into it.
It's a matter of perspective. For somebody assessing C++ while still
programming in a dynamically-typed language, strong typing is "optional"
in the sense that it makes or breaks the newcomer's decision to stick
with C++ or to continue going with Smalltalk, Scheme, Python, Perl etc.
One can ease into C++ features like OOP, // comments, STL, etc. But not
const-correctness.
I think I see what you're saying, but it makes just so oblique a point.
We all agree that that "lack of easying into" is a necessary consequence
of const's semantics. So I don't see that as a cost, but rather an
intrinsic property. The fact that const is optional also has the
strength that a programmer can "ease into the language" without using
const.
I think it's much more useful to discuss whether the benefits are
noteworthy. For my money, there are numerous cases in which annotating a
program fragment with const illuminated me about aspects of a design. A
number of times const alone saved me from bugs that would have taken
vastly more time to uncover otherwise. I believe that const should be
more of a default even in an imperative language.
Andrei
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]