OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 16:34

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 9  След.
Автор Сообщение
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Пятница, 10 Декабрь, 2010 15:01 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Galkov не пытается внести что-то новое. Он хочет более эффективное, но такое же читабельное (если рассматривать в отрыве от остального кода).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Пятница, 10 Декабрь, 2010 15:31 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Valery Solovey писал(а):
Он хочет более эффективное, но такое же читабельное
Не вполне понимаю, что тут можно хотеть в плане эффективности по сравнению с тем, что есть в Оберонах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 11:49 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Valery Solovey писал(а):
Он хочет более эффективное, но такое же читабельное (если рассматривать в отрыве от остального кода).
У Вас очень хорошо и ПОНЯТНО получается подвести итог :D
А вообще-то, я уже ничего не хочу.
Скажем, понятно (по ответам) - это не форум разработчиков. Но ведь можно же явить просто научную честность... Не дождусь наверное.
Ибо ответ из серии: "докажите что это мне будет нужно" - применим к любому вопросу, по любому поводу, с абсолютно предсказуемыми результатами доказательства (любого).
Кстати говоря, я на Вас удивляюсь, Валерий: неужели там Вы не могли зарание предсказать результата :)

Но вот чего я обнаружил в ActiveReport/Delegate Procedure Types (btw: ну мне-то извинительно не знать сразу всех разновидностей Оберонов - но ведь НИКТО не показал пальцем же !!!):
Код:
TYPE
  MediaPlayer = OBJECT
    PROCEDURE Play; .... play a movie .... END Play;
    PROCEDURE Stop; .... stop movie .... END Stop;
  END MediaPlayer;

  ClickProc = PROCEDURE {DELEGATE};
  Button = OBJECT
    VAR
    onClick: ClickProc;
    caption: ARRAY 32 OF CHAR;

    PROCEDURE OnClick;
    BEGIN onClick END OnClick;

    PROCEDURE & Init(caption: ARRAY OF CHAR; onClick: ClickProc);
    BEGIN SELF.onClick := onClick; COPY(caption, SELF.caption)
    END Init;
  END Button;

PROCEDURE Init(p: MediaPlayer);
  VAR b0, b1, b2: Button;
BEGIN
(* Reboot -> call system reboot function *)
  NEW(b0, "Reboot", System.Reboot);
  (* MediaPlayer UI: bind buttons with player instance *)
  NEW(b1, "Play", p.Play);
  NEW(b2, "Stop", p.Stop);
END Init;
Казалось бы - ОНО...
Однако там же, в приложении "Active Oberon Syntax", магическим словом DELEGATE уже и не пахнет...
А господин Мюллер в своем диссере просто мимоходом (типа Miscellaneous) замечает:
Цитата:
Procedure types have been extended so that procedure variables can also store references to methods, not just to normal procedures. A procedure variable now also stores a reference to an object instance, which is NIL in the case of normal procedure variables. The type of a method is identical to that of a procedure with the same signature, making it compatible with procedure variables of the same procedure type.
Тоже непонятно ведь - неужели "барьеры" на использовании... Хотя, каким-нибудь хитрым регистровым соглашением это можно зарешать, наверное.

Может нам Украинские Коллеги распояснят ситуацию :?: :)
Как говорил классик: "... уже не в очках дело. Пусть скажут - они есть, или их нет"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 13:04 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Galkov писал(а):
Однако там же, в приложении "Active Oberon Syntax", магическим словом DELEGATE уже и не пахнет...
Хоть и не пахнет но активно поддерживается, и более того, достаточно произвести поиск в коде системы A2 и можно увидеть, что не только поддерживается а ещё и активно используется.
Описание синтаксиса Active Oberon устарело, актуально поддерживаемый компилятором (PaCo) Active Oberon в некоторой степени отличается. Кроме того идёт работа над новым компилятором (OC) который будет включать как неотъемлемую часть ещё и новые динамические массивы и расширенные векторно/матрично/тензорные операции. Возможно в скором времени выйдет новое "Сообщение об Активном Обероне".
Что-то в основном только жителей Украины и интересует А2... :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 13:13 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Info21 писал(а):
Не вполне понимаю, что тут можно хотеть в плане эффективности по сравнению с тем, что есть в Оберонах
Ну ладно давайте попробуем еще раз.
Несмотря на обнаруженный мной факт, что среди Обероновского сообщества есть люди, которые до этого и сами могут додуматься.

Скажем, в параллель с "химическим" и нервным регулированием в живых организмах, которое создала природа.
Пусть будет так - нервные связи имеют аналогом прямые процедурные вызовы. Зафиксируем это.
Но это абсолютно неизменяемые связи. Типа - ьезусловные рефлексы. И разве природа на этом остановилась ??? Вовсе нет.
Ну как это происходит, скажем, по Турчину... Объекты (подсистемы) клонируются целиком, пытаясь организовать между собой новые связи. Пока не получится "хорошо" - у Турчина это это называется метасистемным переходом (ну или как-то так).

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

Так, пока мы договорились, что вышестоящий пример из ActiveReport, вполне мог бы обойтись и процедурными типами. "Условный рефлекс" такой, кторый можно и изменить в течении жизненного цикла. При желании-то...

