Hacker News new | ask | show | jobs
by erezyehuda 2851 days ago
Dijkstra gave pretty concise justification for 0-indexing, so I wouldn't reduce it down to "authority" for why people use it. While I'm personally comfortable hopping back and forth between conventions, is there any deeper justification for using 1-indexing? "Vast majority of people" seems like the same meme you're rejecting for 0-base.
1 comments

I wouldn't say there's any deeper justification for 1-based indexing but neither is there for 0-based indexing. But convention is a pretty good reason for 1-based indexing. Regarding Dijkstra, I don't buy the specific argument he originally made about sequences much less the generalized argument that has become a meme now.

His main argument is that a <= i < b (everything integers) is less "ugly" because b-a is the length of the sequence and a <= i < a is an empty sequence. And because you must use the above convention, 0 <= i < N is "nicer" than 1<= i < N+1. I don't buy his a <= i < b premise (b-a+1 is not exactly hard to write and similarly a <= i <= a-1 for an empty sequence is not impossible to write).

There is nothing wrong with a <= i <= b. It is inclusive on both sides which is much less confusing than inclusive on one side and exclusive on the other (just look at python's ranges for how it can get confusing; range(5) means 0,1,2,3,4 ...seriously? Where did my 5 go? And range(a,b) meaning a <= i < b is so much more confusing than inclusive ranges). When you use inclusive ranges, you can actually see the numbers that are on both sides of the sequence. So, if we use this convention, then 1 <= i <= N is much "nicer" than 0 <= i <= N-1.

Aside from my argument about inclusive ranges, the fact is that both inclusive ranges and 1-indexing have thousands of years of convention behind it's back. This should not be discounted since math is a language, language is for communication, and communication depends on conventions.