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 писал(а):
Конфликт, например, такой:
У тебя есть два интерфейса с методом Read(), но реализация должна быть разной.
Два метода с одинаковым именем в м3 не выйдет, вот два метода с одной и той же реализацией это да - просто при реализации объекта укажи одну и ту же процедуру.

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