On Thu, 19 Aug 2010 11:57:53 -0700, Russ P. wrote: > I don't > know where zero-based indexing started, but I know that C used it very > early, probably for some minuscule performance advantage.
In C, zero based indexing was used because it made pointer arithmetic elegant and reduced bugs. > When C++ came > along, it tried to be somewhat compatible with C, so it continued using > zero-based indexing. And because a feature that isn't broken doesn't need to be "fixed". > Then Java was loosely modeled after C++, so the > convention continued. Python was written in C, so zero-based indexing > was "natural." So the whole thing is based on a decision by some guy who > was writing a language for operating systems, not mathematics or > application programming. Python is vastly different from C. It has just as many similarities to Pascal as C, which uses 1-based indexing. No surprise there -- Python, like both Pascal and C, is a member of the Algol family of languages. It is interesting to see that Nicholas Wirth's first language, Pascal, used one-based indexing, and his latest, Oberon, uses zero-based. Say what you like about Wirth, but he's not influenced by the desire to be like C. Oberon uses the same zero-based half-open on the right indexing as Python: VAR a: ARRAY 10 OF INTEGER; creates an array a[0]...a[9]. If Wirth has moved to the Python convention, it is because it *works*, not because he's trying to ape C. Not all languages are based on Algol. Languages derived from Lisp also start array indexing at 0. So does Forth. So that's at least three significantly different language families which have independently converged on zero-based indexing. [...] > I wouldn't have guessed that APL is a "mainstream" language. I said "slightly". It was surprisingly popular in it's time, and there are still multiple APL compilers and interpreters for Windows, Linux and Mac. -- Steven -- http://mail.python.org/mailman/listinfo/python-list