Основная причина - простота. Существующее правило легко понять (вы его четко понимаете) и легко реализовать. Требуемый анализ потока данных (чтобы отличить guish между приемлемым и недопустимым использованием в целом) сложен и обычно не требуется для компилятора, поэтому было сочтено плохой идеей требовать его от компиляторов.
Еще одним соображением являются правила компиляции Ады. Если Proc
передает X
в другую подпрограмму, объявленную в другом пакете, для анализа потока данных потребуется тело этой подпрограммы, но Ada требует, чтобы была возможность скомпилировать Proc
без тела другого пакета.
Наконец, единственный раз, * когда вам понадобятся типы доступа к объектам, - это если вам нужно объявить большой объект, который не помещается в стек, и в этом случае вам не понадобится access all
или 'access
, так что вам не придется иметь с этим дело.
* Истинно как приближение 1-го порядка (вероятно, верно также и во 2-м и 3-м порядке)