robin <[log in to unmask]> wrote:
...
>> Some people, when trying to write a**b accidentally write a*b
>> instead.
>
>It's something that's blatantly obvious.
>Try looking down the barrel of a rifle and of a double-barrelled-shotgun.
>Spot the difference?
Yeah, but they're both still guns. Same with * vs. **, both are still
operators. Both are still legal in the code. If I'm reading old code,
or code written by another programmer, I have to stop and double
check the intent. Many users simply assume that they'd never get
something so simple wrong (and, hence, don't read it that carefully).
It has been my observation that a significant fraction of errors
people take long intervals of time to resolve are trivial in nature
(just exactly this kind of error). It takes them long to reslove
because they look for programming errors (using the wrong
algorithm, etc.) not syntax errors. It's their fault, but can
sometimes be limited by more careful language design.
>> If your intent is to reach for the ^ key, this kind of
>> accidental fault is almost impossible (there's no nearby key
>> that would be valid instead,
>
>There is -- it's the "&" key right next door.
>The "&" key terminates the line (or starts it if it's first).
And is illegal if it has additional non-comment non-blank text after it.
Hence x&y would be caught by the compiler. On the other hand x%y
_might_ be legal and valid - not really probable, but maybe. (If you're
going to try counter-examples, you might at least strive for valid ones.)
>> and omitting or typing more than
>> one ^ would be detectable). It's not a common fault. It's
>> not a particularly strong argument against **. The fact that
>> ^ is more mnemonic is more compelling.
>
>Not all equipment has a "^" key.
All web browsing hardware/software should be able to
handle the '^' character (by international standard). It's a character
that's allowed to vary by the ISO 646 standard, but that's mostly now
regarded as obsolescent. In any case, I'm not advocating changing
Fortran's operator. I merely comment that ^ is more mnemonic.
>In any case, the argment is specious. Try replacing
>"*" and "^" in your argument with "+" and "-"
>(these keys are adjacent).
But with different shift states. In any case, as I clearly
said before, the possibility of error is not a particularly compelling
reason to change the operators around. All languages have the
possibility of subtle, single character errors that result in still
legal code with different semantics. These are all instances
of such cases in Fortran.
(However, the claim the the argument is specious is simply wrong.
The fact that other, similar problems might exist doesn't mean it's
useless to try to solve a particular one. You might as well argue
that it's useless to try to feed starving Africans because there are,
in any case, still starving Asians .)
>There's no substitute for careful checking of what has been
>typed -- even the humble expression.
True. But that wasn't the issue being discussed.
--
J. Giles
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|