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

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

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

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

Сообщение SovNarKom » 25.05.2006 13:32:25

А они оказываются есть уже... :?

Код: Выделить всё
{$mode objfpc}

type
   generic TList<_T>=class(TObject)
     data : _T;
     procedure Add(item: _T);
   end;

procedure TList.Add(item: _T);
begin
  data:=item;
end;

type
  TMyIntList = specialize TList<integer>;
  TMyStringList = specialize TList<string>;

var
  ilist : TMyIntList;
  slist : TMyStringList;
  someInt : integer;
begin
  someInt:=10;
  ilist := TMyIntList.Create;
  ilist.Add(someInt);
  writeln(ilist.data);
  if ilist.data<>10 then
    halt(1);

  slist := TMyStringList.Create;
  slist.Add('Test');
  writeln(slist.data);
  if slist.data<>'Test' then
    halt(1);
end.
Последний раз редактировалось SovNarKom 26.05.2006 01:21:26, всего редактировалось 1 раз.
SovNarKom
постоялец
 
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]

Сообщение Replicator » 25.05.2006 16:14:38

Какая версия паскаля? В 2.0.2 не работает.
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение Sniper » 25.05.2006 16:29:16

У Сова (Совы %) SVN версия всегда )
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение Replicator » 25.05.2006 17:02:15

Кстати, что за SVN-версия? Чем она отличается от нормального fpc?
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение zub » 25.05.2006 18:54:38

Вот это новость:)
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Сообщение GrayEddy » 25.05.2006 21:51:45

Зря все это приколотили. Это означает излишнее усложнение компилятора, который ничем не будет отличаться в скором от С++.
Многие будут подрываться. И программисты, и разработчики. На глюках компилятора и на неочевидных особенностях такой реализации.
Что я ценю прежде в Паскале как в языке? Надежность. Читабельный код. Быстрота компиляции и исполнения. Вот приоритеты.
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение SovNarKom » 26.05.2006 01:16:15

Replicator
SVN - это доступ к исходникам почти в реальном времени.

Вот кстати список тестов
\tests\test\
tgeneric1.pp
tgeneric2.pp
tgeneric3.pp
tgeneric4.pp
tgeneric5.pp
tgeneric6.pp
ugeneric3.pp
ugeneric4.pp


Мне немного не по себе...
SovNarKom
постоялец
 
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]

Сообщение GigoVich » 26.05.2006 01:40:04

Быстрота компиляции и читабельный код.... зачем, так усложнять????
GigoVich
новенький
 
Сообщения: 99
Зарегистрирован: 07.11.2005 02:05:02
Откуда: г. Москва

Сообщение IUnknown » 26.05.2006 10:15:37

Быстрота компиляции... нынче этим показателем измеряется качество компилятора? Я иногда минут по 20 жду когда проект на C++ скомпилится только результат того стоит в итоге. А если для вас код с дженериками нечитаемый, значит такие вы "специалисты". Языку тоже нужно развиваться, а не следовать воле консервативных фанатов и разработчики FP похоже это понимают.
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

Сообщение Replicator » 26.05.2006 12:55:32

Лично я против шаблонов ничего не имею. Не нравится - не используй. И будет читабельный код. Хотя, что лучше читается и проще выглядит: один шаблон и конкретизация для различных типов, или десяток перегружаемых функций с одинаковым кодом?

А будут ли они в следующей стабильной версии. На сайте написано, что это пока только проект.
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение GrayEddy » 26.05.2006 22:01:46

IUnknown писал(а):Быстрота компиляции... нынче этим показателем измеряется качество компилятора? Я иногда минут по 20 жду когда проект на C++ скомпилится только результат того стоит в итоге.

За все надо надо платить. Как правило, компиляторы Паскаля однопроходные. Оптимизация кода отстутствует (в VP и старом добром TP), в Delphi и FP с этим получше. Но ... возможности современных процессоров практически нивелируют разницу в быстродействии между програмами на C++ и Паскале.

IUnknown писал(а):А если для вас код с дженериками нечитаемый, значит такие вы "специалисты". Языку тоже нужно развиваться, а не следовать воле консервативных фанатов и разработчики FP похоже это понимают.

Я выразил свое мнение. Не имею ничего против дженериков, но они не являются средством первой необходимости. Есть принцип Оккама: "Не следует привлекать новые сущности без самой крайней на то необходимости".
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение zub » 30.05.2006 09:50:36

чтото я на freepascal.org ниче про генерики не нашел, кроме обсуждения как их лучше сделать. никто не в курсе в какой версии они официально появятся и когда она выйдет?
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Сообщение IUnknown » 30.05.2006 10:29:17

В версии 2.1.1 есть.
Может в ней официально и появятся (?)
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

Сообщение Иван Шихалев » 31.05.2006 16:31:43

Официально это будет версия 2.2. Вот только, не факт, что в ней будут все навороты — зависит от того, насколько они к тому моменту стабильны будут.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение Cheb » 31.05.2006 17:54:38

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

Да ну?.. И чего это я тогда мудохался, подобное решение эмулируя через макросы и подстановку одного *.inc файла в двух местах модуля с разными ключами?.. Быстро, да?.. Читабельно?.. Или я пять раз идентичные классы должен был писать для разных типов?..

Однозначно, Must Have!

Официально это будет версия 2.2.

Ура. Троекратное. :D
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

След.

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

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

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

Рейтинг@Mail.ru