Но я напомню, что природа занимается "метасистемными переходами" все время, а не один раз (склонировавши кнопочку два раза).
Давайте попробуем склонивать несколько раз всю подсистему (3 кнопки + плэер), и организовать из них новую систему (btw: более близкий к жизни пример я приводил в этом топике. В смысле - именно так я и делал, и использовал после этого).

Так вот, если попробуете, то увидите, что для такого клонирования "просто процедурного" типа уже не хватит.
А "делегатного" - хватит. Причем, хватит и на все последующие "метасистемные переходы". (вообще-то - именно это и называется ООП)
Химического варианта - тоже хватило бы. Но новая сущность под ярлыком "процедурный тип" - нужна.
Потому-что необходимость есть. Ибо эффективнее (раннее связывание) и понятнее.
Естественно, надо вводить минимальное количество новых сущностей, коль скоро мы установили ее необходимось.
Таковая одна и есть делегатный процедурный тип - он типа включает в себя процедурный...

И мне приятно, что в Оберон сообществе таки существуют люди, с которыми не надо вести на ту тему религиозных войн.
В смысле, понимают смысл Окамма/Калашникова, а не знакомые буквы в тексте выискивают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 13:15 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Ярослав Романченко писал(а):
Что-то в основном только жителей Украины и интересует А2... :wink:
И ведь что занимательно...
Я ведь тоже свое отбыл :lol: Северодонецк с 1984-2000


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 13:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Galkov писал(а):
Info21 писал(а):
Не вполне понимаю, что тут можно хотеть в плане эффективности по сравнению с тем, что есть в Оберонах
Ну ладно давайте попробуем еще раз. ...
В смысле, понимают смысл Окамма/Калашникова, а не знакомые буквы в тексте выискивают.
Спасибо за комплимент, конечно, но ... "Could you say it ... shorter?" (C)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 14:00 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Делегаты - ещё один объект, которым придётся управлять сборщику мусора...
Размер делегата становится 2*sizeof(pointer)...
Много технических нюансов.
А нужно всё равно редко. 7 тактов дороги только для встроенки. Ну так для низкоуровневых вещей отдельно можно расширить язык и спец. компилятор.

А в софте общего назначения провоцировать народ на делегаты вместо сообщений тоже незачем. Процедурные переменные вот крайне редко используются прикладниками. Больше callback-объекты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 15:02 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Илья Ермаков писал(а):
Процедурные переменные вот крайне редко используются прикладниками. Больше callback-объекты.
Ну не скажите, используются, используются :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 15:08 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Прикладниками?

Обычно "по инерции". Потому что в любой прикладной задаче выгоднее объект сразу заложить. ОбщЕе для развития. Ту же функцию представить удобнее объектом. Можно научить её потом всякое о себе рассказывать и сообщения обрабатывать. И т.п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 15:36 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Илья Ермаков писал(а):
Делегаты - ещё один объект, которым придётся управлять сборщику мусора...
Размер делегата становится 2*sizeof(pointer)...
Много технических нюансов.
Илья Евгеньевич, ну мы же все обсудили уже.
Не еще один, а ровно столько же.
"Химия" указывает на объект в хипе. Делегат - это встроенный тип, который тоже только один раз (столько же!!!) указывает в хип. Ничем он не хуже обыкновенного указательного типа. И заниматься им сборщику мусора надо ровно столько же, сколько и указательным типом.
Для сборщика мусора - это еще одна разновидность слота, не более.
Что Вы такое говорите... Какой такой "управляемый объект", побойтесь бога.


Илья Ермаков писал(а):
в софте общего назначения провоцировать народ на делегаты вместо сообщений тоже незачем.
Удивляюсь порой. Ну все Вы за народ знаете.
То, что приведено из ActiveReport - это вовсе НЕ объекты в хипе. Обыкновенный базовый тип. Причем не + к имеющимся, а вместо процедурного типа. Даже новую сущность не вводили, а расширили старую. Чтобы "метасистемные переходы" не имели ограничения на каскадность.
Тут как я думаю: если Вы считаете патерн "метасистемных переходов" не должен поддерживаться неким языком, то не надо называть его - языком общего назначения.

А народ (к каковому я себя причисляю), по опыту KOL-а, считает сии сущности значительно более простыми и понятными, чем соответствующий патерн от Банды 4-х.

Посмотрите просто на код из ActiveReport, и покажите пальцем на страшно провакационное место. Можно еще переписать этот же код (с тремя кнопками и плэером) на использование родовой шины, и попробовать убедить народ в его большей понятности.
Ничего у Вас не выйдет :P В смысле - не убедите, наверное.

_______________________________________________________
P.S. Илья. Мне показались Ваши рассуждения прекрасным примером "поставленной техники применения шаблонов". Раз делегат - значит как в додиезе. Раз как в додиезе - значит динамический объект. Так ? :)
Побойтесь бога. Слово Делегат произнесено даже не мной, а Обероноцами (очень активными типа)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 16:27 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Не понимаю, как Вы собрались указывать на процедуру объекта не в хипе?

