Будут ли шаблоны и множественное наследование в CLR?
От: flatch  
Дата: 08.02.03 05:34
Оценка:
Планирует ли MS в новой версии .NET добавить в C# поддержку шаблонов и множественного наследования классов?
Или, может, в будущем они планируют?
Кто что слышал по этому поводу, поделитесь плиз.

18.02.03 18:22: Перенесено модератором из '.NET' в Философию Программирования — ХД
Re: Будут ли шаблоны и множественное наследование в CLR?
От: henson Россия http://www.njt-rails.com
Дата: 08.02.03 06:31
Оценка:
Здравствуйте, flatch, Вы писали:

F>Планирует ли MS в новой версии .NET добавить в C# поддержку шаблонов и множественного наследования классов?

F>Или, может, в будущем они планируют?

Про C# читал на сайте производителя, что в следующей версии будут аналоги шаблонов, а вот насчет множественного наследования сильно сомневаюсь.
Re: Будут ли шаблоны и множественное наследование в CLR?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.02.03 07:55
Оценка:
Здравствуйте, flatch, Вы писали:

F>Планирует ли MS в новой версии .NET добавить в C# поддержку шаблонов


Да

F> и множественного наследования классов?


Нет

F>Или, может, в будущем они планируют?


Второе даже не планируют
... << RSDN@Home 1.0 beta 6 (np: тихо) >>
AVK Blog
Re: Будут ли шаблоны и множественное наследование в CLR?
От: darkwolf Россия  
Дата: 10.02.03 07:06
Оценка:
Здравствуйте, flatch, Вы писали:

F>Планирует ли MS в новой версии .NET добавить в C# поддержку шаблонов

поддержка шаблонов, ьудет точно.

и множественного наследования классов?
Не этого не будет, т.к. нет смысла, есть множественное наследоваие интерфейсов. Они с самого начала не стали делать множественное наследовние классов, чтобы не было путаницы как VC++.
Re[2]: Будут ли шаблоны и множественное наследование в CLR?
От: mSerg Украина  
Дата: 10.02.03 14:12
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


F>>Планирует ли MS в новой версии .NET добавить в C# поддержку шаблонов


AVK>Да


[Skipped]

А следующая версия — это какая? В Framework 1.1 (Studio 2003 beta) шаблонов нет, и в релизе как мне кажется их не будет. А хочется побыстрее

WBR, Serg Matskov.
... << RSDN@Home 1.0 beta 4 >>
WBR, Serg Matskov
Re[3]: Будут ли шаблоны и множественное наследование в CLR?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.02.03 14:25
Оценка:
Здравствуйте, mSerg, Вы писали:

S>А следующая версия — это какая?


Видимо 2.0.

S> В Framework 1.1 (Studio 2003 beta) шаблонов нет, и в релизе как мне кажется их не будет.


Не будет. В 1.1 и VS2003 они просто доделали то что не успели к релизу.

S>А хочется побыстрее


Для ротора есть реализация компилятора шарпа с поддержкой шаблонов.
... << RSDN@Home 1.0 beta 6a (developer build)>>
AVK Blog
Re[2]: Оптимизация и т.п.
От: _vovin http://www.pragmatic-architect.com
Дата: 10.02.03 14:56
Оценка:
Здравствуйте, darkwolf, Вы писали:

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


F>>Планирует ли MS в новой версии .NET добавить в C# поддержку шаблонов

D>поддержка шаблонов, ьудет точно.

D> и множественного наследования классов?

D>Не этого не будет, т.к. нет смысла, есть множественное наследоваие интерфейсов. Они с самого начала не стали делать множественное наследовние классов, чтобы не было путаницы как VC++.

"множественное наследоваие интерфейсов"
Нет никакого множественного наследование интерфейсов. Интерфейсы не содержат кода, от них ничего не может наследоваться. Они служат только для того, чтобы один объект мог быть представлен в разных ролях. Иначе полиморфизм работал бы только на одной ветке иерархии.
Java/C# это языки со строго одиночным наследованием, и никак иначе.
Re[3]: Оптимизация и т.п.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.02.03 15:11
Оценка:
Здравствуйте, _vovin, Вы писали:

