В чем разница между чертой писка/фарона и миксином новояза?

StackOverflow https://stackoverflow.com/questions/2329724

Вопрос

Таким образом, Squeak/Pharo поддерживают черты, а новояз имеет миксины.В чем разница?У трейтов нет instVar, а у миксинов есть?

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top