Шаблоны (Templates) = Generic

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение debi12345 » 01.06.2006 12:55:24

Однозначно, Must Have!
Официально это будет версия 2.2.

Ура. Троекратное. :D

Согласен - тоже очень обрадовался. Невероятно полезная иногда фишка - когда нужны ультра-быстрые дженерик-алгоритмы ( сортировка, сравнение, пересечение, push/pop, сдвиг и т.п.), к в которых использование Variant недопустимо из-за скорости (Variant-тип приводит к замедлению в 15..50 раз ).

Теперь остается цикловые переменные реализовать ( еще разок наплевав на "строгость" языка ) - и С++ будет догнан по всем статьям.

Вроде, и база COM-технологии на С++ темплэйтах базируется. Значит - и здесь прямая дорога открывается.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Иван Шихалев » 01.06.2006 14:27:24

debi12345 писал(а):Согласен - тоже очень обрадовался.

Чему бы? Неизвестно когда она будет и какой... В конце концов версия 1.2 так и не появилась, став 2.0, причем с меньшим набором фич, чем планировался...[/quote]
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение zub » 01.06.2006 15:01:03

Иван Шихалев писал(а):Неизвестно когда она будет и какой...

хочется верить в лучшее....
А планируется какоенибудь развитие языка pascal? ато генерики только в FPC както сковывают их применение, я вот пишу и отлаживаю на дельфи, корявая IDE у FPC, неполучается на него полностью переехать
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Сообщение GrayEddy » 01.06.2006 15:32:38

Согласен - тоже очень обрадовался. Невероятно полезная иногда фишка - когда нужны ультра-быстрые дженерик-алгоритмы ( сортировка, сравнение, пересечение, push/pop, сдвиг и т.п.), к в которых использование Variant недопустимо из-за скорости (Variant-тип приводит к замедлению в 15..50 раз ).


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

Теперь остается цикловые переменные реализовать ( еще разок наплевав на "строгость" языка ) - и С++ будет догнан по всем статьям.

Сильно сомневаюсь. По фичам - да (и то не всем), по производительности - никогда.
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение Иван Шихалев » 01.06.2006 15:35:34

GrayEddy писал(а):по производительности - никогда

И что такого в языке С++, что повышает производительность?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение debi12345 » 01.06.2006 17:15:29

Ну не знаю. Старый способ - указатели на функции с алгоритмами еще никто не отменял.

На мой взгляд, использование дженериков узкоспециализировано.

Скорее, непривычно - нужно и мыслить научиться абстрактно, дженерикалли. А если так - то и область прмененения ого-го какая открывается. Например, загнать набор чисел в список, а затем его шифтить N-е число раз, да еще в замкунутом цикле. Все удобнее, чем "for" - не нужно за границами следить, и т.п.

С++ шаблоны даже позволяют создавать и инитить сцецэкземпляры до ( ! ) main {}, то есть получаются эдакие шаблонные константы.

Теперь остается цикловые переменные реализовать ( еще разок наплевав на "строгость" языка ) - и С++ будет догнан по всем статьям.

Сильно сомневаюсь. По фичам - да (и то не всем), по производительности - никогда.

А еще очень бы хотелось позаимствовать из С механизм "L-value", это когда работают конструкции типа

"if ( (a+=2) > 3 ) {..}".

А то в Паскале приходится где-то запоминать промежуточный результат "(a+= 2)" .
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение GrayEddy » 01.06.2006 17:28:00

Иван Шихалев писал(а):
GrayEddy писал(а):по производительности - никогда

И что такого в языке С++, что повышает производительность?

[/quote]

Я имел в виду быстродействие.
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy » 01.06.2006 17:38:10

Да ради бога с этими расширениями и пожеланиями. Это не от нас зависит, а от разработчиков.
Вот когда доживем до версии 2.2 - тогда и посмотрим. Ждать, наверное, придется долго.
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение SovNarKom » 01.06.2006 18:37:18

GrayEddy
Я имел в виду быстродействие.

Ну и что повышает в С быстродействие?
Всё зависит не от языка, а от компилятора.
SovNarKom
постоялец
 
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]

Сообщение GrayEddy » 01.06.2006 19:56:34

Ну и что повышает в С быстродействие?
Всё зависит не от языка, а от компилятора.


Разве? Некоторые интерпретаторы бьют компиляторы.
Например, SPF-Forth в нескольких тестах обгоняет Visual C++.
Встречный вопрос: что мешало Паскалю обойти или сравняться с С? Ведь семантика языков почти одинакова.

