On Wed, 17 Aug 2005, Tom Jennings wrote:
On Mon, 15 Aug 2005, Fred Cisin wrote:
>>> I fail to see how i = i + 1 is not obvious to only but the most
>>> simple-minded of people :)
Sorry, but I was NOT the one who said that. Probably Sellam.
I DO see how it is not obvious, since I teach beginning programming
students. Students who are SO beginning, that N = N + 1 is NOT obvious.
Many of them are actually otherwise intelligent, but they have not learned
how to think procedurally, and have been trained to think that '=' means
that two expressions are interchangable with each other.
And, therefore, if N is interchangable with 1 N = 1
AND N is interchangable with N + 1 N = N + 1
then, by "inductive logic", all integers are equal!
That would result in the immediate cessation of the universe as we know it
(and probably replacement with something even weirder).
Variable reassignment is a new-fangled idea.
Mathemeticians would
once have corrected you:
i' = i + 1
variable values never changed, it would be considered an error.
thereby wasting the
most important capability of a variable!
Clearly programmatic convenience took over in
comipiler tradition.
And I disagree
i = i + 1
is not always obvious:
if ( i = i + 1 ) ...
if you mean that as IF (I .EQ. (I + 1) ) . . .
then the distinction between assignment and equality is significant.
We also must not forget numeric representations come into play.
float X; /* as IEEE 32 bit single precision */
X = 2147483648.0;
if (X == (X + 1)) . . . can come out as TRUE!!
(again: do NOT show that to a mathematician!)
PS: I'm no purist, I prefer perl; I simply
acknowledge I'm
swimming in shit.
... the only thing as common as Hydrogen and stupidity!
--
Grumpy Ol' Fred cisin at
xenosoft.com