О множественном наследовании
От: LaptevVV Россия  
Дата: 30.08.12 18:01
Оценка:
Раз уж речь зашла о нашей разработке, то обращаюсь к сообществу за советом.
В языке еще не реализовано наследование.
Если с одиночным наследованием все ясно — практически во всех языках одно реализовано одинаково на основе принципа подстановки и виртуальных функциях.
А вот множественное наследование еще не устоялось.
В качестве примера: С++, C# и Java, Компонентный паскаль, Эйфель.
Про первые три все знают. В КП множественное наследие просто запрещено.
В Эйфеле интересное решение: есть механизм переименования наследуемых имен в классе-наследнике.
Механизм С++ нам не нравится понятно почему.
Механизм C# и Java — не хотим вводить отдельную конструкцию интерфейса.
Механизм Эйфеля — уж больно нестандартный.
Компонентный паскаль — радикальное решение.

Предлагаю пообсуждать, какой механизм множественного наследования мог бы быть полезен, и одновременно — прост для изучения.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: «requires», «extends»
От: Qbit86 Кипр
Дата: 30.08.12 18:33
Оценка: 81 (3)
Здравствуйте, LaptevVV, Вы писали:

LVV>Механизм C# и Java — не хотим вводить отдельную конструкцию интерфейса.


Можно ввести отдельную конструкцию для другой разновидности наследования: CZ: Multiple Inheritance Without Diamonds
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: «requires», «extends»
От: LaptevVV Россия  
Дата: 30.08.12 18:37
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, LaptevVV, Вы писали:


LVV>>Механизм C# и Java — не хотим вводить отдельную конструкцию интерфейса.


Q>Можно ввести отдельную конструкцию для другой разновидности наследования: CZ: Multiple Inheritance Without Diamonds

Спасибо! Очень интересно!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: О множественном наследовании
От: fddima  
Дата: 30.08.12 19:12
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Раз уж речь зашла о нашей разработке, то обращаюсь к сообществу за советом.

Я что-то пропустил — о какой разработке речь?
Re: О множественном наследовании
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.08.12 20:17
Оценка: 13 (3) +5
Здравствуйте, LaptevVV, Вы писали:

LVV>Механизм C# и Java — не хотим вводить отдельную конструкцию интерфейса.


А зря.

Мое предложение — множественное наследование интерфейсов и отсутствие наследования реализаций. Т.е. классы вообще не наследуются. А для реюза кода придумать способ упрощения агрегации.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: О множественном наследовании
От: Abyx Россия  
Дата: 30.08.12 20:22
Оценка: +2 :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Мое предложение — множественное наследование интерфейсов и отсутствие наследования реализаций. Т.е. классы вообще не наследуются. А для реюза кода придумать способ упрощения агрегации.


наследование реализации — это и есть упрощение агрегации.
In Zen We Trust
Re[3]: О множественном наследовании
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.08.12 20:22
Оценка: 1 (1) +4
Здравствуйте, Abyx, Вы писали:

A>наследование реализации — это и есть упрощение агрегации.


Очень фиговое, порождающее сильную связность.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: О множественном наследовании
От: LaptevVV Россия  
Дата: 30.08.12 20:23
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, LaptevVV, Вы писали:


LVV>>Механизм C# и Java — не хотим вводить отдельную конструкцию интерфейса.


AVK>А зря.


AVK>Мое предложение — множественное наследование интерфейсов и отсутствие наследования реализаций. Т.е. классы вообще не наследуются. А для реюза кода придумать способ упрощения агрегации.

Вот и я о том же — исследовать придется разные механизмы на уровне реализации и на уровне применения.
Про интерфейсы мы думали. Но о том, чтобы совсем от наследования классов отказаться — в голову не пришло.
Радикально как-то выглядит — во всех языках одиночное наследование классов есть и реализовано практически одинаково.
За предложение — спасибо! Поанализируем.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: О множественном наследовании
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 30.08.12 20:28
Оценка: +2
Здравствуйте, LaptevVV, Вы писали:

LVV>Радикально как-то выглядит


Зато код становится чище.

LVV> — во всех языках одиночное наследование классов есть


Не во всех. И это, скорее, дань традиции.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 7 6.1.7601.65536>>
AVK Blog
Re[2]: О множественном наследовании
От: Философ Ад http://vk.com/id10256428
Дата: 31.08.12 00:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Мое предложение — множественное наследование интерфейсов и отсутствие наследования реализаций.


отсутствие наследования реализации в множественном наследовании?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: О множественном наследовании
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.08.12 01:58
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>отсутствие наследования реализации в множественном наследовании?


Вообще отсутствие наследования реализации. Либо, в крайнем случае, отсутствие совмещенного в одном механизме наследования интерфейсов и реализаций.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 7 6.1.7601.65536>>
AVK Blog
Re: О множественном наследовании
От: 0x7be СССР  
Дата: 31.08.12 06:28
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>Предлагаю пообсуждать, какой механизм множественного наследования мог бы быть полезен, и одновременно — прост для изучения.