V>Нет никакого множественного наследование интерфейсов. Интерфейсы не содержат кода, от них ничего не может наследоваться.


Наследоваться, помимо реализации, может еще и интерфейс. Так что когда пишут так
interface IA : IB, IC

это именно множественное наследование интерфейсов


V> Они служат только для того, чтобы один объект мог быть представлен в разных ролях.


Они много для чего нужны. Не только для этого.
... << RSDN@Home 1.0 beta 6a (developer build)>>
AVK Blog
Re[3]: Оптимизация и т.п.
От: МихаилС Россия  
Дата: 10.02.03 15:20
Оценка:
Здравствуйте, _vovin, Вы писали:

V>"множественное наследоваие интерфейсов"

V>Нет никакого множественного наследование интерфейсов.

"... нет никакой ложки ..." (ц) Матрица

V>Интерфейсы не содержат кода, от них ничего не может наследоваться.


от них может наследоваться... хм... интерфейс...

V>Java/C# это языки со строго одиночным наследованием, и никак иначе.


имплементации (реализации (для ревнителей чистоты русского языка))
Re[4]: Оптимизация и т.п.
От: _vovin http://www.pragmatic-architect.com
Дата: 10.02.03 15:23
Оценка:
V>>Нет никакого множественного наследование интерфейсов. Интерфейсы не содержат кода, от них ничего не может наследоваться.

AVK>Наследоваться, помимо реализации, может еще и интерфейс. Так что когда пишут так

AVK>
AVK>interface IA : IB, IC
AVK>

AVK>это именно множественное наследование интерфейсов

Я бы сказал, что это операция композиции интерфейсов. Наследование несет определенную смысловую нагрузку, связянную с
приобретением данных/кода предка.
Если darkwolf имеет в виду именно композицию интерфейсов, тогда вопрос снимается. Извиняюсь, если не так понял.

AVK>

V>> Они служат только для того, чтобы один объект мог быть представлен в разных ролях.

AVK>Они много для чего нужны. Не только для этого.


Да, все это полезные дополнения.
Re[4]: Оптимизация и т.п.
От: _vovin http://www.pragmatic-architect.com
Дата: 10.02.03 15:27
Оценка:
V>>"множественное наследоваие интерфейсов"
V>>Нет никакого множественного наследование интерфейсов.

МС> "... нет никакой ложки ..." (ц) Матрица


V>>Интерфейсы не содержат кода, от них ничего не может наследоваться.


МС> от них может наследоваться... хм... интерфейс...


V>>Java/C# это языки со строго одиночным наследованием, и никак иначе.


МС> имплементации (реализации (для ревнителей чистоты русского языка))


уже разобрались
Re[5]: Оптимизация и т.п.
От: Lloyd Россия  
Дата: 10.02.03 17:08
Оценка: 30 (1)
Здравствуйте, _vovin, Вы писали:


V>Я бы сказал, что это операция композиции интерфейсов. Наследование несет определенную смысловую нагрузку, связянную с

V>приобретением данных/кода предка.

То, о чем вы говорите, называется наследованием реализации. То о чем говорит AndrewVK -- наследование интерфейса. И то, и другое -- наследование.
Re[5]: Оптимизация и т.п.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.02.03 19:06
Оценка:
Здравствуйте, _vovin, Вы писали:

V>Я бы сказал, что это операция композиции интерфейсов.


Ну поспорь с документацией
ms-help://MS.NETFrameworkSDK/csspec/html/vclrfcsharpspec_13_1_2.htm
An interface can inherit from zero or more interfaces, which are called the explicit base interfaces of the interface


Если по твоему inherit переводится как композиция то тогда конечно.

V>Наследование несет определенную смысловую нагрузку, связянную с

V>приобретением данных/кода предка.

Наследование означает только то что некая сущность приобретает некие свойства от своего родителя и ничего больше. То о чем ты говоришь ты сам придумал. Никогда термин наследование не означал наследование именно кода.

AVK>>Они много для чего нужны. Не только для этого.


