LINUX.ORG.RU

Широковещательное ООП

 ,


1

3

Время от времени меня посещает такая мысль. Почему бы в ООП не ввести абстракцию эфира? Пусть объект посылает сообщение не конкретному объекту, а всем сразу, одновременно, а они, слушатели, уже сами решают, как его обрабатывать, и обрабатывать ли вообще. Пусть это будет основа, далее мы можем создавать разные эфиры, и подключать к ним те или иные объекты, так что один объект может слушать несколько эфиров сразу.

Собственно, частный случай этого уже есть, это паттерн Observer. Но можно сделать этот принцип general-моделью.

Данная модель подкупает своей простотой, изяществом, и естественностью. Последнее особенно бросается в глаза, ведь ООП — это моделирование реального мира, а в реальном мире так оно и есть — все «сообщения» широковещательны по-дефолту. И, кстати, данная модель параллельна и асинхронна по своей сути — все объекты могут обрабатывать одно сообщение одновременно.

Ответ на: комментарий от arturpub

С чего это? Вот ты орешь на площади: «хей, Вася, пошли бухать!!!» твое сообщения слышат все, кто слушает «эфир», а приходит только вася:)

goodbigbeer
() автор топика

Последнее особенно бросается в глаза, ведь ООП — это моделирование реального мира

«Ты понимаешь, что ты поехавший?»(с)

Aswed ★★★★★
()
Ответ на: комментарий от ilammy

Ну, слоты — это не сигналы, а идентификатор сигналов.

goodbigbeer
() автор топика

а в реальном мире так оно и есть — все «сообщения» широковещательны по-дефолту

Какие сообщения в реальном мире? Тебе эта муть в голову пришла в виде сообщений от солнца и альфацентавры?

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Любые. Самый простой случай — это слова, передаваемые людьми друг другу, например. Датчики передают сигнал центру — тут сигнал — это сообщение. Раздражители передают сигнал в мозг человека. И так далее, можно продолжать до бесконечности.

goodbigbeer
() автор топика
Ответ на: комментарий от winlook38

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

goodbigbeer
() автор топика

О, анонiмус открыл для себя эфир. Стремительно штурмует днище вершины науки

Еще немного, и будем читать о теплороде и концепциях Бога-отца, Бога-сына и Святого духа

anonymous
()
Ответ на: комментарий от goodbigbeer

Ничего я не открывал
Точней открыл

Ну я так и сказал. Устал обоссываться от разговоров со взрослыми, пошел читать. Правда не осилил опять.
Для тебя бесплатный хинт в тему сабжа: другое название Observer - pub/sub. Понимаешь как часто оно используется на практике? Твоя философия никому не нужна, люди и без нее давно работают и успешно решают прикладные задачи.

winlook38 ★★
()
Ответ на: комментарий от winlook38

Observer — самоочевидный паттерн. Я использовал его еще до того, как узнал как это называется. Еще раз говорю: книгу не читал, и не собираюсь.

goodbigbeer
() автор топика

Х11 не так сообщения шлет? А кому надо тот подписывается на получение сигналов по той или иной маске? Или я ошибаюсь?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от KblCb

Я знаю, только я думаю о том, чтобы сделать это вообще дефолтной моделью. То есть, любое сообщение по дефолту слушают все объекты. Само собой, сообщение является событием.

goodbigbeer
() автор топика
Ответ на: комментарий от goodbigbeer

В GoF практически нет ничего такого, чего ты уже не использовал бы, если бы разрабатывал ПО. Эта книга нужна для формирования профессионального словаря. Но тебе с профессионалами общаться не нужно, поэтому общий язык с ними находить не приходится, а нас посмешить на ЛОРе тебе и так удается.

winlook38 ★★
()
Ответ на: комментарий от winlook38

Я третий раз повторяю, если бы авторы были годными инженерами, про плюсы им нужны были бы только для того, чтобы плевать на них. Не будет нормальный инженер тратить драгоценное время на это говно. Это для меня является маркером.

goodbigbeer
() автор топика
Ответ на: комментарий от goodbigbeer

Еще раз тебе говорю, ты не осилил. Не-о-си-лил. Там в вводной части говорится почему выбраны C++ и Smalltalk. Но ты ведь не осилил прочитать, а мнение имеешь. Гуманитарий, тебе не место в Development.

winlook38 ★★
()
Ответ на: комментарий от winlook38

С++ не годится для проектирования систем, а посему, к проектированию отношения не имеет. Почему они его выбрали, меня не колышет.

goodbigbeer
() автор топика
Ответ на: комментарий от anonymous

Потому что для меня язык для проектирования — это ООП-язык. ООП и проектирование — это почти синонимы. А ООП-язык — это язык экстремально динамичный, с экстремально поздним связыванием. С++ — не ООП-язык.

goodbigbeer
() автор топика
Ответ на: комментарий от Deleted

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

goodbigbeer
() автор топика

Широковещательное

Шизофреническое.

thesis ★★★★★
()
Ответ на: комментарий от goodbigbeer

Главный вопрос, зачем тебе нужен эфир? Где это может быть использовано? Все равно есть конечный адресат. Роди пример. Не абстрактный, а конкретный.

Deleted
()

