Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.07.24;
Скачать: CL | DM;

Вниз

Чем отличаются Дельфийские дженерики от C++ шаблонов?   Найти похожие ветки 

 
IPranker ©   (2011-04-05 23:38) [0]

Собственно усё.

P.S. И да, что быстрее TList старый или новый, который на дженериках?


 
Palladin ©   (2011-04-05 23:42) [1]

с++  - изначально часть языка
делфи - костыли, надстройка, нарост, опухоль
сам делай выводы


 
Palladin ©   (2011-04-05 23:44) [2]


> P.S. И да, что быстрее TList старый или новый, который на
> дженериках?

обычно: чем больше приходится совершать операций нижнего уровня, тем выше производительность
это не всегда так, но обычно


 
Eraser ©   (2011-04-05 23:47) [3]

> [1] Palladin ©   (05.04.11 23:42)


> делфи - костыли, надстройка, нарост, опухоль

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


 
IPranker ©   (2011-04-05 23:49) [4]


>Palladin ©   (05.04.11 23:42) [1]
> с++  - изначально часть языка

Ну в C не было шаблонов.
Можно также сказать и про Дельфи.
Добавить дженерики. И переименовать язык.
К примеру NeoDelphi, Delphi+ и т.д.
Тоже будет частью языка.

> делфи - костыли, надстройка, нарост, опухоль

Хотеть конкретики.


 
DVM ©   (2011-04-05 23:51) [5]

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


 
Palladin ©   (2011-04-06 00:06) [6]


> Ну в C не было шаблонов.

http://lurkmore.ru/Внезапно
с и с++ разные языки


> Eraser ©   (05.04.11 23:47) [3]

это понятно, и потому для залипух/небольших инструментов - идеально, но если мне нужна скорость на больших объемах данных - я воспользуюсь TList, а то и вообще getmem


 
IPranker ©   (2011-04-06 00:16) [7]


> с и с++ разные языки


Спасибо, КЭП.
http://lurkmore.ru/%D0%9A%D1%8D%D0%BF

Ты не понЕл, твой аргумент, мол раз "шаблоны встроены в язык C++", не о чём не говорит. LOL.


 
Palladin ©   (2011-04-06 00:23) [8]

слово "понЕл" - встроен в твой язык, слово "понял" - часть языка
чувствуешь разницу?
http://lurkmore.ru/Файл:Shkolota_nah.jpg


 
IPranker ©   (2011-04-06 00:31) [9]

Удалено модератором


 
Игорь Шевченко ©   (2011-04-06 00:34) [10]


> что быстрее TList старый или новый, который на дженериках?


Одинаково


 
IPranker ©   (2011-04-06 00:38) [11]

Удалено модератором


 
DiamondShark ©   (2011-04-06 01:04) [12]


> IPranker ©   (05.04.11 23:38) 
> Чем отличаются Дельфийские дженерики от C++ шаблонов?

http://msdn.microsoft.com/en-us/library/c6cyy67b.aspx
Там про C# в сравнении с C++, но CLS-языки мало чем отличаются, так что всё, что сказано для C#, применимо и к Дельфи.

Самое главное отличие -- семантическое.
Шаблоны C++ -- это, фактически, макросы, разворачиваемые на уровне исходного текста во время компиляции.
Дженерики -- полноценные типы.


 
oxffff ©   (2011-04-06 08:33) [13]

Шаблоны являются гетерогенными параметризованными типами с unbound параметрами.
Generics являются гомогенными параметризованными типами с bound параметрами(реализуют F-Bounded полиморфизм).

P.S.
Подробнее в суровых книгах.


 
oxffff ©   (2011-04-06 08:39) [14]

Delphi generics имеют ошибки

Об этом я написал
https://forums.embarcadero.com/thread.jspa?messageID=292726
(там даже Марк Хоффман Remobjects отписался)

Имеют недореализации, нет constraints для массивов.


 
Ega23 ©   (2011-04-06 09:52) [15]

Кто-то, вроде, приводил код с TList. На дженериках оказалось не оптимально.
С другой стороны - реально удобно. За всё надо платить.


 
Игорь Шевченко ©   (2011-04-06 10:28) [16]


> Шаблоны являются гетерогенными параметризованными типами
> с unbound параметрами.
> Generics являются гомогенными параметризованными типами
> с bound параметрами(реализуют F-Bounded полиморфизм).


