If you want first element of list or array you reference it as 0 in many languages (like C or Clojure). Is there are some really good reasons why the programming languages was design this way?
In old days in assembly languages it makes perfect sense because all possible values needs to be used.
But what are nowadays to keep it this way? There is very little advantage when modulo arithmetic and ranges (Wikipedia article.) but not much more.
On a disadvantages side it should be: It makes confusion because it human language the first is connected with 1 (1st and it is not in english only). It makes confusion even in XPath (W3School:"Note: In IE 5,6,7,8,9 first node is[0], but according to W3C, it is [1]."). There are troubles between languages who use 1-based and 0-based system.
Want to know hat are the good reasons to use zero-based numbering and why even creator of new languages (like Clojure) choose this way?