OberonCore https://forum.oberoncore.ru/ |
|
Расширение Oberon 2: утиные интерфейсы https://forum.oberoncore.ru/viewtopic.php?f=30&t=6131 |
Страница 3 из 5 |
Автор: | Kemet [ Вторник, 10 Октябрь, 2017 15:22 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
prospero78 писал(а): Option Explicit превращает VBA в такой типизированный язык, что чтобы сделать Variant -- придётся прилично поизвращаться. В итоге он написал не про Visual Basic, а про VBScript, но это не отменяет того факта, что он несёт пургу.
|
Автор: | ilovb [ Вторник, 10 Октябрь, 2017 15:33 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Что с вами со всеми? Будто в палату для душевнобольных заглянул. Один другого краше. По существу ни слова. Одно говно во все стороны. |
Автор: | Kemet [ Вторник, 10 Октябрь, 2017 16:22 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Я тебе сказал по существу: 1) по моему мнению, динамические интерфейсы в Оберонах не нужны. И написал почему. 2) ты путаешь динамическую типизацию с полиморфизмом. |
Автор: | prospero78 [ Вторник, 10 Октябрь, 2017 16:30 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Кхм... Редкий случай, когда я согласен с Кеметом))) Кемет, у тебя всё в порядке?)) Боря, ну а чего ты ожидал? Ты предлагаешь штуку, которая тяжела в поддержке, поломает кучу всего. Нет, если хочешь делай. Но это начало дороги в ад. |
Автор: | ilovb [ Вторник, 10 Октябрь, 2017 16:54 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Kemet писал(а): Я тебе сказал по существу: 1) по моему мнению, динамические интерфейсы в Оберонах не нужны. И написал почему. 2) ты путаешь динамическую типизацию с полиморфизмом. 1) Принято 2) Я ничего не могу тут путать, ибо не мыслю в этих категориях. |
Автор: | ilovb [ Вторник, 10 Октябрь, 2017 17:04 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
prospero78 писал(а): Боря, ну а чего ты ожидал? Я получил ровно то, что ожидал. ps https://en.wikipedia.org/wiki/Type_syst ... nformation |
Автор: | ilovb [ Вторник, 10 Октябрь, 2017 23:33 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
albobin писал(а): Опять же Франц, stand-alone messages (в Lagoonа) и всё остальное, предотвращают семантические конфликты. http://citeseerx.ist.psu.edu/viewdoc/do ... 1&type=pdf Это опять к тому, что полезно поискать о чём уже подумано было Почитал. Говорится вроде все то же самое. Я правильно понял, что они конфликты разруливают тупо явным втыканием в интерфейс указателей на процедуры? Т.е. типа есть интерфейс: Код: Foo Read() Write() end А в нашем объекте говорим: Object имплементирует Foo таким образом: Код: Foo.Read = Object.Proc1 Foo.Write = Object.Proc2 Я просто слабо понял суть мессаг у них. ps Вот в данном конкретном случае я бы как раз поступил типа как info21 предлагал. Завернул бы свой объект в другой объект и все. И ничего бы не городил в языке. Ради разрешения редкого конфликта немного телодвижений меня не пугают. pps Но я папир не до конца понял. Все же я английский сильно плохо знаю. А скрупулезно переводить лень. |
Автор: | albobin [ Среда, 11 Октябрь, 2017 10:56 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
У Франца с привлечёнными лицами не один этот "папир" вокруг и около 'Lagoon'ы написан, некоторые гуглятся,яндексятся , а вот по самой 'Lagoon'е не очень. Если повезёт наткнутся на текст "The Programming Language Lagoona - A Fresh Look at Object-Orientation", то там идеи изложены на Оберон-базе. Я сам не эксперт, не берусь перевирать. Но как-то примерно так: Вводятся два "взгляда" на объекты, первый - место в иерархии типов, второй - принадлежность к неким Интерфейсам (И.),определяющее поведение объекта. Месседжи (Мес.) вводятся на уровне модуля как самостоятельная сущность, вроде абстрактной операции. Они при определении не привязанны ни к каким типам. (И.) группируют (Мес.). (И.) - это тоже типы. Вводятся Объекты (О.) на базе Рекордов и с принадлежностью к (И.) Методы (Мет.) прибиты к (О.) и реализуют реакцию на (Мес.) Если (О.) принадлежит к некому (И.), то должны быть все (Мет.), реализующие реакции на все (Мес.) данного (И.) . Это статически контролируется компилятором. В принципе любой (Мес.) можно послать любому (О.). Если у (О.) нет соответствующего (Мет.), то (Мес.) игнорируется, но есть еще механизм перенаправления (Мес.) другим (О.) и дефолтный (Мет.) - реакция на всё непонятное. Переменные интерфейсного типа могут "принимать" (О.) любых типов (из разных мест иерархии типов) , но принадлежащих данному интерфейсу. Это - одна из "фишек" подхода. Вообщем, лучше читать оригинал. |
Автор: | ilovb [ Среда, 11 Октябрь, 2017 11:03 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Спасибо. Немного яснее стало. Хотя я примерно на том же уровне понял ) Но я не понял для чего это все? Без всякого сарказма это выглядит сложновато и для понимания и для реализации. Другими словами я не вижу чем это лучше того же Go |
Автор: | albobin [ Среда, 11 Октябрь, 2017 11:19 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Всё ради делания больших систем проще, легче и безопаснее. Получилось или нет, долбит ли автор эту тему в настоящее время, - не знаю. |
Автор: | ilovb [ Среда, 11 Октябрь, 2017 22:21 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Все же я зря стал использовать собственный термин "утиные интерфейсы" Сейчас погуглил по интернетам... Думаю что наиболее правильно использовать термин "структурная типизация" https://en.wikipedia.org/wiki/Structural_type_system |
Автор: | Kemet [ Четверг, 12 Октябрь, 2017 08:00 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Структурная типизация в Модуле-3, не нужно путать. Но в М3 есть и типизация по имени, но сбоку. И интерфейсы там есть ) |
Автор: | ilovb [ Четверг, 12 Октябрь, 2017 10:55 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Поделись, плиз, ссылкой про интерфейсы модулы 3. Чет с ходу не могу нагуглить |
Автор: | Kemet [ Четверг, 12 Октябрь, 2017 13:05 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Интерфейсы там обычные,но у объекта может быть несколько интерфейсов, они распологаются в разных модулях. Когда определили интерфесы объекта, определяешь реализацию, она, кстати, тоже по разным модулям может быть раскидана, и вот ту каке дело, в м3 методы могут быть назначены не только при компиляции, но и в рантайме - главное, чтобы сигнатура процедуры была совместима с объявленной в интерфейсе. Да, кстати, методы там 0- простые процедуры, у которых первый параметр - тип объекта. и их можно вызывать и кка процедуры и как методы. Получается, что интрефейсы статичны для объекта, но методы могут динамически меняться. Полистай доки про модули-интерфейсы и про ROOT, REVEAL |
Автор: | ilovb [ Четверг, 12 Октябрь, 2017 13:28 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Описание на Lagoon смахивает ) Цитата: методы могут динамически меняться Это для каких целей? Тоже конфликты разруливать? |
Автор: | Kemet [ Четверг, 12 Октябрь, 2017 14:35 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
ilovb писал(а): Описание на Lagoon смахивает ) Какие конфликты? Нет, например при создании из потока контрола, или еще чего, мутация там, изменяем поведение объекта на лету, в зависимости от всякого разного. в Активном Обероне что-то такое можно сделать используя делегаты, но это не то, делегат это просто процедурная переменная в объекте и записи, а не метод. Но делегат может содержать как процедуру так и метод, но доступа к SELF там в общем случае нет.Цитата: методы могут динамически меняться Это для каких целей? Тоже конфликты разруливать? А в М3 это настоящий метод, меняется запись в таблице методов - там методы как в Оберонах, все виртуальные. |
Автор: | ilovb [ Четверг, 12 Октябрь, 2017 14:59 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Конфликт, например, такой: У тебя есть два интерфейса с методом Read(), но реализация должна быть разной. add: Эммм... а там точно есть интерфейсы? Потому как я вижу чет только интерфейсы модулей. Но это как я понимаю совершенно из другой оперы. |
Автор: | Kemet [ Четверг, 12 Октябрь, 2017 16:03 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
ilovb писал(а): Эммм... а там точно есть интерфейсы? Ну это другие интерфейсы да )Потому как я вижу чет только интерфейсы модулей. Но это как я понимаю совершенно из другой оперы. это интерфейсы объекта, они по разным модулям раскиданы могут быть, и эти интерфейсы же можно реализовать у других объектов. Там же может быть интерфейс к ROOT, а это ваще все объекты, просто указатель. а в реализации ты уточняешь |
Автор: | Kemet [ Четверг, 12 Октябрь, 2017 16:06 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
Это то, что в Шарпе заимстdовав из М3 назвали Partial Types |
Автор: | Kemet [ Четверг, 12 Октябрь, 2017 16:12 ] |
Заголовок сообщения: | Re: Расширение Oberon 2: утиные интерфейсы |
ilovb писал(а): Конфликт, например, такой: Два метода с одинаковым именем в м3 не выйдет, вот два метода с одной и той же реализацией это да - просто при реализации объекта укажи одну и ту же процедуру.
У тебя есть два интерфейса с методом Read(), но реализация должна быть разной. |
Страница 3 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |