[REBOL] Re: Correct Behaviour? Was False = 2 ????
From: joel:neely:fedex at: 4-Jul-2001 22:19
Hi, Jeff,
The dried frog pills are in the way via FedEx... ;-)
Jeff Kreis wrote:
> Howdy, Joel:
>
> > "First" refers to the item in an ordered collection
> > which precedes all others.
>
> Well, if you wish to define "first" that way, then what
> is the word 'Zeroth' found in the dictionary for?
>
Because dictionaries simply document all of the things
people say, without any obligation to make a simple,
consistent system out of them, of course. I can also
supply you a list of arbitrarily weird and contradictory
quotations from the evening news, especially during
election years! ;)
I trust we haven't stooped to using an English dictionary
as the basis for defining a programming language! Notice
that English dictionaries have
cleave, v.t.: to divide, pierce, sever, disunite
cleave, v.i.: to split, separate, fall apart
immediately followed (at least in mine, yours may use a
different ordering -- no matter) by
cleave, v.i.: to adhere, cling, be faithful (to)
As both my Mathematics and Philosophy professors taught
me, when I was a wee lad,
A system which asserts the contradictory propositions
P and NOT P can be used to prove anything, and therefore
proves nothing.
But the simplest test of usability is to show anyone (with
no prejudicial prompting, of course) an ordered collection
of items and simply ask, "Which is the first?" They will
likely not find that a challenging question...
> If you can squarely locate the zeroth place I will
> understand much better your more consistent system of
> the free mind.
>
I'm simply not interested in defining that term at all.
Nor do I care to add PENULTIMATE to the REBOL lexicon,
even though I can find *that* term in some dictionaries.
> ... the relative late "discovery" of zero is suggestive of
> the fact that humans weren't initially inclined to include
> zero in their numbering systems ...
>
We've already covered this. The ancient greeks also didn't
consider "one" a true number. Most people of the middle
ages still believed that the sun revolved around the earth.
The common man in the 1800's had never heard of a computer.
In 2001, John Q. Public probably *still* uses neither "parse"
nor "data type" in everyday conversation.
And I'll be quite surprised if you claim to balance your
checkbook using Roman numerals.
> ... and it seems you're may be eager to dispose of our
> friend "zeroth" for the convenience of FIRST's definition.
> But perhaps I'm missing something...
>
Perhaps all of my examples have made my point too easy to
miss...
Natural language is fuzzy, messy, ambiguous, obscure, and
nearly infinitely flexible. That makes it wonderful for
conversation, jokes, wordplay, romance, and puns, but
terrible for precision (as in treaties, contracts, or
program specifications).
Computer programming requires precision.
Programming languages (along with most other things!) are
more easily learned and used if their designs are carefully
guided by the values of simplicity and consistency.
To lull the newcomer into a false sense of security by
offering familiar-looking terminology which is actually
used inconsistent and highly subtle/complex ways, is to
be penny-wise and pound-foolish IMHO.
Neither "zeroth" nor "first" are friends of mine, especially
if "first" is overloaded with meanings that have nothing to
do with any logically inherent order (as with functions or
objects).
However, as a way of referring to the elements of an ordered
collection, I submit that understanding "first" as meaning
preceding all others
is sufficiently intuitive as to need
little explanation. (Regardless of addressing scheme.)
Other languages have used other solutions, such as "head" to
refer to the leading element in an ordered collection.
If we are going to try to use common, everyday terms in our
programming languages, I suggest that we should:
1) give preference to the most common ones (e.g. "first"
being much more common than either "penultimate" or
"zeroth",
2) scrupulously use those terms as precisely and consistently
as possible, following the principle of least surprise, and
3) exercise severe self-control (I assume we won't be seeing
definitions for "seventeenth" and "twentythird" in
REBOL/View 1.3 ;-)
Finally, I should thank you for putting to rest one other
issue that has been troubling the list for some time...
Based on your absolute insistence that "first" means 1,
second
means 2, etc., and the fact that
>> sort reduce [true false none]
== [none false true]
we are now able to conclude confidently that
none = 1
false = 2
true = 3
I'm greatly relieved to have this settled! ;-)
-jn-
------------------------------------------------------------
Programming languages: compact, powerful, simple ...
Pick any two!
joel'dot'neely'at'fedex'dot'com