Новая зверушка "NewPascal" & бодания в команде FPC ?

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

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

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение serbod » 31.10.2018 12:53:32

debi12345 писал(а):Нет особого оверхэда - строковые ключи тупо хэшируются.

Хеш-таблица это массив указателей, размером близкий к исходному массиву. Для массива меньше десятка значений проще и быстрее найти нужное перебором. А по мере роста размера исходного массива, придется ступенчато увеличивать и размер хеш-таблицы, а затем ее полностью перезаполнять. Но на практике, ощутимые проблемы будут только при размерах свыше сотен тысяч элементов.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение Mikhail » 31.10.2018 18:13:50

serbod писал(а):Не понимаю, в чем сложность реализации ARC, если оно уже есть?

Если к записям прикрутить, как необязательный функционал, то нет там никаких проблем.

serbod писал(а):Почему нельзя просто добавить typed pointer в variant? А если еще добавить в variant тип dictionary (array [string] of variant) то сразу добавляется совместимость со всеми современными языками и сериализация во всякие JSON вообще без проблем.

А зачем?
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение debi12345 » 31.10.2018 19:21:08

А зачем?

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

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение скалогрыз » 31.10.2018 19:54:25

serbod писал(а):Я бы вместо inline переменных в языке сделал inline редактор переменных в IDE. Поставил двоеточие после слова - появляется подсказка автодополнения типа, а потом редактор сам переносит обьявление переменной за пределы блока, оставляя только название.

ставишь курсор в переменную и нажимаешь Ctrl+Shift+C

например (| - указывает положение курсора)
Код: Выделить всё
procedure Run(const s: string);
begin
  for |i:=0 to length(s) do
     writeln(s[i]);
end;

Ctrl+Shift+C
Код: Выделить всё
procedure Run(const s: string);
var
  i: Integer;
begin
  for |i:=0 to length(s) do
     writeln(s[i]);
end;

правда, он слишком мудрый, и если попробовать дополнить переменную s (предварительно убрав её из параметров), то ничего не произойдёт. (очевидно, пытается понят тип из контекста)

Но вот такое он понимает:
Код: Выделить всё
procedure Run(const s: string);
var
  i: Integer;
begin
  for i:=0 to length(s) do begin
    |j:=i / 2;
    writeln(s[i],' ',j);
  end;
end;

подставится "j" с типом Extended!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение Mirage » 31.10.2018 23:57:21

скалогрыз писал(а):а вот кстати, (Фпц) кор, прочитал про новые inline переменные, и их реакция звучит примерно так:"Мы можем заказать ядерный удар по их штаб-квартире?""Кто-нибудь за то, чтобы прикратить Делфи совместимость с версии 10.2?"


Ясное дело. Это ж поддержать еще надо, как минимум в {$MODE DELPHI}.:)
Кстати, а где это происходит? В fpc-devel не видел такого. Вообще в целом в сообществе более чем спокойно воспринята новость. Я думал копий больше ломать будут.

serbod писал(а):Не понимаю, в чем сложность реализации ARC, если оно уже есть?


Сложность любой фичи в том, что прежде чем делать "как в C#" или еще где, надо сесть и как следует подумать, как она сочетается с другими фичами и вообще с языком. И нет ли более хорошего способа достижения того же самого.

serbod писал(а):Я бы вместо inline переменных в языке сделал inline редактор переменных в IDE. Поставил двоеточие после слова - появляется подсказка автодополнения типа, а потом редактор сам переносит обьявление переменной за пределы блока, оставляя только название.


Подобное - уже давно обязательный атрибут современной IDE. Даже для языков с inline объявлениями.

скалогрыз писал(а):правда, он слишком мудрый, и если попробовать дополнить переменную s (предварительно убрав её из параметров), то ничего не произойдёт.


Так надо тип еще спрашивать. Особенно, если не удалось его вывести. Да и даже если удалось, не всегда он правильный. Типа так:
Изображение
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение скалогрыз » 01.11.2018 00:35:28

Mirage писал(а):Кстати, а где это происходит? В fpc-devel не видел такого.

спец-рассылка.

Mirage писал(а):Вообще в целом в сообществе более чем спокойно воспринята новость. Я думал копий больше ломать будут.

но мы всё-равно запасаемся попкорном! Потому что в FPC копий поломают больше

Mirage писал(а): как минимум в {$MODE DELPHI}

скорее в DELPHIUNICODE
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение debi12345 » 02.11.2018 11:35:51

Хм, FPC-шаблоны тоже,как в С++, не проверяет наличие полей и методов у шаблонных параметров :
Код: Выделить всё
template <class S, class T>
void putParamError(S& out, string ctx, string fmt, T& data){
    out.errorMessages.length(out.errorMessages.length() + out.errorCount + 1);
    out.errorMessages[out.errorCount++] = CORBA::string_dup(str(boost::format{ctx + ": " + fmt} % data).c_str());
#ifdef DEBUG
    cout << out.errorMessages[out.errorCount-1] << endl;
#endif
}
это же чистой воды #DEFINE :shock:
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение Ichthyander » 02.11.2018 21:22:28

скалогрыз писал(а):
serbod писал(а):Я бы вместо inline переменных в языке сделал inline редактор переменных в IDE. Поставил двоеточие после слова - появляется подсказка автодополнения типа, а потом редактор сам переносит обьявление переменной за пределы блока, оставляя только название.

ставишь курсор в переменную и нажимаешь Ctrl+Shift+C

например (| - указывает положение курсора)
Код: Выделить всё
procedure Run(const s: string);
begin
  for |i:=0 to length(s) do
     writeln(s[i]);
end;

Ctrl+Shift+C
Код: Выделить всё
procedure Run(const s: string);
var
  i: Integer;
begin
  for |i:=0 to length(s) do
     writeln(s[i]);
end;

правда, он слишком мудрый, и если попробовать дополнить переменную s (предварительно убрав её из параметров), то ничего не произойдёт. (очевидно, пытается понят тип из контекста)

Но вот такое он понимает:
Код: Выделить всё
procedure Run(const s: string);
var
  i: Integer;
begin
  for i:=0 to length(s) do begin
    |j:=i / 2;
    writeln(s[i],' ',j);
  end;
end;

подставится "j" с типом Extended!

Вот, кстати, спасибо, за подсказку )) Не знал, я про добавление переменной в var
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение sign » 06.11.2018 07:06:27

Ichthyander писал(а):Не знал, я про добавление переменной в var

"О сколько нам открытий чудных"
Даёт прочтенье справки.

Screenshot_1.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Новая зверушка "NewPascal" & бодания в команде FPC ?

Сообщение Ichthyander » 06.11.2018 11:30:13

Справку по горячим клавишам действительно не читал. А в целом все это ясно. Завершением кода активно пользовался, но не знал, что это работает не только для завершения классов, но и для объявления переменных
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Пред.

Вернуться в Сторонние средства

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

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

Рейтинг@Mail.ru