Подтвердить что ты не робот

В чем разница между чертой Squeak/Pharo и Newspeak Mixin?

Значит, у Squeak/Pharo есть черты и Newspeak. В чем разница? У черт нет instVars, но у Mixins есть?

4b9b3361

Ответ 1

Для хорошего сравнения и для обоснования того, почему черты предпочтительнее, вы можете проверить черты (pdf).

В сущности, это то, что Лукас Рэнгли сказал:

Элементы символов объединяются в класс и не меняют иерархию наследования. Конфликты должны быть явно разрешены пользователем характеристик.

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

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

Ответ 2

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

Микшины составлены по порядку и, следовательно, имеют проблемы с хрупкостью, сходные с множественным наследованием.

Ответ 3

В Newspeak все классы являются mixins. Вот некоторые отрывки из ответа Гилада Брахи на аналогичный вопрос в Форум новостей Newspeak:

Микшины не являются особенностью Newspeak как таковой. То есть мы не говоря языком, хорошо, теперь мы добавим Примеси. Микшины выпадают автоматически от вложенности классов и сообщений семантика. То есть, если у вас есть виртуальных классов, у вас есть миксины если вы на самом деле их не запретили....

Черты пытаются решить проблема миксинов.

  • Существует очень мало реального опыта, свидетельствующего о том, что эти воспринимаемые проблемы реальны.
  • Черты ограничиваются безстоящими. Это упрощает дело, но не обрабатывает все случаи интерес. На самом деле, сейчас исследовательские работы, пытающиеся добавить состояние к чертам.

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