Why do arrays start at 0?
It really comes down to a choice between a machine-focused (0) or human-focused (1) approach.<p>The 0 makes a lot of sense in a C pointer world where memcpy and other alike functions can be written very thight.<p>The 1 makes a lot of sense in a human world, when we count, we start at 1, we talk about the "1st", counting on finger starts with 1, etc.<p>I once were at a Lua (1 indexed language) conference where this was discussed, and Luis started explaining why Lua was 1-index with this sentence: "The 1st argument ...." :)