That argument never felt very convincing to me. Perhaps because it really is about aesthetics, not some deep philosophical ideas connected to numbers.<p>I see it as rather simple. If you&#x27;re listing off-sets, starting at 0 makes sense, because there&#x27;ll be something there. But if you&#x27;re counting elements starting at 1 makes more sense. I don&#x27;t have 9 fingers offset from my first one, which I call finger zero; I have ten fingers, starting with the first one.<p>A set with no members is the zero set, once you add one element, you have a set of one. An empty list contains no elements. It does not have a first member, because it&#x27;s empty. Add an element, and it will have one member, and it will be in the first position. Not in the zeroeth offset from the beginning.<p>You can the numeric names of letters of a string in an array, but I don&#x27;t see that as a compelling reason for naming the first letter of a word, the letter which is at the zero-eth offset from where the word is held in memory. At best, it&#x27;s a low level optimization, at worst it&#x27;s just a leaky abstraction. Maybe you want to store the length of the word there (like in Pascal), for a different trade-off in terms of what is optimized.