По поводу нумерации элементов массивов. Попрограммировав чуток на Fortran я пришёл к выводу, что в Fortran всё правильно сделано. И в старом-добром Pascal тоже. То есть как захотель - так и пронумеровал. Хочу с 0, хочу с 1, хочу с -100.
Тут вот какое дело. С нуля да, нужно бывает. Когда нужны массивы. Это чёрти знает что, на самом деле, эти массивы. Тут таки всплывает это ваше смещение. Вот когда нужно это смещение - это массивы. И нужно нумеровать с 0.
Но! Часто (и неимоверно часто в Fortran) массивы = матрицы. И в любом учебнике математики все формулки предполагают нумерацию с 1. Для матриц это естественно и удобно. Это математическая абстракция, машинное представление тут идёт лесом. По-умолчанию, в Fortran с 1. В Pascal, вроде, тоже.
А ещё бывает удобно и с -100500 нумеровать.
Так что эти ваши машинные штучки со смещениями... Есть многое на свете, друг Горацио...