Владимир Лось писал(а):
По тому, что здесь уже наговорено - ряд мыслев...
1) Проблема с предложением Vlad-ом подобного рода ссылок - в логической нестыковке правил на счёт областей видимости переменных и возможных (или необходимых) местах инициализации таких ссылок.
Согласен, есть такая проблема.
Владимир Лось писал(а):
2) В современных общеупотребительных императивных языках, ситуацию, максимально подходящую под идеи Vlad можно организовать ТОЛЬКО для случая, когда имеется какой-то набор статических данных, а на обработку они отправляются в процедуры с аргументами-ссылками... Почему - см. пункт 1.
Почему обязательно статических и почему именно в виде аргументов?
Код:
PROCEDURE make_data(): Data;
Эта функция всегда возвращает ненулевые данные сколь угодно динамические. Другой вопрос, что конкретно в обероне, ввиду отсутствия механизма исключений, таких функций на практике будет мало (если не перекладывать обработку всех ошибок на ASSERT'ы).
Владимир Лось писал(а):
3) Несколько дальше продвинулся на почве императивщины в направлении Vlad-овских мыслей язык Limbo. Там можно (по причине пересмотра синтаксиса и нотации) совмещать объявления с инициализацией... Собственно, Си/Си++ тоже поддерживает такой способ записи, но по причине 1 и 2 - никто всегда не будет этому следовать... Понятно, что в Обероне это в принципе нельзя ввести. Дело не в какой-то там "ущербности" оберонов... Работает опять-таки принцип "современного логического ассемблера ЯП-ия" : "всё делать явно!"... В том числе и - операции со ссылками...
Не понял. Почему совмещение "объявления и инициализации" несовместимо с "все делать явно"? Такой подход решает проблему из пункта 1. Но я намеренно не стал этого упоминать, чтобы сразу не отпугнуть здешнюю публику, которая как уже выяснилось негативно настроена к упразднению секции VAR
