Чего мне не хватает в FreePascal

Любые обсуждения, не нарушающие правил форума.

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

Чего мне не хватает в FreePascal

Сообщение vada » 08.04.2011 13:04:35

Общество пользователей Free Pascal весьма многочисленно. Кто-то командой делает проект, кто-то фрилансер одиночка, кто-то работает на дядю...
Мне кажется что практически всем чего-то не хватает в СИНТАКСИСЕ языка. Хочу поговорить имено о базовом синтаксисе. Библиотеки это немного другая облость.

Мне вот, на пример, ОЧЕНЬ не хватает нормальных множеств. Множество ограниченное байтом уже как-то морально устарело. Простое дело UTF символы уже мимо SETов. А так красиво можно было бы сделать с SETами.
А еще мне очень не хватает хитрого IF-а. Вот такого:
A := IF <условие> : <действие при TRUE> : <действие при FALSE>;
Мне скажут, так напиши функцию
Код: Выделить всё
function IF_R(A: Boolean; Result1, Result2: Real): Real;

Кстати, я так и делаю. Но вот какая штуковина получается
Код: Выделить всё
A := IF_R(abs(R)>0.0001, C/R, 0);

Если R будет равно нулю, я полюбасу деление на ноль получу. :)

Кто еще на что пожалуется?
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Чего мне не хватает в FreePascal

Сообщение Nik » 08.04.2011 14:56:39

Именованных массивов в стиле PHP иногда очень не хватает. И не всяких левых библиотек, реализующих подобный функционал, а именно нативной поддержки.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Чего мне не хватает в FreePascal

Сообщение Иван Шихалев » 08.04.2011 14:58:28

Nik писал(а):Именованных массивов в стиле PHP иногда очень не хватает.

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

Re: Чего мне не хватает в FreePascal

Сообщение vada » 08.04.2011 15:01:44

Именованных массивов в стиле PHP иногда очень не хватает.


Не все пых-пых знаю. Можно поподробнее. Может и мне надо :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Чего мне не хватает в FreePascal

Сообщение Nik » 08.04.2011 16:01:25

Это массивы, к элементами которых можно обращаться не по индексам (как в Pascal'е), а по именам. Как-то так, например:

Код: Выделить всё
var
peoples: array;

begin
array['name']:='Иван'
array['age']:='12';


PS. Название немного попутал - не именованный, а ассоциативный это правильно называется.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Чего мне не хватает в FreePascal

Сообщение Maxizar » 08.04.2011 16:47:47

Nik писал(а):Именованных массивов в стиле PHP иногда очень не хватает
Код: Выделить всё
var
peoples: array;

begin
array['name']:='Иван'
array['age']:='12';



Хм... Ну не знаю, когда встает такая задача я все же делаю через массив записей (Record). Да и приходится бегать через индекс... Так что если задача именно стоит в том, чтобы не пробегать массив вручную, в поисках индекса в записи которой поле name='Иван'. и уже менять его возраст.. То конечно Вы правы. (хотя как я понимаю это все равно сведется к пробеганию всего массива, но уже это будет делать сам компилятор) и пускай делал бы тоже самое, просто в коде это выглядело бы более компактно и более лаконично... ИМХО :D

Вот что мне нравится из всего языка С++ так это его конструкция For, в которой можно задать функцию приращения аргумента... Да я знаю что это можно реализовать в цикле While но иногда For был бы более красив :)...