Что есть этот ваш PROCEDURE OF OBJECT внутри.

Это два указателя: адрес процедуры + адрес экземпляра, для которого вызывается процедура.

Разумеется, адрес экземпляра может указывать только на кучу (в силу принципа герметичности указателей).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 16:30 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Info21 писал(а):
Спасибо за комплимент, конечно, но ... "Could you say it ... shorter?" (C)

Если честно, я говорил про Активных Оберонцев - это им не надо объяснять полу-функциональность процедурного типа. Сами додумались. И Калашникова правильно использовали: не добавили новую сущность а изменили (дополнили) функциональность уже имеющейся.
Мне бы до такой простоты долго додумываться пришлось. В одиночку-то.

Насчет Could... Могу. И сэйнул бы, но опять же - не поймете ничего, и по этой уважительной причине объявите все это клеветой на Обероны.

Вот, скажем, очень короткое заключение: "если Вы считаете патерн "метасистемных переходов" не должен поддерживаться неким языком, то не надо называть его - языком общего назначения"
Т.е., AO - значительно в большей степени язык общего назначения, чем CP. Коротко и понятно.

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

Для меня это пока открытый вопрос...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 16:38 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Цитата:
Вот, скажем, очень короткое заключение: "если Вы считаете патерн "метасистемных переходов" не должен поддерживаться неким языком, то не надо называть его - языком общего назначения"
Т.е., AO - значительно в большей степени язык общего назначения, чем CP. Коротко и понятно.


С какой это стати некая "умозрительная заумь" Турчина (может, и любопытная для чтения на досуге, но...) должна становится критерием для оценки языков?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 16:45 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Galkov писал(а):
Т.е., AO - значительно в большей степени язык общего назначения, чем CP. Коротко и понятно.


АО - в значительно меньшей степени язык общего назначения, чем КП, в силу того, что содержит всё большее количество узкоспециализированного мусора вроде перегрузки операций, матриц-векторов, ООП в стиле имитационного моделирования...

И вообще, что АО? Полигон для стьюдентов. Это, конечно, красивая тема для курсовой или диплома - чо-нить ещё воткнуть в компилятор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 16:48 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Илья Ермаков писал(а):
Не понимаю, как Вы собрались указывать на процедуру объекта не в хипе?
Что есть этот ваш PROCEDURE OF OBJECT внутри
Давайте немного уточним: я лично ничего не изобретал. Это все сто лет работает в Дельфи. И, оказывается - уже давно в AO.
Чего там понимать - взяли и посмотрели.
И никто никогда не напрягает мусоровоз - ну где Вы увидели хоть какой-то намек на какой-нибудь NEW из ActiveReport ???
И в Дельфи я ничего такого не припоминаю... Хучь убей.

Грубо говоря - я не понимаю, чего Вы не понимаете :)
Возможно, станет понятно, если Вы "покажите пальцем на страшно провакационное место"
По буковкам-то и установим наше разночтение.

Илья Ермаков писал(а):
Это два указателя: адрес процедуры + адрес экземпляра, для которого вызывается процедура
Ну да. Для Дельфи. Для AO - вот я привел цитату из Мюллера. Очень похоже, что больше про это у него ни слова (в смысле - не дочитал еще).
Ну я вижу, что это один к одному как procedure of object в Дельфи. Но в упор не вижу вновь созданных динамических объектов. И где Вы их увидели - не пойму...

Обратную совместимось с простым процедурным типом можно было бы сохранить, если арументы из сигнатуры запихать в стек, а SELF - в регистр (лично я пихал бы в ebx - не противоречило бы и аргументам в регистрах а-ля в Дельфи). Но это (про обратную совместимость) уже мои личные фантазии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 16:56 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Илья Ермаков писал(а):
С какой это стати некая "умозрительная заумь" Турчина (может, и любопытная для чтения на досуге, но...) должна становится критерием для оценки языков?
Вы могли бы читать не по диагонали, и увидеть, что я лично назвал эту "заумь" - ООП
Если Вы считаете как-то по другому, то это не значит, что правы именно Вы.
Мне думается, что Вы неправы. С чем я Вас и поздравляю.

Это (эффективность некого патерна) могло бы быть поводом для обсуждения без относительно фамилии Турчина.
Но если Вам удобнее слюной брызгаться...... Да пожалуйста - без меня.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 17:00 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Вот, хотя-бы для паттерна Strategy viewtopic.php?p=55707#p55707 очень полезен процедурный тип, но это даже не ООП, а как-раз жесткая критика ООП :D


Последний раз редактировалось Ярослав Романченко Четверг, 16 Декабрь, 2010 17:03, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 17:00 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
При чём тут уважаемый Валентин Турчин.
Он не несёт ответственность, что его философского характера опусы кто-то будет приплетать как аргумент в конкретных инженерных вопросах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналог procedure of object в КП
СообщениеДобавлено: Четверг, 16 Декабрь, 2010 17:01 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Цитата:
что я лично назвал эту "заумь" - ООП


Да нет никакого ООП... как авторитетной теории, с позиций которой можно что-то доказывать.

Есть механизмы конкретные.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB