4 ms·
I wonder if it was the mathematicians who invented zero indexing, or the comp Sci crowd? I suspect the mathmos were not to blame, and a programmer felt that su
by teknopaul 5y ago
I wonder if it was the mathematicians who invented zero indexing, or the comp Sci crowd?
I suspect the mathmos were not to blame, and a programmer felt that subtracting 1 from the address index and adding the address base was one op too many. Easy to fix: simply changing the entire world's numerical represtation of ordinal numbers.
Once changing ordinal numbers was done, Boolean with the support of null, asci "0“ being 30, and "root" being the first "branch" in every "tree" were comparativly easy to sell on dazed and confused comp sci undergrads.
- gorgoiler 5y agoGiven a pointer to an array, the index is the offset from that pointer.
- Joker_vD 5y agorolls eyes Index/offset N has semantics of "skip N elements". To get the 1st element, you skip 0 elements. That's it. Combining "skip M" and "skip N" operations is easy: their total effect is "skip M+N". Combining "get Mth" and "get Nth" operations is, pedantically speaking, meaningless, but is usually understood to mean "imagine Mth was actually the 1st, then get Nth" which in less confusing terms is "skip M-1 elements, then get Nth" which is equivalent to "get (M+N-1)th" operation (Exercise for the reader: convince yourself that the right answer is actually "get (M+N+1)th", then re-convince yourself that the right answer is "get (M+N-1)th"). I personally think always operating in "skip X" is easier than having "get Xth" to sometimes mean "actually, don't get anything, just skip X-1, then...".
- goto11 5y agoZero indexing comes from pointer arithmetics, where the memory address of an array is the same as the address of the first item. So the address of the n'th item is: address_of_array + size_of_item * (n - 1) Hence array[0] is the first item, array[1] is the second item and so forth. Zero-based indexing does not change the meaning of ordinal numbers. You just have to be aware that ordinal numbers are different from index offsets.
- simiones 5y agoIt's mathematicians. Most notably, both the ordinal numbers and the cardinal numbers start at 0. 0 the cardinal number is the number of elements of the empty set, the smallest possible set. 0 the (von Neumann) ordinal number is defined as the empty set {}; 1 is the set composed of the empty set, {{}}; 2 is the set composed of 0 and 1: {{}, {{}}} and so on. Thinking of 1 as the zeroth number is only useful because of a quirk of human language and history.