Матц якобы сказал, что «миксины могут делать почти все, что делает множественное наследование, без связанных с этим недостатков» (слова Матца) ».
Прежде всего, почему включение модуля Ruby не является «множественным наследованием»? Мне кажется, что между модулями и классами очень мало различий. Тот факт, что вы не можете создать экземпляр модуля, не имеет значения, когда он используется в качестве суперкласса.
Я также знаю, что последующее включение модулей формирует единую цепочку наследования (не дерево), идущую вверх от класса. Но этого, на мой взгляд, недостаточно, чтобы отличить его от «множественного наследования», поскольку система множественного наследования Python также «линеаризует» цепочку суперклассов (используя алгоритм C3) просто процесс" линеаризации "Ruby значительно проще.
Так что же отличает миксины модулей Ruby от множественного наследования, скажем, в таком языке, как Python? И почему аргументы, лежащие в основе принятия Python алгоритма c3 MRO, не применимы к Ruby? И если они применимы - почему Ruby решила не применять этот алгоритм?
Благодарность