>>266
配列を配列の配列のように扱いたい場合、
0 から始まった方が便利。

インデックス i, j が与えられた場合、
0 から始まる場合は i * SIZE + j だけでいいけど、
1 から始まる場合は (i - 1) * SIZE + j と、-1 が必要になる。

とか何とか、色々と 0 から始まった方が計算量が少ない事が多い。
一部逆もあるんだけどね。

0 から始まるというイメージは、C をやった方が分かりやすいと思う。
C だと「始点 + インデックス」の位置にある値を参照するという処理になってるから、
1 から始まると始点がムダになる。
始点をズラすと、始点の値を使いたい時にまたズラさないといけない。

他の言語も、このあたりのイメージを受け継いでるんじゃないかな。