Значит, у Squeak/Pharo есть черты и Newspeak. В чем разница? У черт нет instVars, но у Mixins есть?
В чем разница между чертой Squeak/Pharo и Newspeak Mixin?
Ответ 1
Для хорошего сравнения и для обоснования того, почему черты предпочтительнее, вы можете проверить черты (pdf).
В сущности, это то, что Лукас Рэнгли сказал:
Элементы символов объединяются в класс и не меняют иерархию наследования. Конфликты должны быть явно разрешены пользователем характеристик.
Микшины линеаризуются в иерархию наследования целевого класса. Если есть конфликтующие члены, порядок, в котором они были объявлены, диктует, какой член вызван. Это хрупко, потому что он неявно определяет поведение композиции, и автор класса должен знать о потенциальных конфликтах и о том, как они повлияют на результирующий класс.
Поскольку миксины линеаризуются, они не страдают от пресловутой "проблемы с алмазами " множественного наследования. Таким образом, хрупкая природа, в которой они сложены, - это еще одна проблема, которую я буду дублировать " рубиновая проблема", чтобы сохранить метафору драгоценных камней. По некоторым нечетным причинам, связанным с moose, жемчуг не изображает проблему, а также рубины.
Ответ 2
Черты составлены с использованием правила композиции. Конфликты должны быть разрешены вручную, не может быть, что признак случайно переопределяет другой метод с тем же именем.
Микшины составлены по порядку и, следовательно, имеют проблемы с хрупкостью, сходные с множественным наследованием.
Ответ 3
В Newspeak все классы являются mixins. Вот некоторые отрывки из ответа Гилада Брахи на аналогичный вопрос в Форум новостей Newspeak:
Микшины не являются особенностью Newspeak как таковой. То есть мы не говоря языком, хорошо, теперь мы добавим Примеси. Микшины выпадают автоматически от вложенности классов и сообщений семантика. То есть, если у вас есть виртуальных классов, у вас есть миксины если вы на самом деле их не запретили....
Черты пытаются решить проблема миксинов.
- Существует очень мало реального опыта, свидетельствующего о том, что эти воспринимаемые проблемы реальны.
- Черты ограничиваются безстоящими. Это упрощает дело, но не обрабатывает все случаи интерес. На самом деле, сейчас исследовательские работы, пытающиеся добавить состояние к чертам.
Черты целиком включаются в число общая модель, которую я разработал много лет назад в моей докторской диссертации (доступно с моего веб-сайта, если вы действительно хотите копать глубоко).... Я хотел бы изучить, как мы можем включить эти комбинаторы в Новояз....