3 ms·
I take your point here - but no developments in numeracy include counting objects from zero.
by ronaldx 13y ago
I take your point here - but no developments in numeracy include counting objects from zero.
- pubby 13y agoWhen you use a count variable in programming, do you initialize it to 1?
- ronaldx 13y agoMaking this argument agrees with my general point: that high-level programming languages ought to count as humans do.
- pubby 13y agoMy point was that it's rather awkward to count from 1 when doing programming. For instance, could you rewrite this function where int count = 1; and have it still be intuitive? int count_occurrences(std::vector<int> vec, int value) { int count = 0; for(int i = 0; i != vec.size(); ++i) { // using 0-based index if(vec[i] == value) ++count; } return count; } My attempt is: (look how ugly!) int count_occurrences(std::vector<int> vec, int value) { if(vec.empty()) return 0; count = 1; for(int i = 2; i <= vec.size(); ++i) { // using 1-based index if(vec[i] == value) ++count; } return count; }
- zenojevski 13y agoIt's only `i` (the index) that's meant to begin from 1. `count` is a quantity, not an index, and there are such things as "zero apples". But you start counting them from the first one.
- tg3 13y agoAs another commenter pointed out, it's only the indices that are one-based. I think it would look something like this: int count_occurrences(std::vector<int> vec, int value) { int count = 0; for(int i = 1; i <= vec.size(); ++i) { // using 1-based index if(vec[i] == value) ++count; } return count; } Off the top of my head, this has a number of benefits in higher level languages. For instance in Javascript, here are some common inconveniences caused by zero-based indices: var lastEl = arr[arr.length - 1]; if(arr.indexOf(someEl) !== -1) { // do something knowing that someEl is in the array } and if we lived in a one-based world, here's what they would look like: var lastEl = arr[arr.length]; if(arr.indexOf(someEl)) { // do something knowing that someEl is in the array }
- cliffbean 13y agoI agree that it's not at the same level, but there certainly are developments.
- lukeschlather 13y agoThat's because making the switch from 1-indexing to 0-indexing is extremely counter-intuitive. However, take a hypothetical person who learned 0-indexing socially from birth, I'd imagine they'd be just as confused by 1-indexing.
- mtdewcmu 13y agoComputers aren't a development in numeracy?