On Tue, 17 Aug 2010 19:15:54 -0700, Russ P. wrote: > The convention of starting with zero may have had some slight > performance advantage in the early days of computing, but the huge > potential for error that it introduced made it a poor choice in the long > run, at least for high-level languages.
People keep saying this, but it's actually the opposite. Signpost errors and off-by-one errors are more common in languages that count from one. A simple example: Using zero-based indexing, suppose you want to indent the string "spam" so it starts at column 4. How many spaces to you prepend? 0123456789 spam Answer: 4. Nice and easy and almost impossible to get wrong. To indent to position n, prepend n spaces. Now consider one-based indexing, where the string starts at column 5: 1234567890 spam Answer: 5-1 = 4. People are remarkably bad at remembering to subtract the 1, hence the off-by-one errors. Zero-based counting doesn't entirely eliminate off-by-one errors, but the combination of that plus half-open on the right intervals reduces them as much as possible. The intuitive one-based closed interval notation used in many natural languages is terrible for encouraging off-by-one errors. Quick: how many days are there between Friday 20th September and Friday 27th September inclusive? If you said seven, you fail. One-based counting is the product of human intuition. Zero-based counting is the product of human reason. -- Steven -- http://mail.python.org/mailman/listinfo/python-list