Здравствуйте, vaa, Вы писали:
vaa>Вот он говорит:
vaa>vaa>«Я жалею, что придумал термин «объекты» много лет назад,
vaa>потому что он заставляет людей концентрироваться на мелких идеях.
vaa>По-настоящему большая идея — это сообщения».
vaa>Разве объект не может быть сообщением?
В мире Кея — нет. Кей представлял себе объекты как "отдельные компьютеры". То есть приложение в его модели — это сеть "компьютеров", каждый из которых — чёрный ящик со своим состоянием.
Обмениваются они сообщениями. У сообщения в такой метафоре собственного поведения быть не может.
vaa>vaa>set x = CreateObject("сообщение")
vaa>call послать x
vaa>
Обратите внимание на то, что кеевским
сообщениям в современной ОО-нотации соответствуют
методы.
То есть в вашей записи сообщением является "послать", а x — это
дополнительный параметр этого сообщения.
Выходит, в современной нотации ваш вопрос можно переформулировать как "разве
объект не может быть
методом?"
И получается так, что — нет, не может.
Поверх ООП можно построить какую-нибудь систему RTTI или рефлексии, где могут быть объекты-дескрипторы элементов системы типов, в том числе и методов.
Но дескриптор метода — не то же самое, что и метод.
vaa>Почему нельзя просто применить к данным функцию?
vaa>vaa>let r = hash "some data"
vaa>
Потому, что в мире кеевского ООП, нет никаких "данных" и никаких "функций". Это — осознанный выбора, следствие одного из основных дизайн-решений. Кей это решение называл homoiconicity — то есть использование ровно одной метафоры вообще для всего.
В его мире, к примеру, нет "скаляров" или "плоских данных". Чтобы прибавить к двойке пятёрку нужно отправить объекту "2" сообщение "прибавить" с аргументом "5", где "5" — это ссылка на объект-пятёрку.
В ответ на это сообщение двойка пришлёт ссылку на другой объект типа "число". И значением этого числа будет "7".