Info21 писал(а):
Не вполне понимаю, что тут можно хотеть в плане эффективности по сравнению с тем, что есть в Оберонах
Ну ладно давайте попробуем еще раз.
Несмотря на обнаруженный мной факт, что среди Обероновского сообщества есть люди, которые до этого и сами могут додуматься.
Скажем, в параллель с "химическим" и нервным регулированием в живых организмах, которое создала природа.
Пусть будет так - нервные связи имеют аналогом прямые процедурные вызовы. Зафиксируем это.
Но это абсолютно неизменяемые связи. Типа - ьезусловные рефлексы. И разве природа на этом остановилась ??? Вовсе нет.
Ну как это происходит, скажем, по Турчину... Объекты (подсистемы) клонируются целиком, пытаясь организовать между собой новые связи. Пока не получится "хорошо" - у Турчина это это называется метасистемным переходом (ну или как-то так).
Посмотрите код (внимание - не мой!!!) выше с тремя кнопками и одним плэером. Если бы кнопка была одна - никакаих процедурных переменных и не нужно было бы. Жесткая "нервная связь" была бы вполне себе адекватна.
Но их три.
Согласен в этом случае хватило бы процедурного типа, имеющегося в классическом Обероне.
А также еще и скажу: что и без него можно было бы обойтись. Химия вполне справилась бы.
В данном конкретном примере с тремя кнопками и плэером.
Ну подумаешь - какой-то with пришлось бы ставить - он же типа всего "за семь тиков" делается
Что нам говорит Окамм ??? Правильно, не вводи новую сущность без необходимости. Осталось выяснить, что есть необходимость.
Так вот, введение новой сущности не нарушает данного принципа, если эффективность кода является
показателем назначения (есть такой бюракратический термин).
Если мне пофиг на то, через какое место вырезаются гланды, тогда ДА - процедурный тип должен быть изгнан из языка.
Но Вирт его не изгнал. Следовательно, опять зафиксируем для себя вхождение эффективности результата в критерий "необходимости"
Так, пока мы договорились, что вышестоящий пример из ActiveReport, вполне мог бы обойтись и процедурными типами. "Условный рефлекс" такой, кторый можно и изменить в течении жизненного цикла. При желании-то...
Но я напомню, что природа занимается "метасистемными переходами" все время, а не один раз (склонировавши кнопочку два раза).
Давайте попробуем склонивать несколько раз всю подсистему (3 кнопки + плэер), и организовать из них новую систему (btw: более близкий к жизни пример я приводил в этом топике. В смысле - именно так я и делал, и использовал после этого).
Так вот, если попробуете, то увидите, что для такого клонирования "просто процедурного" типа уже не хватит.
А "делегатного" - хватит. Причем, хватит и на все последующие "метасистемные переходы". (вообще-то - именно это и называется ООП)
Химического варианта - тоже хватило бы. Но новая сущность под ярлыком "процедурный тип" - нужна.
Потому-что необходимость есть. Ибо эффективнее (раннее связывание) и понятнее.
Естественно, надо вводить минимальное количество новых сущностей, коль скоро мы установили ее необходимось.
Таковая одна и есть делегатный процедурный тип - он типа включает в себя процедурный...
И мне приятно, что в Оберон сообществе таки существуют люди, с которыми не надо вести на ту тему религиозных войн.
В смысле, понимают смысл Окамма/Калашникова, а не знакомые буквы в тексте выискивают.