Но мы отклоняемся от темы...
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение pda » 02.06.2006 02:43:06

GrayEddy писал(а):Например, SPF-Forth в нескольких тестах обгоняет Visual C++.

Сразу вспоминается старая хохма, про чудо fortran, который лучше ассемблера, т.к. некоторые операции выполняет в обход процессора. 8)

А в некоторых тестах лучше C++ оказывается C# на .NET, Java, даже Smalltalk. так какие мы выводы сделаем? ;-)
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Сообщение Mirage » 02.06.2006 09:09:35

Мда... Зачем столько новых ключевых слов??
Такие "генерики" делаются посредством переименования типов и инклудами начиная как минимум с D5, хотя удобно, не спорю.
Только так как эту "продвинутую" фичу наверняка будут использовать часто (где надо и где не надо), то это еще одна трещина в мостике Delphi-FPC.
Теперь надо STL писать - единственное что оправдывает существование шаблонов.:)

debi12345 писал(а):Теперь остается цикловые переменные реализовать ( еще разок наплевав на "строгость" языка ) - и С++ будет догнан по всем статьям.


Ага, кроме производительности, размера exe (долбаный линкер так и не починили?), нормального IDE и кучи библиотек, не говоря уже о поддержанных платформах.

Вроде, и база COM-технологии на С++ темплэйтах базируется. Значит - и здесь прямая дорога открывается.


Дорога к костылям нужным из-за отсутствия модульности и метаклассов? Хотя по-моему COM к шаблонам отношения не имеет. А какие проблемы с COM были?

А еще очень бы хотелось позаимствовать из С механизм "L-value", это когда работают конструкции типа

"if ( (a+=2) > 3 ) {..}".


Только непонятно зачем тогда Паскаль? С++ в руки и вперед!
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Сообщение debi12345 » 02.06.2006 11:15:28

Теперь надо STL писать - единственное что оправдывает существование шаблонов.:)

100% - причем просто перевести код алгоритмов из С в Паскаль, 90% автоконвертором . Или нет ? Где проблема ?

Ага, кроме производительности,

Да не проигрывает он безнадежно - в простейших программах, где не используются "classes" (TObject&Co, RTTI,...)

размера exe (долбаный линкер так и не починили?),

Причем тут линкер ? Просто типы и код нужно писать так, чтобы смартлинку была возможность себя проявить.

кучи библиотек

Какая проблема готовые С-шные цеплять через "cdecl/stdcall" ? Разве что придется возиться с предварительным выделением памяти - коронной "фишкой" С.

Только непонятно зачем тогда Паскаль? С++ в руки и вперед!

interface/implementation/initialization/finalization, Result:=, property..., (Ansi/Wide)String, -Fcutf8, SQL DB, Lazarus/MSEide, ...
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Mirage » 02.06.2006 12:21:13

debi12345 писал(а):100% - причем просто перевести код алгоритмов из С в Паскаль, 90% автоконвертором . Или нет ? Где проблема ?


Я не знаю досконально синтаксис шаблонов С++, но по-моему он несколько сложнее простенькой подстановки типов. Такая подстановка возможна в Дельфи с очень давних пор.
Если не сложнее, то это профанация века.:)

Да не проигрывает он безнадежно - в простейших программах, где не используются "classes" (TObject&Co, RTTI,...)


Самое вкусное. Правда я не замечал что это замедляет.
Речь вообще идет о генерации кода. Компилятор С++ пишет сам Интел (да и АМД вроде тоже). Правда ссылки на более-менее реальные тесты так никто и не дал, но разница процентов в 10-20 должна быть.

Причем тут линкер ? Просто типы и код нужно писать так, чтобы смартлинку была возможность себя проявить.


В Дельфи размер того же кода в полтора раза меньше. Это лучшее, чего удается добиться от FPC. Какой нафиг он смарт если он такой тупой?

Result:=,


Вот это язык не особо красит. Я бы заменил на Return().

-Fcutf8


А это чего?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Сообщение Replicator » 02.06.2006 12:42:24

Ну вот, теперь давайте сделаем Pascal в точности как С++ и все будет ОК :lol: Это разные языки и синтаксис разный и возможности разные. Зачем сравнивать?

P.S. Про размер кода. g++ и fpc генерируют примерно одинаковый код. Отличия незначительные.

P.P.S. На С++ напишите простенькое кроссплатформенное приложение с GUI интерфейсов размером, не требующее дополнительных библиотек размером около 400 Кб. :wink:
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Пред.След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru