OberonCore
https://forum.oberoncore.ru/

Методы, сообщения, ООП и WITH...
https://forum.oberoncore.ru/viewtopic.php?f=26&t=920
Страница 1 из 5

Автор:  Илья Ермаков [ Воскресенье, 09 Март, 2008 13:07 ]
Заголовок сообщения:  Методы, сообщения, ООП и WITH...

От модератора: начало здесь - viewtopic.php?f=26&t=904

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

Но - КОГДА Я УВИДЕЛ, КАК ОНИ ЭТО НА ЯЗЫК ПОЛОЖИЛИ! Каждому сообщению ставится в соответствие метод, который будет его обрабатывать. Масло масленное. Так ещё масла разного качества. Откатились к идее изначального ООП. Однако, видать, сами этого не знали (ну, как же, нет ООП кроме С++ и Страуструп пророк его), в итоге стали думать, как же это реализовать на суррогатном, ну и реализовали, поверх :-) Молодцы.

Автор:  Vlad [ Воскресенье, 09 Март, 2008 19:25 ]
Заголовок сообщения:  Re: Исходники Singularity

Илья Ермаков писал(а):
Но - КОГДА Я УВИДЕЛ, КАК ОНИ ЭТО НА ЯЗЫК ПОЛОЖИЛИ! Каждому сообщению ставится в соответствие метод, который будет его обрабатывать. Масло масленное.


А как еще можно обработать что-то, кроме как в методе?

Автор:  PGR [ Воскресенье, 09 Март, 2008 20:23 ]
Заголовок сообщения:  Re: Исходники Singularity

Vlad писал(а):
А как еще можно обработать что-то, кроме как в методе?

Можно ещё в switch или WITH ;)

Автор:  Илья Ермаков [ Воскресенье, 09 Март, 2008 20:23 ]
Заголовок сообщения:  Re: Исходники Singularity

Но нафига создавать взаимно однозначное отношение "сообщение-метод", особенно, если делался новый язык (а ведь под Сингулярность # видоизменялся)! Тем самым ослабляя степень виртуальности обмена сообщениями точно до уровня методов... Впрочем, конечно, это моё бурчание после Обероновского WITH. Все мы в той или иной степени мыслим категориями того, на чём работаем... Не будем требовать от МС слишком многого - красивую штуку они таки сделали :-)

Автор:  Vlad [ Воскресенье, 09 Март, 2008 21:46 ]
Заголовок сообщения:  Re: Исходники Singularity

PGR писал(а):
Vlad писал(а):
А как еще можно обработать что-то, кроме как в методе?

Можно ещё в switch или WITH ;)


А switch или WITH будет не в методе?

Автор:  Vlad [ Воскресенье, 09 Март, 2008 21:48 ]
Заголовок сообщения:  Re: Исходники Singularity

Илья Ермаков писал(а):
Но нафига создавать взаимно однозначное отношение "сообщение-метод", особенно, если делался новый язык


А почему нет? Что в этом такого страшного и неестественного?

Автор:  Илья Ермаков [ Воскресенье, 09 Март, 2008 22:13 ]
Заголовок сообщения:  Re: Исходники Singularity

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

Автор:  Wlad [ Воскресенье, 09 Март, 2008 22:54 ]
Заголовок сообщения:  Re: Исходники Singularity

Илья Ермаков писал(а):
Некоторая несуразица и с точки зрения исторической (что от чего произошло), и с точки зрения технической.

Щаз нам тут про быстродействие начнут зурну заводить...

Автор:  Vlad [ Понедельник, 10 Март, 2008 02:04 ]
Заголовок сообщения:  Re: Исходники Singularity

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


Потому что это удобнее, нагляднее и эффективнее, чем свитч. Я хорошо помню времена W3.11 и C (без плюсов), и обработку виндовых сообщений в таких свитчах на несколько экранов. И я помню как стали появляться первые попытки избавления от этих свитчей. И самое что ни на есть естественное решение - это декларация соответствия между конкретным обработчиком и сообщением. Вот и вся история, и не надо ее пытаться повернуть вспять. Что касается технической стороны, то меня вообще мало волнует в какой машинный код это все оттранслируется (достаточно понимания, что нет никаких принципиальных проблем получить в машинном коде все тот же свитч).

P.S. Не оберонщики ли так любят ограничивать свободу? Так вот, жесткое соответствие между событием и обработчиком - это как раз то самое ограничение, которое позволяет избежать анархии и хэков в самописных свитчах.

Автор:  Илья Ермаков [ Понедельник, 10 Март, 2008 02:09 ]
Заголовок сообщения:  Re: Исходники Singularity

