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 писал(а): Нет никакой концепции. Вот в этом и есть проблема. ![]() Цитата: Ребята из МС учитывают реальный опыт разработки ПО. Свой опыт... |
Автор: | Илья Ермаков [ Понедельник, 10 Март, 2008 11:33 ] |
Заголовок сообщения: | Re: Исходники Singularity |
Vlad писал(а): Еще раз и по существу: в чем претензия к существованию декларации "сообщение-метод", кроме того, что в обероне так сделать нельзя? Да почему нельзя - можно. Кто мешает компилятор научить, как сделали в Сингулярности. Только зачем? В Обероне есть селектор типа WITH (которого уж действительно нет в других языках). И насколько это удобней, знаем на своей шкуре. После обработчиков-методов шина сообщений в BlackBox Framework как просто глоток свежего воздуха ![]() |
Автор: | Vlad [ Понедельник, 10 Март, 2008 16:27 ] |
Заголовок сообщения: | Re: Исходники Singularity |
Борис Рюмшин писал(а): Vlad писал(а): Нет никакой концепции. Вот в этом и есть проблема. ![]() В чем? Или все, что не есть концепция, подлежит уничтожению? Тогда в обероне еще много чего можно отрезать, включая 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/ |