free pascal vs Delphi 10.3

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

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

Re: free pascal vs Delphi 10.3

Сообщение iskander » 05.06.2020 20:12:55

Alex2013 писал(а):На nil есть специальная заглушка

Желательно подробнее с этого места.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: free pascal vs Delphi 10.3

Сообщение Alex2013 » 05.06.2020 20:36:52

Ладно признаюсь снова копать лень, но весь этот спор напомнил одну старую "разборку" ...
В этой теме ...
viewtopic.php?f=5&t=11461&start=30
(Я честно говоря сам не ожидал, что использование динамического массива настолько проигрывает стандартному списку особенно в плане очистки )

Зы
Код с использованием динамического массива писал не я. :idea:
Последний раз редактировалось Alex2013 05.06.2020 21:11:52, всего редактировалось 8 раз(а).
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: free pascal vs Delphi 10.3

Сообщение iskander » 05.06.2020 20:50:10

То ли этот форум модерируется, то ли нет, но в любом случае эта говёшка здесь точно лишняя.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: free pascal vs Delphi 10.3

Сообщение Alex2013 » 05.06.2020 21:08:57

iskander писал(а):То ли этот форум модерируется, то ли нет, но в любом случае эта говёшка здесь точно лишняя.

Ладно мир... Картинку убрал . Но суть в том что сколько я не пытался использовать динамический масив это всегда получалось медленнее чем при создании динамических структур доступа к данным в памяти любым другим способом .

Добавлено спустя 44 минуты 15 секунд:
Кстати LGenerics требует fpc 3.2 так что поверить более "продвинутый" пример со стандартным 3.0.4 не получилось .
Зы
Народ где бы готовые стабильные бинарники старших версий фпс взять ? (Собирал несколько раз с svn но все что-то глючное выходит ) :roll:
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: free pascal vs Delphi 10.3

Сообщение MylnikovDm » 06.06.2020 02:29:09

runewalsh писал(а):Этот идиотизм было легко допустить, т. к. первоначальный вариант заведомо не бросал исключений, поэтому finally был необязателен.


Может быть тогда объяснишь, каким образом переменные внутри блока помогут избежать проблемы с исключением, которое ты сам же и добавил внутрь блока, где раньше был не нужен finally?

Приведённый тобой последний пример вообще никак не связан с изначально обсуждаемой темой. Он лишь должен убедить читающих эту ветку в том, что использование конструкции try...finally есть зло. Это и называется "передёргивание".

Кстати, что касается твоего примера с integer и double, то опять мимо кассы. Ситуация, которую ты описываешь, может возникнуть разве что при программировании на голом ассемблере. Во всех остальных случаях не будет выдаваться никакого мусора. Будет либо автоматическое приведение, либо ошибка приведения типа на этапе компиляции, если автоматический режим не предусмотрен. Если память мне не изменяет, автоматическое приведение integer к double появилось только в Turbo Pascal, а до этого в обе стороны преобразование выполнялось через соответствующие функции. Обратное приведение от double к integer до сих пор осталось через функции по той простой причине, что тут возможны разные варианты, а прямое приведение однозначно, поэтому его компилятор может подставлять автоматически. Вот он его и подставляет начиная с Turbo Pascal.
MylnikovDm
постоялец
 
Сообщения: 103
Зарегистрирован: 15.02.2007 21:26:10
Откуда: Челябинск

Re: free pascal vs Delphi 10.3

Сообщение runewalsh » 06.06.2020 03:42:34

Подобно тому, как приведение целого числа к вещественному можно выполнять тихо благодаря его ~однозначности~, способ освобождения ресурса ~однозначно~ следует из того, как он захватывался (вспомни, когда ты последний раз видел у объекта больше одного деструктора). Поэтому заставлять пользователя дёргать его вручную излишне.
MylnikovDm писал(а):Может быть тогда объяснишь, каким образом переменные внутри блока помогут избежать проблемы с исключением

