4 ms·
A rare case where 1-based indexing is more convenient is complete binary trees laid out breadth-first (as in a standard binary heap): parent is i div 2 and chil
by mananaysiempre 4y ago
A rare case where 1-based indexing is more convenient is complete binary trees laid out breadth-first (as in a standard binary heap): parent is i div 2 and children are 2i and 2i+1 when starting at one and who knows what when starting at zero. But that’s the only one I know.
- btilly 4y agoWith 0-based indexing the children are at 2i+1 and 2i+2. The parent is at (i-1) div 2. Not hard to figure out.
- JadeNB 4y ago> With 0-based indexing the children are at 2i+1 and 2i+2. The parent is at (i-1) div 2. > Not hard to figure out. While that's true, "you just shift by 1" is equally good at all arguments for or against 0-based indexing, so deploying it here probably won't convince.
- btilly 4y agoI was not trying to convince. That said, the effort of one versus the other is so trivial that there is no point in ever using effort as an argument either way. Doubly so because what seems like effort to us is simple unfamiliarity. What is important is which one leads to more careless errors in practice. As a trivial example, consistent indentation takes effort, but failing to do it leads to more careless errors. Therefore everyone indents code. The only data point I've seen on that is the side remark about Mesa in https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/E.... That remark, therefore, is the only argument that I care about.
- wizofaus 4y agoExcept 1-based indexing is what we use in normal language. We don't use "zeroeth" or "player (number) zero" etc. And the word "first" is shortened to 1st etc. Personally I think we'd be better off if programming languages stuck to the same convention - off-by-1 errors aren't the hardest problems to deal with but they're still annoying.
- misttar 4y agoThe 2 major blunders in programming: 1) Off by one errors.
- ChickeNES 4y agoWell: https://www.merriam-webster.com/dictionary/zeroth https://www.merriam-webster.com/dictionary/zeroth
- wizofaus 4y agoSure, it's technically a word, but hardly one you'd casually drop into your conversations (with non-programmers)
- Quekid5 4y ago> "player (number) zero" That would be because any game worth playing has at least one player... and so it's natural to continue from there. (In terms of language.)
- OscarCunningham 4y agoYou might have heard of Conway's Game of Life.
- Quekid5 4y agoFair :)
- lokedhs 4y agoThat's confusing ordinal and cardinal numbers. The element with index 0 is the first number. The element with index 1 is the second number, and so on. Using the term "zeroth" is basically some form of showing off (even though it's kinda fun), but will be utterly confusing when you get to the fifty-second element which is the last in a group of 53 elements.
- 4y ago
- naet 4y agoAn incredibly unrare case happens all the time in my work: array[length - 1], or variations of this. Anything involving the last element of the array, and often iterating through the whole array will use something similar at some point.