Shamelessly stolen from Reddit. No source in the original post.

  • palordrolap@fedia.io
    link
    fedilink
    arrow-up
    4
    ·
    13 days ago

    Find yourself a language that allows negative indices to count back from the end of an array.

    In those languages, index 0 is usually the first element, but if you’re particularly perverse and negate your indexing, you can start at 1, or rather -1, at the other end and work backwards.

    0-indexing originally comes from needing to add to the array’s base memory address to locate elements. If you have an array at memory address 1234, you might expect to find the first element at that address, which would be 1234+0, and the next at 1234+1, etc.

    1-indexing started as either a deliberate abstraction from that idea, and/or else there’s something else stored at 1234 that the array data type needs and the real elements start at 1234+1.

    All that said, there’s at least one language that insists the indices of an array be of a subtype of some Integer type that must have a limited range. Then you can start and end wherever you like, and the whole 1 vs 0 business is meaningless (except to whoever writes the compilers for that language anyway).