Какой свитч, какие хаки?

Селектор не по целому числу, а по динамическому типу сообщения.

Концепция сообщений Windows, между прочим, сделала возможным независимое расширение как сообщений ОС, так и сообщений в конкретном приложении. Концепция "одно сообщение - один метод", конечно, сгодится для отдельно взятой среды разработки (хотя и там это доставляет гемор, как в Дельфе - при вводе Борландом каких-то методов в базовые VCL-классы приходилось перекомпилировать все модули под новую версию Дельфы), но не для ОС же!

А в строго типизированном языке с рефлексией не нужно никаких целочисленных идентификаторов, сам тип объекта говорит, что он за тип :-)

Короче, господам из МС в отношении ООП-технологий надо было учить матчасть, вот и всё.

Автор:  Vlad [ Понедельник, 10 Март, 2008 05:01 ]
Заголовок сообщения:  Re: Исходники Singularity

Илья Ермаков писал(а):
Какой свитч, какие хаки?
Селектор не по целому числу, а по динамическому типу сообщения.


Какая разница? Свитч он и в африке свитч.

Илья Ермаков писал(а):
Концепция сообщений Windows, между прочим, сделала возможным независимое расширение как сообщений ОС, так и сообщений в конкретном приложении.


Угу.

Илья Ермаков писал(а):
Концепция "одно сообщение - один метод", конечно, сгодится для отдельно взятой среды разработки (хотя и там это доставляет гемор, как в Дельфе - при вводе Борландом каких-то методов в базовые VCL-классы приходилось перекомпилировать все модули под новую версию Дельфы), но не для ОС же!


Нет никакой концепции. Есть декларация. Каким боком она может помешать расширению ОС и каким боком здесь какие-то классы VCL? Ну нельзя в обероне выразить такую декларацию, тем хуже для него.

Илья Ермаков писал(а):
А в строго типизированном языке с рефлексией не нужно никаких целочисленных идентификаторов, сам тип объекта говорит, что он за тип :-)


Это вообще из другой оперы. Использование целочисленного идентификатора позволяет расширять систему на любом языке, а не только на обероне.

Илья Ермаков писал(а):
Короче, господам из МС в отношении ООП-технологий надо было учить матчасть, вот и всё.


Ребята из МС учитывают реальный опыт разработки ПО. И правильно делают. Еще раз и по существу: в чем претензия к существованию декларации "сообщение-метод", кроме того, что в обероне так сделать нельзя?

Автор:  Борис Рюмшин [ Понедельник, 10 Март, 2008 09:47 ]
Заголовок сообщения:  Re: Исходники Singularity

Vlad писал(а):
Нет никакой концепции.

Вот в этом и есть проблема. :mrgreen:

Цитата:
Ребята из МС учитывают реальный опыт разработки ПО.

Свой опыт...

Автор:  Илья Ермаков [ Понедельник, 10 Март, 2008 11:33 ]
Заголовок сообщения:  Re: Исходники Singularity

Vlad писал(а):
Еще раз и по существу: в чем претензия к существованию декларации "сообщение-метод", кроме того, что в обероне так сделать нельзя?

Да почему нельзя - можно. Кто мешает компилятор научить, как сделали в Сингулярности.
Только зачем? В Обероне есть селектор типа WITH (которого уж действительно нет в других языках).
И насколько это удобней, знаем на своей шкуре. После обработчиков-методов шина сообщений в BlackBox Framework как просто глоток свежего воздуха :-)

Автор:  Vlad [ Понедельник, 10 Март, 2008 16:27 ]
Заголовок сообщения:  Re: Исходники Singularity

Борис Рюмшин писал(а):
Vlad писал(а):
Нет никакой концепции.

Вот в этом и есть проблема. :mrgreen:


В чем? Или все, что не есть концепция, подлежит уничтожению? Тогда в обероне еще много чего можно отрезать, включая WITH.

Борис Рюмшин писал(а):
Цитата:
Ребята из МС учитывают реальный опыт разработки ПО.

Свой опыт...


Так уж получилось, что их опыт совпадает с опытом большинства разработчиков. Поэтому слово "свой" можно смело опустить и оставить его к употреблению "нетрадиционным" оберонщикам :)

Автор:  Vlad [ Понедельник, 10 Март, 2008 17:00 ]
Заголовок сообщения:  Re: Исходники Singularity

Илья Ермаков писал(а):
Vlad писал(а):
Еще раз и по существу: в чем претензия к существованию декларации "сообщение-метод", кроме того, что в обероне так сделать нельзя?