Хотя весь язык С++ меня реально убивает, Вот скажем скобочки {}вместо begin end; реально раздражают ну не знаю вот меня они прям убивают на большом мониторе их вообще можно проглядеть а начать читать другой блок кода :(... (кто то скажет увеличь шрифт :mrgreen: :mrgreen: )
Или скажем Конструкция сравнения адресов на (C++) :
Код: Выделить всё
&A && &B

и тоже самое на Паскале:
Код: Выделить всё
@A and @B

Ну просто прелесть :D Даже собачка (@) Созвучна с Адрес
Такое чувство что у Ритчи а потом и Страуструпа не хватило фантазии и они использовали ограниченное количество значков…

А так меня Free Pascal устраивает полностью. Хоть возможно мне и придется на будущей работе программировать только под Си и скорее всего Асме… Free Pascal мой любимый язык.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Чего мне не хватает в FreePascal

Сообщение vada » 08.04.2011 16:56:00

Nik писал(а):Это массивы, к элементами которых можно обращаться не по индексам (как в Pascal'е), а по именам.


А! Понятно. Это Hashtable в JAVA. Удобная штука. В JAVA работает чрезвычайно быстро.
Вернее даже не Hashtable, а более интересная штука.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Чего мне не хватает в FreePascal

Сообщение Vadim » 08.04.2011 18:26:51

Nik писал(а):array['name']:='Иван'
array['age']:='12';

"Есть такая партия!" (С) В.И. Ленин. :D
Именно таким образом организовано общение в TStringList. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Чего мне не хватает в FreePascal

Сообщение hinst » 08.04.2011 18:36:49

Vadim: +1, подтверждаю
:!: мне не хватает полноценной поддержки шаблонов. Хотелось бы, чтобы они были попродвинутее.
:!: алсо, хотелось бы ещё макроподстановку, чтобы как в С++ можно было делать
Код: Выделить всё
#define sum(a, b) (a)+(b)

Впрочем, если бы хотя-бы одно из перечисленного было бы реализовано, то я был бы уже очень доволен. Ибо, если будут полноценные шаблоны, то макроподстановку можно фтопку отправлять
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Чего мне не хватает в FreePascal

Сообщение Nik » 08.04.2011 18:47:17

"Есть такая партия!" (С) В.И. Ленин.
Именно таким образом организовано общение в TStringList.

Хм... Можно примерчик в студию? Что-то не заметил ничего похожего в TStringList.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Чего мне не хватает в FreePascal

Сообщение Maxizar » 08.04.2011 19:31:06

Ну наверное типо про это имеется ввиду...
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var L:TStringList;
    B,B2:TButton;
begin
    L:=TStringList.Create;
    B:=TButton.Create(Self);
    B.Caption:='Привет';
    B.Tag:=1;

    B2:=TButton.Create(Self);
    B2.Caption:='Привет2';
    B2.Tag:=2;

    L.AddObject('Button',B);
    L.AddObject('Button2',B2);

    L.Values['Button']:='123';

    Caption:=L.Values['Button']; //Считываем значение Value, строковое, согласно Имени ='Button'
                                              //Это короче идет еще со TStrings там короче хранится Name + разделитель + Value - все в одной строке.

    //Ну и через объекты, поиск по имени
    Caption:=Caption+'  '+TButton(L.Objects[L.IndexOf('Button')]).Caption;
    Caption:=Caption+'  '+TButton(L.Objects[L.IndexOf('Button2')]).Caption;

    B2.Free;
    B.Free;
    L.Free;
end;
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Чего мне не хватает в FreePascal

Сообщение evd » 08.04.2011 19:36:49

Скорее всего про это
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
   SL: TStringList;
begin
     SL:=TStringList.Create;
     SL.Values['Test1']:='Value1';
     SL.Values['Test2']:='Value2';

end;
Аватара пользователя
evd
новенький
 
Сообщения: 21
Зарегистрирован: 13.09.2009 09:42:28
Откуда: Вологда

Re: Чего мне не хватает в FreePascal

Сообщение Nik » 08.04.2011 20:33:16

Скорее всего про это

Вот про эту фишку не знал :( Век живи - век учись :) Хотя массивы всё равно удобнее - там можно не только строки хранить (без преобразования типов).
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Чего мне не хватает в FreePascal

Сообщение devels » 08.04.2011 21:43:14

Так люди, TStringList это вам не хеш-таблица, и скорость поиска в нем в 1000 раз медленнее чем в хеш таблице, для начала нужно собраться и реализовать быструю хеш-таблицу, то что есть в fpc - это быстрая реализация конечно, но все равно ее скорость работы нужно увеличить в 2-3 раза. Поэтому считаю что встроенного типа для хеш-таблиц не должно быть, для чего созданы классы и объекты?

Добавлено спустя 2 минуты 25 секунд:
vada писал(а):Общество пользователей Free Pascal весьма многочисленно. Кто-то командой делает проект, кто-то фрилансер одиночка, кто-то работает на дядю...
Мне кажется что практически всем чего-то не хватает в СИНТАКСИСЕ языка. Хочу поговорить имено о базовом синтаксисе. Библиотеки это немного другая облость.

Мне вот, на пример, ОЧЕНЬ не хватает нормальных множеств. Множество ограниченное байтом уже как-то морально устарело. Простое дело UTF символы уже мимо SETов. А так красиво можно было бы сделать с SETами.
А еще мне очень не хватает хитрого IF-а. Вот такого:
A := IF <условие> : <действие при TRUE> : <действие при FALSE>;
Мне скажут, так напиши функцию
Код: Выделить всё
function IF_R(A: Boolean; Result1, Result2: Real): Real;

Кстати, я так и делаю. Но вот какая штуковина получается
Код: Выделить всё
A := IF_R(abs(R)>0.0001, C/R, 0);

Если R будет равно нулю, я полюбасу деление на ноль получу. :)

Кто еще на что пожалуется?


Это называется тернарный оператор, присутствует в си, X = True ? 0 : 1;

В ruby сделано так как вы придумали, через if.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Чего мне не хватает в FreePascal

Сообщение *vmr » 08.04.2011 22:08:51

Nik писал(а):Именованных массивов в стиле PHP иногда очень не хватает. И не всяких левых библиотек, реализующих подобный функционал, а именно нативной поддержки.

Та ну нафиг, нафик. :)
Не хватало еще в нативную поддержку пихать то, что должно быть библиотекой.
Сами используем собственный класс с перферансом и поэтессами, и очень довольны. И не нужно никаких нативных — там не будет перферанса :D

Код: Выделить всё
var
  dl: TDataList;
begin
   ...
  dl['foo'] := 'bar';
  dl.Int['foobar'] := 234;
  if dl.Bool['foobar'] then Caption := dl.WideStr['foo'];
end;
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

След.

Вернуться в Потрепаться

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

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

Рейтинг@Mail.ru