Hacker News new | ask | show | jobs
by aqueueaqueue 471 days ago
Yeah but why wasn't that converted to human 1 based indexing at the machine code level or assembly in early machines?

Maybe because they didn't want to "hide the bicycle gears"?

1 comments

No, it's because it doesn't make any sense to do that. It would add a ton of complexity for no benefit.
It does make some sense: if I have some apples, and I ask a child to count them, they'll address each one starting with the number 1, not the number 0.
Indexing/addressing is not counting though. Look at a ruler. It doesn't start at 1.
Thanks that made it click.

While I understand the CS concepts, I have never really thought about the developer UX before.

Yes, indeed. But when indexing to an element in an array you aren't measuring from a zero (well, in memory you are, but not conceptually). You're conceptually pointing at an apple.
> But when indexing to an element in an array you aren't measuring from a zero (well, in memory you are, but not conceptually).

Yes you are!! In memory, and conceptually. You're conceptually moving your finger 0 spaces from the start of the apple array.

I think maybe it's just hard to unlearn the offset mentality. Of course you can convert a direct index mentality to an offset mentality, but I don't think anyone is pointing at the first item in a row of items and thinking "that's a zero offset from the start of the number of items". They're thinking, "That's item number 1".