> -- Алексей Елин писал(а):
> Сам Вирт...
...писал, что (статья "От Модулы к Оберону"):
> -- Цитата:
> Тип перечисление слишком простое средство, чтобы выйти из-под контроля. Однако, оно не позволяет распространять расширяемость за пределы модуля. И либо нужно ввести средство для расширения типа перечисление, либо же от типа перечисление надобно отказаться. Причина, по которой мы выбрали второй путь — путь радикального решения — кроется в том, что во все возрастающем числе программ непродуманное использование перечислений (и диапазонов) ведет к демографическому взрыву среди типов, что, в свою очередь, ведет не к ясности программ, а к ее многословию. В связи с использованием экспорта и импорта перечисления приводят к исключению из правил, и согласно ему импорт идентификатора типа также приводит к автоматическому импорту всех связанных с типом идентификаторов констант. Это исключение нарушает концептуальную простоту и создает для реализаторов языка неприятные проблемы.
Короче, использование обычных констант есть слишком простое средство чтобы программист смог запутаться, поэтому вводить перечисления просто незачем. То есть перечисления следовало бы ввести если бы программисты (часто) путались с обычными константами. Но программисты (обычно) не путаются с обычными константами, поэтому вводить перечисления причины нет.

> -- Алексей Елин писал(а):
> Но на самом деле эта проблема решается
Не решается.
Вот был модуль:
## Код:
```
DEFINITION Colors;
  CONST red = 1; green = 2
END Colors.
```

Потом мы его заменили на такой:
## Код:
```
DEFINITION Colors;
  CONST red = 1; green = 2; blue = 3
END Colors.
```

(добавили еще одну константу не изменив старые). Этот новый модуль заменяем со старым модулем. Никакие старые программы перекомпилировать не надо. Но, если бы мы добавили еще одну константу в тип-перечисление, то мы бы изменили этот тип. Отныне, это был бы уже совсем другой тип. Все старые модули, которые использовали старый тип не захотели бы работать с новым типом (абсолютно всесто тыщь мильёновстарых модулей надо было бы перекомпилировать).