Таким, что (см. viewtopic.php?p=159377#p159377) с ними работу с критической секцией вместо
runewalsh писал(а):
Код: Выделить всё
EnterCriticalSection(cs);
try
   // work
finally
   LeaveCriticalSection(cs);
end;

можно будет оформить так:
runewalsh писал(а):
Код: Выделить всё
begin
   var guard := TScopedGuard.Create(cs);
   // work
end;

MylnikovDm писал(а):Ситуация, которую ты описываешь, может возникнуть разве что при программировании на голом ассемблере.

Ты не понял моих глубоких аллегоричных аналогий. «Мусор» с явным try-finally получить очень легко: вот создал ты объект, как его теперь освободить?
— Free? После Free у тебя буквально останется мусорный указатель.
— FreeAndNil? Если ты удерживал больше одного указателя на объект, остальные всё так же станут мусорными. Более того, по историческим причинам она сделана без проверки типов, поэтому ошибочно FreeAndNil'нуть можно что угодно.

С автоматическими переменными это не твоя проблема.

Вот я и сравнил твои высказывания против них с тем, как если бы ты получал мусор при не(правильно )прописанных приведениях типов и оправдывал это тем, что нужно ПРОСТО писать без ошибок, и вообще так даже лучше, ведь всё перед глазами.

Так вот, без inline-переменных тоже можно изредка получать «мусор» из-за недостаточной гранулярности, пример я уже приводил.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: free pascal vs Delphi 10.3

Сообщение Sharfik » 06.06.2020 04:18:31

runewalsh писал(а):С автоматическими переменными это не твоя проблема.

Все читать не стал, прошелся глазами и зацепился.
У MS в последние годы появилось много новых и мало понятных сервисов. Чтобы в них разобраться месяц надо потратить. А практическую задачу по факту можно стабильно и аккуратно решить использовав старые сервисы, которые вчерашние студенты грязью поливают, как якобы плохие. Это аналогия.
Этот "автоматизированный" саботаж аукнется что FPC заглохнет в развитии на долгие годы, пока его авторы будут искать ошибки в очередной новой функции из-за использования "модных" приемов.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 759
Зарегистрирован: 20.07.2013 01:04:30

Re: free pascal vs Delphi 10.3

Сообщение Alex2013 » 06.06.2020 05:03:01

Sharfik писал(а):Этот "автоматизированный" саботаж аукнется что FPC заглохнет в развитии на долгие годы, пока его авторы будут искать ошибки в очередной новой функции из-за использования "модных" приемов.

В принципе с этим нельзя не согласиться . Но если это было бы "плевым делом" автоматизированная сборка мусора давно бы стала как миниму опционально включаемым режимом. (Кстати, а нет ли возможности, сделать это хотя-бы в танковых версиях FPC ? Ведь разработка на месте не стоит . :idea:)
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: free pascal vs Delphi 10.3

Сообщение iskander » 06.06.2020 12:42:52

Alex2013 писал(а):Народ где бы готовые стабильные бинарники старших версий фпс взять ? (Собирал несколько раз с svn но все что-то глючное выходит ) :roll:

На ftp-сервере ?
Alex2013 писал(а):Sharfik писал(а):
Этот "автоматизированный" саботаж аукнется что FPC заглохнет в развитии на долгие годы, пока его авторы будут искать ошибки в очередной новой функции из-за использования "модных" приемов.

В принципе с этим нельзя не согласиться...

а мужики-то не знают...
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: free pascal vs Delphi 10.3

Сообщение Alex2013 » 06.06.2020 12:53:37

iskander писал(а):На ftp-сервере ?

О спасибо! :idea:
(Есть несколько интересных проектов на "старших версиях ", до которых я никак не мог добраться )
Зы
Не пытайтесь читать тестовые ридими на том ftp-сервере (Это такой совет :wink: )
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Пред.

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

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

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

Рейтинг@Mail.ru