Lua, a Misunderstood Language (2021)
&gt; We usually start to count from one. When a baby completes its first roundtrip around the Sun, they’re one year old, not zero years old.<p>And before they complete the first trip, they&#x27;re 0 years old, showing that you start from a count of 0. The one is the result from the first increment.<p>If I ask you to count the number of red balls in a bag with only 3 yellow balls, then the initial count in your head is 0, you inspect the balls one by one, never encountering a red ball, and thus never incrementing the count. And then you pronounce your final count of 0. So that&#x27;s counting starting from 0.<p>What you call &quot;starting at 1&quot; is not so much the start as it is the first increment, which need not arise.<p>For arrays, the first element is the difference between a size 0 array and a size 1 array. So the choice between 0-indexed and 1-indexed is like the difference between pre-increment and post-increment. Do we associate the element with the array size up to the element, or to the array size up to and including the element? The choice seems arbitrary 
(personally I prefer using the same range of non-negative numbers for both, but language has a bias for associating &quot;first&quot; with index 1).