V>Да, все это полезные дополнения.


Ну неизвестно что и к чему дополнение. Интерфейс это максимально абстрагированный интерфейс доступа к чему либо. А то что интерфейсы можно использовать в качестве механизма виртуального доступа без изменения иерархии наследования это уже следствие. Интерфейс может накрывать уже существующие методы, реализацией интерфейса может быть статический метод, часть реализации интерфейса может быть недоступна из интерфейса реализующего класса и т.д. Так что не надо сужать понятие интерфейса, оно куда шире. Можешь воспринимать интерфейс как маску, которую надевает класс, чтобы казаться кем то.
... << RSDN@Home 1.0 beta 6 (np: тихо) >>
AVK Blog
Re[6]: Оптимизация и т.п.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.02.03 19:10
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>То, о чем вы говорите, называется наследованием реализации. То о чем говорит AndrewVK -- наследование интерфейса. И то, и другое -- наследование.


Смею заметить что я не говорил что наследование это именно наследование интерфейса. Наследование интерфейса это один из способов наследования. Наследоваться может что угодно, не только интерфейс или код.

И еще, об этом речь недавно велась, но все же. Реализация классом интерфейса ни в коем случае наследованием не является.
... << RSDN@Home 1.0 beta 6 (np: тихо) >>
AVK Blog
Re[7]: Оптимизация и т.п.
От: Lloyd Россия  
Дата: 11.02.03 06:33
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

AVK>И еще, об этом речь недавно велась, но все же. Реализация классом интерфейса ни в коем случае наследованием не является.


Повторяю для тех, кто в танке: Реализация классом интерфейса == Наследование интерфейса.

Это общепринятый термин и не надо пытаться сопоставлять его семантику и этимологию. Этимология не обязана соответствовать семантике.
Re[8]: Оптимизация и т.п.
От: Akzhan Россия http://www.akzhan.midi.ru/devcorner/
Дата: 11.02.03 07:20
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Повторяю для тех, кто в танке: Реализация классом интерфейса == Наследование интерфейса.

L>Это общепринятый термин и не надо пытаться сопоставлять его семантику и этимологию. Этимология не обязана соответствовать семантике.

Абсолютно не соответствует истине.
Реализация классом интерфейса — это "реализация интерфейса" или "выполнение контракта".
Никакого отношения к "наследованию реализации" не имеет, кроме как схожести механизмов реализации "наследования" и "реализации".

Но ни один грамотный человек, например, не поставит знак равенства между "отношением генерализации" и "ассоциацией 1:1", хотя реализуются эти механизмы в физической модели часто одинаково.

Точно также и наследование с реализацией. Реализация интерфейса фактически сводится к таблицам виртуальных методов, но разница есть, и она концептуальная.
С уважением,
Акжан, http://www.akzhan.midi.ru/devcorner/ — мой уголок разработчика
Re[9]: Оптимизация и т.п.
От: Lloyd Россия  
Дата: 11.02.03 07:49
Оценка: 55 (3)
Здравствуйте, Akzhan, Вы писали:

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


L>>Повторяю для тех, кто в танке: Реализация классом интерфейса == Наследование интерфейса.

L>>Это общепринятый термин и не надо пытаться сопоставлять его семантику и этимологию. Этимология не обязана соответствовать семантике.

A>Абсолютно не соответствует истине.

A>Реализация классом интерфейса — это "реализация интерфейса" или "выполнение контракта".
A>Никакого отношения к "наследованию реализации" не имеет, кроме как схожести механизмов реализации "наследования" и "реализации".

Акжан, вы недостаточно внимательно прочитали мое послание. Я же явно указал, что семантика и этимолигия слова(термина) не обязаны соотвветствовать друг другу. Вы же взяли и свалили их в одну кучу.

Поясню, что я имею в виду.
И "наследование реализации" и "наследование интерфейса"-- суть термины. У них есть вполне конкретное значение.
Первое -- понятно что такое.
Второе -- это то, что многие (в том числе и вы) называют "реализацией интерфейса" или "выполнением контракта".

