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

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

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

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

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

Сообщение SovNarKom »

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

Код: Выделить всё

{$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 раз.
Replicator
постоялец
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven
Контактная информация:

Сообщение Replicator »

Какая версия паскаля? В 2.0.2 не работает.
Sniper
постоялец
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение Sniper »

У Сова (Совы %) SVN версия всегда )
Replicator
постоялец
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven
Контактная информация:

Сообщение Replicator »

Кстати, что за SVN-версия? Чем она отличается от нормального fpc?
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Вот это новость:)
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

Зря все это приколотили. Это означает излишнее усложнение компилятора, который ничем не будет отличаться в скором от С++.
Многие будут подрываться. И программисты, и разработчики. На глюках компилятора и на неочевидных особенностях такой реализации.
Что я ценю прежде в Паскале как в языке? Надежность. Читабельный код. Быстрота компиляции и исполнения. Вот приоритеты.
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

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

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


Мне немного не по себе...
GigoVich
новенький
Сообщения: 99
Зарегистрирован: 07.11.2005 01:05:02
Откуда: г. Москва
Контактная информация:

Сообщение GigoVich »

Быстрота компиляции и читабельный код.... зачем, так усложнять????
IUnknown
новенький
Сообщения: 73
Зарегистрирован: 10.03.2006 13:25:02
Откуда: Донецк

Сообщение IUnknown »

Быстрота компиляции... нынче этим показателем измеряется качество компилятора? Я иногда минут по 20 жду когда проект на C++ скомпилится только результат того стоит в итоге. А если для вас код с дженериками нечитаемый, значит такие вы "специалисты". Языку тоже нужно развиваться, а не следовать воле консервативных фанатов и разработчики FP похоже это понимают.
Replicator
постоялец
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven
Контактная информация:

Сообщение Replicator »

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

А будут ли они в следующей стабильной версии. На сайте написано, что это пока только проект.
GrayEddy
постоялец
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Сообщение GrayEddy »

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

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

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

Я выразил свое мнение. Не имею ничего против дженериков, но они не являются средством первой необходимости. Есть принцип Оккама: "Не следует привлекать новые сущности без самой крайней на то необходимости".
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

чтото я на freepascal.org ниче про генерики не нашел, кроме обсуждения как их лучше сделать. никто не в курсе в какой версии они официально появятся и когда она выйдет?
IUnknown
новенький
Сообщения: 73
Зарегистрирован: 10.03.2006 13:25:02
Откуда: Донецк

Сообщение IUnknown »

В версии 2.1.1 есть.
Может в ней официально и появятся (?)
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Официально это будет версия 2.2. Вот только, не факт, что в ней будут все навороты — зависит от того, насколько они к тому моменту стабильны будут.
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

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

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

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

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

Ура. Троекратное. :D
Ответить