Да почему нельзя - можно. Кто мешает компилятор научить, как сделали в Сингулярности.


Гы. Ну как всегда - можно доточить компилятор (или рантайм). При этом просто нормального компилятора для того же линукса в природе нет (см. соседнюю ветку). А то что есть под винды - требует оговорок.

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

Илья Ермаков писал(а):
Только зачем? В Обероне есть селектор типа WITH (которого уж действительно нет в других языках).
И насколько это удобней, знаем на своей шкуре. После обработчиков-методов шина сообщений в BlackBox Framework как просто глоток свежего воздуха :-)


Чем это удобнее-то? Или это из серии "for удобнее foreach"?

Автор:  Илья Ермаков [ Понедельник, 10 Март, 2008 17:12 ]
Заголовок сообщения:  Re: Исходники Singularity

Влад, ну едёрна корень, Вы вообще понимаете, что разница принципиальна?

Либо полностью отложенная динамическая обработка (Smalltalk-модель, когда мы посылаем объекту сообщение, и только на этапе выполнения будет определено, как и кто будет его отрабатывать - и сможет ли вообще), т.е. полный полиморфизм и виртуальность, или статическое связывание сообщения, объекта и обработчика на этапе компиляции.

Плюсы есть и в том, и в том - но для статического связывания уже есть понятие вызова метода. Сообщения же вводятся как архитектурный механизм, компонентный механизм масштаба всей ОС - так зачем же "наступать на горло своей же песне"? Ладно, если бы они сознательно рассматривали оба варианта и обоснованно выбрали один. Но этого не было, ребята просто не представляли, что можно как-то по другому. Что и огорчает.

Автор:  Илья Ермаков [ Понедельник, 10 Март, 2008 17:13 ]
Заголовок сообщения:  Re: Исходники Singularity

Vlad писал(а):
Гы. Ну как всегда - можно доточить компилятор (или рантайм).

Так под Сингулярность и делался спец. вариант Шарпа и спец. компилятор.
Иначе бы им вообще не удалось использовать сообщения.
А у нас они давным-давно используются.

Автор:  Wlad [ Понедельник, 10 Март, 2008 17:39 ]
Заголовок сообщения:  Re: Исходники Singularity

Илья Ермаков писал(а):
...Вы вообще понимаете,...

Понимает... И, похоже, что остальные оппОненты - тоже...
Тут, в таком упорстве и притворстве, скорее что-то фрейдовское... :о)

Автор:  Vlad [ Понедельник, 10 Март, 2008 18:06 ]
Заголовок сообщения:  Re: Исходники Singularity

Илья Ермаков писал(а):
Влад, ну едёрна корень, Вы вообще понимаете, что разница принципиальна?


Да нет никакой разницы. Кроме того, что в одном случае требуется дополнительный шаг в вид свитча по типам, а в другом - это делает компилятор/рантайм/библиотека.

Илья Ермаков писал(а):
Либо полностью отложенная динамическая обработка (Smalltalk-модель, когда мы посылаем объекту сообщение, и только на этапе выполнения будет определено, как и кто будет его отрабатывать - и сможет ли вообще), т.е. полный полиморфизм и виртуальность, или статическое связывание сообщения, объекта и обработчика на этапе компиляции.


Не надо мешать мух с котлетами. Или контракт есть и он подписан (статическое связывание) или его нет и подписывать нечего (полная динамика). Так вот, декларация "сообщение-метод" как раз предназначена для описания первого случая. Если вам не нравится контракт - не подписывайте его, в чем проблема?

Илья Ермаков писал(а):
Плюсы есть и в том, и в том - но для статического связывания уже есть понятие вызова метода. Сообщения же вводятся как архитектурный механизм, компонентный механизм масштаба всей ОС - так зачем же "наступать на горло своей же песне"? Ладно, если бы они сознательно рассматривали оба варианта и обоснованно выбрали один. Но этого не было, ребята просто не представляли, что можно как-то по другому. Что и огорчает.


Вы делаете такие выводы только на основании того, что сделали не как в обероне? Или вы непосредственно участвовали в разработке и "ребята" вас так и не поняли?

Автор:  AVC [ Понедельник, 10 Март, 2008 18:12 ]
Заголовок сообщения:  Re: Исходники Singularity

Vlad писал(а):
Это вообще из другой оперы. Использование целочисленного идентификатора позволяет расширять систему на любом языке, а не только на обероне.
Обероновский способ type-safe (естественным образом, без каких-либо дополнительных ухищрений и наворотов).

Страница 1 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/