> -- Info21 писал(а):
> Ещё раз: так же, как нуль даёт возможность "регуляризовать" алгоритмы арифметики,так же, как цикл why оказывается в целом самым удобным ровно потому, что допускает повторение нуль раз,так же, как рекурсивные процедуры, обрабатывающие "нулевой случай", приводят к более компактным и ясным программам, чем в противном случае,-- совершенно в той же струе лежат наблюдавшиеся ситуации, где допущение массивов нулевой длины "регуляризовало" бы код.По умолчанию программа должна корректно обрабатывать "нулевой случай".Правило базовой техники программирования.Вопрос о том, почему оно не распространено на массивы.
Нулевой случай не всегда должен обрабатываться как нормальный случай. Разыменовывать нулевой указатель нельзя. Приводить нулевой указатель к другому типу (по крайней мере в Oberon-07) нельзя. Делить на нуль нельзя

Если будут массивы нулевой длины, то к ним нельзя будет обращаться через оператор обращения к элементу массива [] ни с каким значением. То есть по сути оператор [] для них будет запрещен. Получается, что ко всем массивам можно будет обращаться по оператору [] (в заданных пределах, чтобы не выйти за границы массива), а к операторам с нулевой длиной нельзя.

Если уж очень хочется, то можно же легко создать свой тип, например, Vector, который сможет быть нулевой длины.

P.S. В книге Вирта читал про поиск с барьером, когда, пишут не:
## Код:
```
i := 0;
WHILE (i < Number) & (array[i] # searchingValue) DO
  i := i + 1;
END;
```

а пишут:
## Код:
```
array[Number] := searchingValue;
i := 0;
WHILE array[i] # searchingValue DO
  i := i + 1;
END;
```

При этом необходимо чтобы массив был на 1 элемент больше, чем требуется хранить элементов.
И по аналогии с этим Вы всегда можете использовать массивы на 1 элемент больше и тогда массивом нулевой длины будет реальный массив из 1 элемента.