Автор Тема: Потеря идентификатора модуля в Delphi  (Прочитано 15126 раз)

Илья Ермаков

  • Full Member
  • ***
  • Сообщений: 177
    • Просмотр профиля
    • OberonCore
Re:Потеря идентификатора модуля в Delphi
« Ответ #15 : Апрель 14, 2011, 11:43:37 pm »
По полному имени обращаемся к внешнему идентификатору. Внутри модуля его имя неизвестно. Его самого ещё как бы нет. Даже технически - модуль только компилируется, откуда ему быть.

Ваша логика тоже понятна, и не менее логична, чем моя :)
Но к чему огород городить (в случае, если полная квалификация в языке обязательна). Тупее - так, как есть в Обероне. Тупее = меньше мест для каких-то потенциальных проблем.

DIzer

  • Гость
Re:Потеря идентификатора модуля в Delphi
« Ответ #16 : Апрель 15, 2011, 07:12:31 am »
Правило затемнения - отлично. Но при чём тут оно к возможности при этом обращаться к любому идентификатору по полному имени? Вы вспомните файловую систему. Краткое имя обращается к файлу в текущем каталоге, но кто мешает явно указать путь до родительского? В чём концептуальная проблема?
Вы про что вообще говорите: 1. Про свое ЛИЧНОЕ мироощущение  2. Общепринятые нормы  3. Ошибку в компиляторе Делфи(его несоответствие нормам Объектного Паскаля),
4. Несоответствие  Объектного Паскаля  общепринятым нормам.?
Я так понял (из исходного сообщения), что о п.3 и п.4 и ответил вам -т.е. не обнаружил ни ошибки  ни разрыва в моем понимании Делфи и общих принципов (слава богу).

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re:Потеря идентификатора модуля в Delphi
« Ответ #17 : Апрель 15, 2011, 09:38:14 am »
По полному имени обращаемся к внешнему идентификатору. Внутри модуля его имя неизвестно. Его самого ещё как бы нет. Даже технически - модуль только компилируется, откуда ему быть.

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

Правило затемнения - отлично. Но при чём тут оно к возможности при этом обращаться к любому идентификатору по полному имени? Вы вспомните файловую систему. Краткое имя обращается к файлу в текущем каталоге, но кто мешает явно указать путь до родительского? В чём концептуальная проблема?
Вы про что вообще говорите: 1. Про свое ЛИЧНОЕ мироощущение  2. Общепринятые нормы  3. Ошибку в компиляторе Делфи(его несоответствие нормам Объектного Паскаля),
4. Несоответствие  Объектного Паскаля  общепринятым нормам.?
Я так понял (из исходного сообщения), что о п.3 и п.4 и ответил вам -т.е. не обнаружил ни ошибки  ни разрыва в моем понимании Делфи и общих принципов (слава богу).
Я говорю про практику. Делфи, Free Pascal, Virtual Pascal как минимум поддерживают нотацию обращения к своему модулю. Но при этом они не поддерживают чуть более длинную нотацию, чтобы от имени своего модуля перейти к другим модулям: A.B.Const. Вот эта длинная нотация помогла бы решить проблему. Ну и в целом высказал пожелание, чтобы и к подпрограммам применить это правило и дать возможность ссылаться на Proc.Consts, указав, что отношение между подпрограммой и дочерней подпрограммой точно такие же, как между модулем и подпрограммами верхнего уровня.