LINUX.ORG.RU

объекты и сообщения

 ,


0

2

Сразу оговорюсь, что скорей всего эта тема не заинтересует поклонников квази-ооп.

Начал пилить язык, и задумался вот о какой вещи.

У нас все есть объект. Сообщение — тоже объект. Тогда зачем, выделять сообщения в отдельную сущность? Ведь мы можем считать, что объект в качестве сообщения получает другой объект, любого типа. При этом, он может в своей реализации (поведении) что-то делать с этим полученным объектом, либо делать что-то связанное с этим объектом, либо вообще что-то другое. С этой точки зрения, отдельный тип «сообщение», в каком бы то ни было виде, кажется лишним. Собственно, в качестве сообщений обычно используются различные вариации строковых данных. Тут присутствует семантика «символ - значение», где символ — это вариант типа «строка», или что-то близкое этому. Как бы имя слота — это некий мост между сообщением и поведением. Что если снять это ограничение?

Следствием такого решения как мне видится, должно стать разрешение использования в качестве ключей/имен слотов объекты произвольного типа. Могут ли возникнуть какие то трудности в подобной реализации?

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

Даже не знаю. Тут все же есть некоторое концептуальное различие. Я тут вижу как бы, 2 сущности — объект как сообщение, и объект как поведение. То есть, объект сам по себе в ответ на сообщение реагирует поведением, и в то же время сам может быть сообщением, как-то так.

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

В некоторых языках это объект отдельного типа Message, но там все равно используется что-то вроде name, где name указывает на имя слота, которое все равно строка.

aboutcard ()

разрешение использования в качестве ключей/имен слотов объекты произвольного типа

Хэшабельные и иммутабельные объекты произвольного типа.

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

Это личное дело конкретных реализаций. Естественно, так или иначе пересылка сообщения - это пересылка набора байтов, т.е. объекта с атрибутами.

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

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

E ★★★ ()

Сообщение — тоже объект. Тогда зачем, выделять сообщения в отдельную сущность?

Так, к слову, ЕМНИП в классическом Smalltalk сообщение становится объектом только к моменту вызова #doesNotUnderstand

yoghurt ★★★★★ ()

анонимус и сообщения

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

равно как и «все есть объект»

объект это модель

модель это абстракция

абстракция это упрощение

упрощение это формализация

формализация это понимание

понимание это процесс принятия сообщения

принятие сообщения это взаимодействие

взаимодействие это существование

существование это информация

информация это сообщение

anonymous ()

Тогда зачем, выделять сообщения в отдельную сущность?

А кто выделяет?

Собственно, в качестве сообщений обычно используются различные вариации строковых данных

И что нам мешает запихать в строку сериализованный объект, или передавать в строке ссылку на объект?

no-such-file ★★★★★ ()

где тэн «тупняк анонiмуса»?

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

Вполне может быть объектом, но не любого типа, как предположил ОП, а конкретного типа с которым может работать объектная система, посылать и диспатчить.

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

Ну, в Io, например, так оно и есть, там все сообщения являются экземплярами класса Message. Я вот, думал, как-то отойти от этого. Мне кажется это ограничением некоторым.

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

В чем ограничение то? Если Message является нормальным классом, то можно его расширять и использовать свои сообщения если уж приспичило.

Это все равно что считать ограничением то, что любой класс это подкласс Object.

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

Ограничение мне видится в том, что в качестве имен слотов используются только строки. Я думаю, можно было бы добится как-то, чтобы в качестве ключа можно было использовать произвольный объект, примерно как в weakmap. Это придало бы гибкости.

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

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

aboutcard ()

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

В Akka так сделано, трудностей вроде нет.

ovk48 ★★★ ()

мань Хьюит и его дресированные акторы.

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