Ты пальцем покажи, а потом выделывайся


 
oxffff ©   (2011-04-06 10:44) [17]


> Игорь Шевченко ©   (06.04.11 10:28) [16]
>
> > Шаблоны являются гетерогенными параметризованными типами
>
> > с unbound параметрами.
> > Generics являются гомогенными параметризованными типами
>
> > с bound параметрами(реализуют F-Bounded полиморфизм).
>
>
> Ты пальцем покажи, а потом выделывайся


Из
http://msdn.microsoft.com/en-us/library/c6cyy67b.aspx


 
oxffff ©   (2011-04-06 10:49) [18]

The following are the key differences between C# Generics and C++ templates:

Гомогенные параметры
C#, Только типы

Гетерогенные параметры
-типы
-C# does not allow non-type template parameters, such as template C<int i> {}.
-In C#, a generic type parameter cannot itself be a generic, although   constructed types can be used as generics. C++ does allow template parameters.

UnBound+duck typing

C++ allows code that might not be valid for all type parameters in the template, which is then checked for the specific type used as the type parameter.
For example, in C++ it is possible to write a function that uses the arithmetic operators + and - on objects of the type parameter, which will produce an error at the time of instantiation of the template with a type that does not support these operators.

Bounded
C# requires code in a class to be written in such a way that it will work with any type that satisfies the constraints. In C#  the only language constructs allowed are those that can be deduced from the constraints.

F-Bounded - параметр тип может являться частью constraint


 
_Юрий   (2011-04-06 21:08) [19]

Не было в Delphi при царе горохе дженериков, значит и не надо, значит отстой.
А в с++ при царе горохе шаблоны были - значит это нормально.
Логично же, черт побери.


 
Inovet ©   (2011-04-06 21:16) [20]

> [19] _Юрий   (06.04.11 21:08)
> А в с++ при царе горохе шаблоны были - значит это нормально.

Так тоже после Гороха появились.


 
DiamondShark ©   (2011-04-06 21:50) [21]


> Ega23 ©   (06.04.11 09:52) [15]
> Кто-то, вроде, приводил код с TList. На дженериках оказалось
> не оптимально.

Чем же оно не оптимально, если List<T> -- это всего лишь обертка над T[]?


 
Ega23 ©   (2011-04-06 22:25) [22]


> Чем же оно не оптимально, если List<T> -- это всего лишь
> обертка над T[]?


Искать лениво, я в обсуждении не участвовал, ибо в РО был. Но что-то такое проскакивало.
Универсальное не может быть оптимальным по определению, это любому вменяемому человеку ясно. За универсальность надо платить.
С другой стороны - удобно, о чём я уже писал выше.


 
Игорь Шевченко ©   (2011-04-06 22:29) [23]


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


Ну ты можешь посмотреть исходники, поискать в интернете...Для повышения, так ска-ать, вменяемости


 
Плохиш ©   (2011-04-06 23:23) [24]

Я тут LINQ к T[] применил, мне понравилось :-)

PS. Мелкий софт решил снизить цены на SQL-кодеров :-))


 
_oxffff   (2011-04-07 09:13) [25]

TMyList<T>=record
type
PItem=^TItem;
TItem=record
Data:T;
Next:PItem;
end;
Private
Head:PItem;
public
//методы
procedure add..
procedure remove..
procedure insert..
end;


 
Eraser ©   (2011-04-07 15:42) [26]

> [22] Ega23 ©   (06.04.11 22:25)

Эта универсальность достигается на уровне компилятора, а не runtime.


 
_Юрий   (2011-04-07 19:02) [27]


> Плохиш ©   (06.04.11 23:23) [24]
>
> Я тут LINQ к T[] применил, мне понравилось :-)


бойан)



Страницы: 1 вся ветка

Текущий архив: 2011.07.24;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.007 c
4-1249279630
DevilDevil
2009-08-03 10:07
2011.07.24
Выделен текст в ComboBox


1-1257584203
alexrayne
2009-11-07 11:56
2011.07.24
resources vs ini для сохранения свойств


15-1301903703
oldmanAPOOERE
2011-04-04 11:55
2011.07.24
Сегодня - день Интернета.


2-1303362776
petvv
2011-04-21 09:12
2011.07.24
Закончилась ли операция чтения записи


2-1302617916
Gu
2011-04-12 18:18
2011.07.24
Отловить таймер