It was not randomly decided. Even before arrays as a language concept existed, you would just store objects in continuous memory.
To access you would do $addr+0, $addr+1 etc. The index had to be zero-based or you would simply waste the first address.
Then in languages like C that just got a little bit of syntactic sugar where the ‘[]’ operator is a shorthand for that offset. An array is still just a memory address (i.e. a pointer).
It really doesn’t make sense to start at 1 as the value is really the distance from the start and would screw up other parts of indexing and counters.
Yeah, but if we went back and time and changed it then there wouldn’t be other stuff relying on it being 0-based.
It was not randomly decided. Even before arrays as a language concept existed, you would just store objects in continuous memory.
To access you would do $addr+0, $addr+1 etc. The index had to be zero-based or you would simply waste the first address.
Then in languages like C that just got a little bit of syntactic sugar where the ‘[]’ operator is a shorthand for that offset. An array is still just a memory address (i.e. a pointer).
It would screw up existing code but doing [array.length() -1] is pretty stupid.
For i = 0; I < array.length; i++
i < array.length
or else you overflow.A lot of languages have a
.last()
or negative indexer ([-1]
) to get the last item though.It doesn’t make sense that the fourth element is element number 3 either.
Ultimately it’s just about you being used to it.