With this change, you could no longer say “now that we’ve found the fourth object, we finally have four objects”. You’d have to remember to say “now that we’ve found the third object, we finally have four objects” which seems to be a new opportunity to make off-by-one error. It’s not clear to me that you’d be fixing more errors than you’re introducing. I echo WhySpace’s request for more examples of things you’re trying to fix with this change.
Yes, there will always be some off-by-one errors, so the best we can hope for is to pick the convention that creates less of them. That said, the fact that most programming languages choose the zero-based convention seems to suggest that that’s the best one.
With this change, you could no longer say “now that we’ve found the fourth object, we finally have four objects”. You’d have to remember to say “now that we’ve found the third object, we finally have four objects” which seems to be a new opportunity to make off-by-one error. It’s not clear to me that you’d be fixing more errors than you’re introducing. I echo WhySpace’s request for more examples of things you’re trying to fix with this change.
Yes, there will always be some off-by-one errors, so the best we can hope for is to pick the convention that creates less of them. That said, the fact that most programming languages choose the zero-based convention seems to suggest that that’s the best one.
There’s also the revealed word of our prophet Dijkstra: EWD83 - Why numbering should start at zero.
The fact that humans count “one, two, three...” and not “zero, one, two...” does suggest that there is a best one and it’s not zero-based.
Replied to WhySpace, curious what you think.