Наследование интерфейсов + синтаксический сахар для упрощенного делегирования.
Re: О множественном наследовании
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.12 22:45
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Предлагаю пообсуждать, какой механизм множественного наследования мог бы быть полезен, и одновременно — прост для изучения.


А у меня встречный вопрос. Что вас денуло новый язык ваять? В Обероне найден фатальный недостаток?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: О множественном наследовании
От: Трололоша  
Дата: 31.08.12 23:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В Обероне найден фатальный недостаток?

Полагаю классический случай NIH
... << RSDN@Home >>
Да, йа зелёный тролль!
Re[2]: О множественном наследовании
От: LaptevVV Россия  
Дата: 01.09.12 00:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, LaptevVV, Вы писали:


LVV>>Предлагаю пообсуждать, какой механизм множественного наследования мог бы быть полезен, и одновременно — прост для изучения.


VD>А у меня встречный вопрос. Что вас денуло новый язык ваять? В Обероне найден фатальный недостаток?

1. Раз уж среду делаем — так сразу все и сделать. Язык в том числе...
2. Хотелось разнообразного синтаксиса в рамках одной среды. Мы одной кнопочкой переключаем русский-английский (русский — важно для девственников-программистов), и синтаксис языка. Хочешь — обероноподобный, а хочешь — сиобразный...
3. Хотелось прояснить для себя некоторые вопросы — вот в частности с наследованием. Кроме того, пацан в процессе реализации интерпретатора наткнулся на интересную штуку: оказалось, ссылочную семантику и семантику значений можно реализовать в рамках одного язвка. И появилась возможность одной кнопочкой переключать это дело. Более того, если сделать API, то можно и в процессе интерпретации переключать эту семантику.
4. Просто интересно — пацану, в первую очередь.
5. Была мысля сделать в языке один контейнер вместо множества разных. Но пока отложили — вернемся в том году после опытной эксплуатации.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: О множественном наследовании
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.09.12 01:46
Оценка:
Здравствуйте, Трололоша, Вы писали:

VD>>В Обероне найден фатальный недостаток?

Т>Полагаю классический случай NIH

Я на это и намекал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: О множественном наследовании
От: Философ Ад http://vk.com/id10256428
Дата: 02.09.12 03:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Философ, Вы писали:


Ф>>отсутствие наследования реализации в множественном наследовании?


AVK>Вообще отсутствие наследования реализации. Либо, в крайнем случае, отсутствие совмещенного в одном механизме наследования интерфейсов и реализаций.


Наследование реализации — вещь полезная, т.к. позволяет экономить усилия.
Это один из способов не копипастить.

Кстати, шаблонный метод — зло или нет?

Однажды я сначала руками написал около сотни практически не отличающихся наследников (все они определяли ровно два небольших метода, объявленных в базовом классе как абстрактные), а потом, когда надоело писать руками, написал для них генератор.
Сейчас даже не представляю, как всё это могло бы быть сделано без возможности наследовать реализацию.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[2]: О множественном наследовании
От: LaptevVV Россия  
Дата: 02.09.12 05:25
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, LaptevVV, Вы писали:


LVV>>Механизм C# и Java — не хотим вводить отдельную конструкцию интерфейса.


AVK>А зря.


AVK>Мое предложение — множественное наследование интерфейсов и отсутствие наследования реализаций. Т.е. классы вообще не наследуются. А для реюза кода придумать способ упрощения агрегации.

Кстати, ровно тот же подход предлагали оберонцы! Наследование интерфейсов, а вместо наследования реализации использовать композицию...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: О множественном наследовании
От: Privalov  
Дата: 02.09.12 07:12
Оценка: +1
Здравствуйте, Философ, Вы писали:

Ф>Наследование реализации — вещь полезная, т.к. позволяет экономить усилия.


Наследование реализации — зло. В одном из проектов было примерно 8 уровней наследования, причем довольно часто оно применялось только за тем, что в наследуемом классе был подходящий метод. И делали такое не студенты, а вполне взрослые дядьки. В таком коде, если где-то обнаруживается бага, починить ее стоит совершенно адских усилий.

Ф>Это один из способов не копипастить.


Наследование реализации ничем не лучше копипасты.
Re[5]: Шаблонный метод
От: Qbit86 Кипр
Дата: 02.09.12 07:20
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Кстати, шаблонный метод — зло или нет?


Присоединяюсь к вопросу про шаблонный метод. (Сам хотел спросить, но поленился.)

Пользуясь случаем, хочу задать вопрос по книжке Саттера—Александреску «Стандарты программирования на С++». Есть там два правила. (Свой экземпляр остался на работе, так что точных номеров не скажу.) Одно предписывает предпочитать абстрактные классы в API, другое — использовать идиому NVI. Нет ли здесь противоречия?
Глаза у меня добрые, но рубашка — смирительная!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.