Илья Ермаков писал(а):
Согласен. Но при чём тут NIL-ы сами по себе
При том, что нет NIL'ов - нет проблем
Илья Ермаков писал(а):
Ну, можно попытаться обязать программиста всегда направлять ссылку на что-нибудь. Тогда вместо NIL будут подставлять заглушки,
Да, но согласитесь, что подстановка заглушки - более осмысленное действие, чем просто NIL
Более явное, как минимум.
Илья Ермаков писал(а):
но в некоторых ситуациях понуждение устанавливать связь сразу может дисциплинировать. Как это оформить синтаксически в классическом ЯП без загромождения - трудно представить, ещё труднее сделать...
Ой, да ладно. Вы там совсем со своим обероном белого света не видите. Можно даже минималистский синтаксис оберона не трогать - достаточно того, чтобы компилятор контролировал, что ссылочные поля вновь созданной записи явно инициализированы и не используются до инициализации (и сама запись не используется). Хотя со стороны синтаксиса сделать это более явно было бы неплохо (заодно с нормальной инициализацией массивов
Илья Ермаков писал(а):
В однородном языке типа Smalltalk можно представить себе, что при создании объекта все его поля-ссылки указывают на некие "пустышки". Т.е. тот же NIL, но он готов обработать (проигнорировать) любое сообщение. Что это даст - тоже непонятно.
Не надо ничего игнорировать. Этим вы все плюсы идеи убьете на корню. Надо инициализировать осмысленными ссылками, причем лучше явно.
Илья Ермаков писал(а):
Можно заменить семантику NIL с "ни на что не указывает" на семантику "ещё не инициализирован". Т.е. уже инициализированную ссылку нельзя превратить в NIL, его вообще явно нет в языке, он только неявно.
Вы все усложняете
NIL просто нет. И все. Вместо NIL есть "что-то" с семантикой "связь может быть не установлена", и чтобы это "что-то" превратить в ссылку надо написать какой-нибудь гвард по аналогии с проверкой типа.