Время от времени меня посещает такая мысль. Почему бы в ООП не ввести абстракцию Аллаха? Пусть объект посылает сообщение не конкретному объекту, а обращается к Аллаху, а он уже сам решает, как его обрабатывать, и обрабатывать ли вообще. Пусть это будет основа, далее мы можем создавать имамов, и подключать к ним те или иные объекты, так что один объект может слушать несколько имамов сразу.

Данная модель подкупает своей простотой, изяществом, и естественностью. Последнее особенно бросается в глаза, ведь ООП — это моделирование реального мира, а в реальном мире так оно и есть — все «молитвы» обращены к Аллаху. И, кстати, данная модель параллельна и асинхронна по своей сути — все имамы могут обрабатывать одну молитву одновременно.

anonymous
()
Ответ на: комментарий от goodbigbeer

И где же здесь утверждение эквивалентное

С++ — не ООП-язык.

?

anonymous
()
Ответ на: комментарий от Deleted

Где это может быть использовано?

Для связи между компонентами.

Все равно есть конечный адресат

он на всегда один

Роди пример

У нас есть гуй, с разными селектами, подключенные к общему эфиру. При выборе какого то поля в одном из них, все остальные должны поменять свои значения в соответствии с выбором. Вот, они все могут получить сообщение через эфир. В общем то, сюда попадают все рспространенные паттерны событийно ориентированного программирования. Просто при наличии абстракции эфира, нам не придется каждый раз с нуля писать observer.

goodbigbeer
() автор топика

Теперь я понимаю, почему в треде про биткоины у меня было deja vu.

hateyoufeel ★★★★★
()
Ответ на: комментарий от anonymous

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

goodbigbeer
() автор топика
Ответ на: комментарий от goodbigbeer

А я тебе еще раз задам вопрос.

Вот мы взяли и сделали в С++ класс, объекты которого ведут себя как объекты io. И начали говнокодить при помощи них. Именно говнокодить, потому что io не умеет в практическое применение (дада, хомяк васи пупкина на локалхосте - это не практическое применение — это уровень хеловорда.). Так вот ответь мне. если мы создали такие объекты в рамках С++, и начали писать код этими объектами (пох, мы и эфир запилили, и сообщения и мапу с объектами, благо это раз плюнуть; и сообщения у нас тоже такие же объекты).

Где кончился язык, в котором нет ООП и начался язык, в котором ооп есть, если учесть, что это один и тот же язык?

Ты не умеешь думать. У меня мозг умеет «думать» тольшаг влево, шаг вправо — у тебя паника и разрыв пердака. Ты теоретик, не имеющий никакого понятия о практике, сиречь дурилка картонная.

anonymous
()

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

annulen ★★★★★
()
Ответ на: комментарий от anonymous

Ты не сможешь реализовать семантику Io, в рамках C++, как бы ты не выдрачивался. Например, ты не сможешь интроспектировать произвольный код. Поэтому говорить не о чем.

goodbigbeer
() автор топика
Ответ на: комментарий от annulen

Согласен, к сожалению это так. Но идея слишком привлекательна чтобы отказаться от нее ради производительности:)

goodbigbeer
() автор топика
Ответ на: комментарий от annulen

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

goodbigbeer
() автор топика
Ответ на: комментарий от goodbigbeer

Чо серьезно чтоль? Вот я и говорю - ты дурилка. Твоя интроспекция это просто изменение состава/поведения объекта ран-тайм. А объект будет ровно тем же, чем он является в Io - набором других объектов и возможностью принимать сигналы. Я смогу его скопировать, клонировать, поменять ему слоты, поменять реакцию на сигналы (кто сказал, что объект не может быть функцией или сигналом?).

Выглядеть это будет по-другому, внешне, но суть будет одна. Но ты же не будешь утверждать, что русский, например, это тру-язык, потому что в нем нет артиклей, а испанский - не тру-язык, потому что в нем «лишние» артикли.

Иди книжки читай, дятелко, не позорься.

anonymous
()
Ответ на: комментарий от goodbigbeer

Например, ты не сможеш

А ниче, что весь Io написан на Си. И там, таки ЕСТЬ эти объекты выраженные на Си. И да! Io можно встраивать. ВСТРАИВАТЬ!!! А значит работать с «его» объектами, как родными, со всеми «его» возможностями.

anonymous
()
Ответ на: комментарий от anonymous

клонировать

Под клонированием в Io понимается делегирование.

это просто изменение состава/поведения

Нет. В Io интроспективно абсолютно все, ты можешь получить в рантайме сырой код.

что русский, например, это тру-язык, потому что в нем нет артиклей, а испанский - не тру-язык, потому что в нем «лишние» артикли.

Не буду. Это эквивалентные языки. Но язык програмирования это не столько язык, сколько среда и инструмент. А инструменты не эквивалентны. К примеру, швейцарский нож отличается от кухонного, а острый от тупого.

goodbigbeer
() автор топика
Ответ на: комментарий от anonymous

И там, таки ЕСТЬ эти объекты выраженные на Си.

Дитятко этого не понимает. Он считает, что Io это магия с понями, которую принес Декорте в этот мир.

anonymous
()
Ответ на: комментарий от goodbigbeer

После того как си скомпилировался, там уже нет никакого кода на си.

После того, как ты сохранишь свой код на Io и «запустишь» его, тоже уже не будет никакого кода на Io.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.