Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1302211804
Юрий
2011-04-08 01:30
2011.07.24
С днем рождения ! 8 апреля 2011 пятница


15-1302080998
oldman
2011-04-06 13:09
2011.07.24
Windows7 и DOS-окна


15-1293777493
Медвежонок ХМЛ
2010-12-31 09:38
2011.07.24
корпорация зла


2-1303201499
harisma
2011-04-19 12:24
2011.07.24
Не может найти модули


2-1302772191
Учусь
2011-04-14 13:09
2011.07.24
Inno Setup и папки юзера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский