5 comments

[ 3.3 ms ] story [ 20.7 ms ] thread
This is the right answer, In addition I think a CS degree teaches you to how to write algorithms and work experience teaches you to not. And modern practice teaches you to avoid monkeying with array indexes when possible.
Dijkstra is right and so were you once.

0 or 1 based arrays is not a fundamental issue. It's more like little endian vs little endian. It's marginally better if everyone settles for one indexing.

In a good high level language and programming style you rarely need to think in indexes. In a low level language 0-indexing is better.

In low-level languages, an index is literally a pointer offset. p[n] is *(p+n), and 0 makes sense. In higher-level languages, it's a less direct dereference that may or may not be directly mapped in a similar fashion.

Since there's a real basis for 0-indexing and none for 1-indexing, obviously 0 is right.

Those who do not understand Dijkstra are doomed to revinvent him.

There are plausible, though inferior, arguments for 1-based arrays. This person doesn't even manage to make them, though.