5 ms·
Let’s be serious: I yet have to see a convincing argument for 0-based being better than 1-based, or the other way around. And designing a language based on “wha
by stellalo 4y ago
Let’s be serious: I yet have to see a convincing argument for 0-based being better than 1-based, or the other way around. And designing a language based on “what everybody else does” is definitely not the right approach.
- bzxcvbn 4y agoIf there are no convincing arguments one way or the other, then "what everybody else does" becomes the convincing argument. Why change established conventions for no good reason? There's no reason for curly braces to indicate control blocks and square braces to indicate indexing, but if a language swapped the two, what would you say?
- ModernMech 4y agoIndeed, and if you add up all the users of 1-based languages (Fortran, Matlab, R, Excel, etc.) and 0-based languages (C, C++, Java, Python, etc.), I think you’ll find that the 1-based languages have vastly more programmers. Going by popularity, 1-based indexing is the established convention.
- bzxcvbn 4y ago> I think you’ll find that the 1-based languages have vastly more programmers. Any shred of evidence for that? Listing four languages for each won't cut it.
- ModernMech 4y agoExcel alone has more users than all other languages combined, so it's not even close.
- anothernewdude 4y agoAnd how many of those users index anything? Heck given the languages you'd write macros for excel, they really screwed up by picking 1-based.
- ModernMech 4y agoIndexing is the primary operation in Excel and one of the first things you learn how to do in the language (selecting a range of cells). It’s how you refer to anything, by indexing into the global cell space. Given Excel’s massive success and nontechnical user base, which again is larger than all languages combined, it’s hard for me to see 1-based indexing was a mistake. I have experience teaching novices how to program, and 0-based indexing is always a sticking point of confusion. So from my perspective, 1-based indexing is the right choice for excel given the user base and programming style.
- goatlover 4y agoYes, but not so much in scientific computing, where scientists and mathematicians do a lot of the coding.
- kgwgk 4y agoBecause 1-based languages like Fortran, Matlab, R or Mathematica are less used in scientfic computing than elsewhere?
- goatlover 4y agoMore used in scientific computing, which was my point, because only programmers think of indexing based on offset instead of the first positive integer. Nobody outside of programming in C/Unix inspired languages starts counting at 0.
- kgwgk 4y agoI may have misinterpreted you comment. When someone wrote “Going by popularity, 1-based indexing is the established convention” and you replied “Yes, but not so much in scientific computing” I understood that as “1-based indexing is less used in scientific computing compared to general computing”.
- goatlover 4y agoOh, either I replied to the wrong person or misread the parent.
- anonymoushn 4y agoThe argument for 0-based indexing with exclusive upper bounds is that hi - lo == len, that 0-length intervals can be expressed without hi < lo, that if you have found the first index at which a predicate is true and the first index at which it is no longer true, those indices themselves are usable as upper and lower bounds, so you may write my_slice[first_true_idx..first_subsequent_false_idx] to get the sub-slice in which the predicate is true continually, that using mod to restrict indices to the valid range is idx % n rather than (idx - 1) % n + 1. The argument for 1-based indexing with inclusive upper bounds is that binary heaps are easier to write this way. Edit: And that people who are not primarily programmers may find 0-based indexing weird.
- rightbyte 4y ago> Edit: And that people who are not primarily programmers may find 0-based indexing weird Alas, if just our forefathers had called it "offset" instead of "index".
- patrec 4y ago> The argument for 1-based indexing with inclusive upper bounds is that binary heaps are easier to write this way. Nope. The argument for 1-based indexing with inclusive upper bounds is that, to express ranges, exclusive indexes require you to have a bogus just-one-beyond-the-largest-valid-index element and a way to get the successor for every index. This is a giant PITA for anything but integers (MAX_INT, and x+1), which is why every single programming language I can think of also has end-inclusive ranges in some contexts. If you don't believe me try writing regexps with end-exclusive ranges. On the other hand, there is no natural way to express empty ranges with 1-based indexing.
- anonymoushn 4y agoI'd love to learn more about writing regexps with various kinds of ranges. I don't see the issue, but it's very likely that I'm missing something.
- patrec 4y ago