4 ms·
I am curious, what mess did 1-based indexing create for Julia ???
by systems 4y ago
I am curious, what mess did 1-based indexing create for Julia ???
- Jtsummers 4y agoMy understanding (outside the community, I use it but am not hugely familiar with it) is that the 1-based indexing is the default, but you can select any range. Routines that assume 1-based indexing then break on anything that, well, isn't 1-based. See: https://docs.julialang.org/en/v1/devdocs/offset-arrays/ https://docs.julialang.org/en/v1/devdocs/offset-arrays/ Discusses how to generalize the code so it handles arbitrary ranges.
- ModernMech 4y agoIMO 1 based and 0 based is a wash as to which is better, but the only definitive wrong answer is an arbitrary base. It may seem like a good compromise (just use whichever you prefer!), but it opens the door to a mars climate orbiter disaster waiting to happen.
- Jtsummers 4y agoArbitrary indexing is fine as long as people are sane about how they do things and don't assume. In almost every language these days you can use this or something analogous: for x in some_collection Which is great if you don't need the index, and if you do need the index then you want the equivalent of: for i in some_collection.range or for i, x in some_collection.enumerated Being forced to use 0-based or 1-based or even strictly integer-based indexing is the wrong thing. If you want to use characters/runes as your index you should be able to. If you want to use some enumerated type, you should be able to. And if you want some subrange of one of those, you should be able to.
- ModernMech 4y ago> as long as people are sane about how they do things and don't assume. Ime this expectation of developers doesn’t scale reliably. We can’t even trust engineers to keep feet and meters straight. Relying on conventions for correctness is a recipe for disaster.