Увидив в этих двух теминах общее слове "наследование" (этимология). Вы с радостью набросились на него и начали доказывать, что наследование реализации и реализация интерфейса -- разные вещи (семантика). С тем, что это разные вещи, я абсолютно согласем.

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

A>Но ни один грамотный человек, например, не поставит знак равенства между "отношением генерализации" и "ассоциацией 1:1", хотя реализуются эти механизмы в физической модели часто одинаково.


A>Точно также и наследование с реализацией. Реализация интерфейса фактически сводится к таблицам виртуальных методов, но разница есть, и она концептуальная.


Кто бы спорил.
Re[2]: Будут ли шаблоны и множественное наследование в CLR?
От: alexkro  
Дата: 11.02.03 10:37
Оценка:
Здравствуйте, henson, Вы писали:

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


F>>Планирует ли MS в новой версии .NET добавить в C# поддержку шаблонов и множественного наследования классов?

F>>Или, может, в будущем они планируют?

H>Про C# читал на сайте производителя, что в следующей версии будут аналоги шаблонов, а вот насчет множественного наследования сильно сомневаюсь.


http://www.gotdotnet.com/team/csharp/learn/Future/default.aspx

Почитал я про .NET generics. Первое впечатление было: "обманули!" Обещали одно, а подсовывают совсем другое. Много было разговоров о том, что .NET generics будут мощнее тех, что предложены для Java. Сейчас же кажется, что единственное отличие от Java состоит в том, что generics в .NET будут поддерживать простые типы.

Основная идея остается одинаковой: про типы параметризации runtime не знает ничего, поэтому они считаются System.Object'ами.

Например, такое невозможно:

public class Dictionary<KeyType, ValType>
{
public void Add(KeyType key, ValType val)
{
...
switch(key.CompareTo(x))  // CompareTo() doesn't exist for KeyType
{
}
...
}
}


Нужно будет использовать constraints:

public class Dictionary<KeyType, ValType> where KeyType : IComparable


Понятия специализации для generics нет, typedef нет, generics для отдельных методов тоже нет.

Общее впечатление такое, что generics будут использоваться только для чего-нибудь простого вроде реализации типизированных коллекций.
Re[3]: Будут ли шаблоны и множественное наследование в CLR?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.02.03 20:26
Оценка:
Здравствуйте, alexkro, Вы писали:

A>Например, такое невозможно:...


Честно говоря не ясно почему.

A>Понятия специализации для generics нет, typedef нет, generics для отдельных методов тоже нет.


Ну и на фиг все жто? Разве что для методов можно было бы оставить.

A>Общее впечатление такое, что generics будут использоваться только для чего-нибудь простого вроде реализации типизированных коллекций.


Дык вся соль в том, что в С++ шаблоны давно превратились из средства создания полиморфных алгоритмов в средства исправления проблем языка. Ух лучше пусть сам язык будет более стройным. К тому же у них есть еще одна очень важная задача. Им нужно сохранить в Шарпе простоту. Если насувать всех приколов из С++ в Шарп, то чем тогда Шарп будет лучше С++? С++ ведь никто не отменял! Хочешь выпендриваться создавай проект на МС++. Он уже в VS.NET 2003 очень прилично стал выглядеть.
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Будут ли шаблоны и множественное наследование в CLR?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.02.03 20:27
Оценка:
Здравствуйте, alexkro, Вы писали:

A>Почитал я про .NET generics. Первое впечатление было: "обманули!" Обещали одно, а подсовывают совсем другое. Много было разговоров о том, что .NET generics будут мощнее тех, что предложены для Java. Сейчас же кажется, что единственное отличие от Java состоит в том, что generics в .NET будут поддерживать простые типы.


A>Основная идея остается одинаковой: про типы параметризации runtime не знает ничего, поэтому они считаются System.Object'ами.


Плохо читал. Главное отличие дженериков в джаве от дженериков в дотнете именно в том что последние реально существуют в рантайме. Поищи в поиске, тут как то эта тема подробно обсасывалась, с примерами кода.
... << RSDN@Home 1.0 beta 6 (np: тихо) >>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.