Ремесло программиста

Объявление

форум на движке phpBB доступен для тестирования
www.strategia.space
www.strategia.space/forum/
по предложению Лиса - канал на Matrix - #remdev:matrix.org

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Ремесло программиста » Валентина » Вопрос наследования систем


Вопрос наследования систем

Сообщений 1 страница 5 из 5

1

Итак, вопрос назрел по мотивам обсуждения синтаксиса. Имеется две модели развития событий:
1. Мы указываем явного предка и получаем фактически клон, к которому применяются изменения. Так работают большинство языков программирования. Плюсы - отлаженная технология. Минусы проблемы с множественным наследованием. Собственно говоря, само множественное наследование вообще тема сложная и потому минус ли там в сложности организации такого наследования или нет еще не понятно толком. Известно, что есть и сторонники (ярый с++ наверно) и противники множественного наследования.
Система х вида Список
2. Мы запрещаем прямо указывать предка для проектируемой системы, но разрешено создавать подсистемы по описаниям других систем. Это изначально упорядочивает структуру систем. Плюсы - нет проблем с множественным наследованием, поскольку каждый предок будет жить в своей собственной подсистеме и все конфликты решаются явным обращением по имени подсистемы.
Например:

Система х
       Подсистема а вида Список
       Подсистема б вида Множество

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

ЗЫ. Напоминаю, что функции такие же системы как и все остальное и поддаются копированию, удалению и переименованию.

2

utkin
Сравни отстойные дельфийские коллекции с колекциями Си++.
В дельфи из-за запрета на множественное наследование приходиться в каждой коллекции дублировать интерфейс. При этом этот интерфейс закрыт от прикладного программиста. По сути вся идея коллекций идёт под откос.

3

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

4

Вопрос - существует ли ситуация в которой применим вариант 1 и не применим вариант 2?

Нет, наоборот.

Являются ли они эквивалентными (то есть можно ли с их помощью добиваться одинаковых результатов)?

1 - синтаксическая обёртка частного случая 2. Отказались, например, в Go.

удобна ли модель по второму варианту - не непосредственное изменение от класса, а возможность получение подсистем по описанию систем с последующей модификацией.

Иногда 2 по-прежнему можно использовать как 1, если есть разрешение/указание неоднозначностей.

Сравни отстойные дельфийские коллекции с колекциями Си++.
В дельфи из-за запрета на множественное наследование приходиться в каждой коллекции дублировать интерфейс.

Задача принципиально решаема вообще без внесения изменений в язык. Синтаксис наследования избыточен к ней.

5

Ну что же тогда вопрос наследования решен. Система не будет иметь прямого предка, но будет иметь возможность указывать предка для своих подсистем.


Вы здесь » Ремесло программиста » Валентина » Вопрос наследования систем