Форум: "Прочее";
Текущий архив: 2011.07.24;
Скачать: [xml.tar.bz2];
ВнизЧем отличаются Дельфийские дженерики от 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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.003 c