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