Zooko O'Whielacronx wrote me the following insightful message a few
weeks ago:
Is there a list for "discussion of things that were posted to
kragen-tol"?.
I liked someone's explanation -- citation forgotten -- of why we
use half-open ranges for indexing.
It went like this:
If a human is counting out dollar bills on the table, he puts the
first one down, and he *simultaneously* says "one". Then he puts
the second one down at the same instant that he says "two" and so
forth.
But computers (and high level programming languages) don't have an
easy way to express that you *simultaneously* (atomically) do two
things.
So for modern high level programming languages, you need to
choose: are you going to say "There are zero here." and then put
down one, or are you going to say "There will be one here soon."
and then put down one.
This argument makes me think 0-indexed is obviously right.
Regards,
Zooko