В ALGOL и его последователях, Pascal, Modula, Oberon, Delphi и проч
массивы можно декларировать хоть с 1 хоть с 0, хоть boolean,
перечислимым типом, или начиная с отрицательных индексов. Всё то же
самое для многомерных. Пример: type
TheArray = ARRAY[-39..12] OF SomeType;
Причем компилятор в индексации циклов проверяет и учитывает индексы. Это так, юмора ради.