Вышла новая версия компилятора FreePascal

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

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

Re: Вышла новая версия компилятора FreePascal

Сообщение kazalex » 25.12.2015 18:30:09

Дож
Код: Выделить всё
//
Class Procedure TApp.Run;
Begin

With TApp.Create Do
  Try

   Run;

  Finally

   Free;

  End;

End;
//

:mrgreen:
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Вышла новая версия компилятора FreePascal

Сообщение mirk » 25.12.2015 18:51:45

Я вот даже не знаю что такое замыкания и живу без них хорошо. Аналогичное могу сказать и про многие другие фичи ;)
Неужели так много людей пользуется этифи фичами?
Для чего вам все это? :shock:
mirk
постоялец
 
Сообщения: 317
Зарегистрирован: 24.09.2007 10:03:39

Re: Вышла новая версия компилятора FreePascal

Сообщение kazalex » 25.12.2015 18:57:08

mirk писал(а):Я вот даже не знаю что такое замыкания и живу без них хорошо

А самое главное, что тебя ими и пользоваться-то никто не заставляет.

mirk писал(а):Для чего вам все это? :shock:

Выключите свет! Они ползут на свет! (с) :mrgreen:
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: Вышла новая версия компилятора FreePascal

Сообщение Лекс Айрин » 25.12.2015 19:02:02

Дож писал(а):Неужто кто-то тут утверждает, что значит? :)


Да, вы.

Добавлено спустя 1 минуту 37 секунд:
mirk писал(а):Неужели так много людей пользуется этифи фичами?


на самом деле, не очень.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Вышла новая версия компилятора FreePascal

Сообщение Дож » 25.12.2015 19:06:29

Лекс Айрин писал(а):
Дож писал(а):Неужто кто-то тут утверждает, что значит? :)


Да, вы.

Нет, нигде не утверждаю.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Вышла новая версия компилятора FreePascal

Сообщение Лекс Айрин » 25.12.2015 19:33:00

Дож писал(а):Нет, нигде не утверждаю.


но именно это Вы и сказали))

Вы привели мне пример программы ничем не отличающейся от обычной, но в ней один оператор заменен другим.... ах да... стоит учитывать, что программа это, фактически, функция с двумя параметрами (input, output:file) и выхлопом(возвращаемым значением) exitCode.

Кстати, вы забываете одну особенность паскаля (да и других процедурных языков, если честно). Имя переменной/процедуры это тоже глобальная переменная.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Вышла новая версия компилятора FreePascal

Сообщение Дож » 25.12.2015 22:06:47

Лекс Айрин писал(а):
Дож писал(а):Нет, нигде не утверждаю.


но именно это Вы и сказали))

Я сказал «Без комментариев», подразумевая, что опытный программист сам сможет достроить пример до программы, в которой не использовано глобальных перменных. Больше я ничего не говорил.

Утверждение «просто тупо поменять program на procedure — значит избавиться от глобальных переменных.» не верно, я его нигде не писал, не подразумевал, ни разу так не думал, и не стоит на меня его навешивать из полемических соображений.

Вы привели мне пример программы ничем не отличающейся от обычной, но в ней один оператор заменен другим.... ах да... стоит учитывать, что программа это, фактически, функция с двумя параметрами (input, output:file) и выхлопом(возвращаемым значением) exitCode.

Кстати, вы забываете одну особенность паскаля (да и других процедурных языков, если честно). Имя переменной/процедуры это тоже глобальная переменная.


Это не особенность паскаля, а особенность Вашего восприятия терминов. Термины придумываете не Вы (к Вашему сожалению и к моему большому счастью), есть устоявшаяся терминология, которой придерживаются программисты и разработчики языков. Так, понятия «глобальная переменная» и «глобальный идентификатор» различны. Input, Output, ExitCode — глобальные переменные и глобальные идентификаторы. Имена функций — это глобальные идентификаторы, но не глобальные переменные. Локальная переменная не является глобальной. «Безымянная переменная» тоже не может быть глобальной переменной, хоть за ней и может скрываться глобальная область памяти.

Вернёмся к утверждению, которое Вы назвали бредом: «можно и вовсе отказаться от глобальных переменных в коде». Это утверждение верно, можно переписать содержательную программу так, чтобы в ней не были использованы глобальные переменные. Оно не является бредом. Обоснование «Как минимум, одна глобальная переменная в программе всегда будет -- сам объект.» не верно, что ясно видно из нескольких приведённых примеров (эти примеры называются «контрпримерами» и их целью является опровержение некоторого утверждения).
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Вышла новая версия компилятора FreePascal

Сообщение Mirage » 25.12.2015 23:55:44

mirk писал(а):Я вот даже не знаю что такое замыкания и живу без них хорошо. Аналогичное могу сказать и про многие другие фичи Неужели так много людей пользуется этифи фичами?Для чего вам все это?


Ох уж эти консерваторы! И IDE им удобные не нужны, и языковые фичи удобные не нужны. Без них живу и хорошо.
Нам это нужно, чтобы экономить время. Как на написании, так и на поддержке.
И если вы не видите как эти вещи экономят время, по причине незнакомства с ними, это не значит, что они бесполезны и ими никто не пользуется.
Пользуются очень многие и становятся конкурентоспособнее за счет этого.
IT - не та сфера, где оголтелый консерватизм может быть полезным.
Единственный способ принять осознанное решение об использовании той или иной фичи, это её тщательно изучить и попробовать. Ибо все познается в сравнении. После такого опыта, вполне может оказаться, что не так уж и хорошо вам жилось.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Вышла новая версия компилятора FreePascal

Сообщение Лекс Айрин » 26.12.2015 10:41:38

Дож писал(а):Вернёмся к утверждению, которое Вы назвали бредом: «можно и вовсе отказаться от глобальных переменных в коде». Это утверждение верно, можно переписать содержательную программу так, чтобы в ней не были использованы глобальные переменные. Оно не является бредом. Обоснование «Как минимум, одна глобальная переменная в программе всегда будет -- сам объект.» не верно, что ясно видно из нескольких приведённых примеров (эти примеры называются «контрпримерами» и их целью является опровержение некоторого утверждения).


Дож писал(а):подразумевая, что опытный программист сам сможет достроить пример до программы, в которой не использовано глобальных перменных. Больше я ничего не говорил.


Ваш пример во первых, показывает как не надо писать программы... во вторых будет поправлен хорошим оптимизатором к "классическому виду". соответственно, ваши локальные переменные превратятся в глобальные. То есть, написали то вы без глобальных переменных, но они вдруг появились.

Дож писал(а): Так, понятия «глобальная переменная» и «глобальный идентификатор» различны. Input, Output, ExitCode — глобальные переменные и глобальные идентификаторы.


Вы хоть поняли, что сказали? Вы попали в свою же логическую ловушку. Попробуйте сделать ExitCode локальным? Тогда операционка просто не получит его.(локальные переменные исчезают после выхода из подпрограммы) Я не говорю о прочих создаваемых неявно переменных (например, буферы (очереди) сообщений и клавиатуры)

Ну и не стоит забывать, что функция это не только подпрограмма, но и соответствующая возвращаемому значению переменная... да, неявная, но тем не менее она участвует во всех допустимых для переменных соответствующего типа операциях. Как говорится.. если оно выглядит как утка, плавает как утка и крякает как утка, то оно утка.
плюс, это касается современного паскаля, наличие переменных процедурного типа... Ну и, что процедура, что функция это всего-лишь адрес, который может быть получен с помощью оператора "взятия адреса" (что, собственно, и есть приведение к переменной соответствующего типа).


Mirage писал(а):Ох уж эти консерваторы! И IDE им удобные не нужны, и языковые фичи удобные не нужны. Без них живу и хорошо.
Нам это нужно, чтобы экономить время. Как на написании, так и на поддержке.
И если вы не видите как эти вещи экономят время, по причине незнакомства с ними, это не значит, что они бесполезны и ими никто не пользуется.

а с чего лично ВЫ подумали, что никто их не пробовал? Некоторые активно пользуются не одним языком. Да и IDE периодически меняют. А может быть вы просто не смогли толком мигрировать в паскаль, вот и тянете привычные лично ВАМ методы? И ведь намекали же вам на эту вероятность... может быть, слишком политкорректно.
Я нет... я просто не смог почувствовать языки С группы. Более менее читать могу(со словарем), но вот писать... увольте. Да и от соответствующих сверхудобных сред разработки хочется повесится. С тоской смотрю на англоязычное руководство по ассемблеру... похоже, придется изучать... не хочется, но если и FPC превратится в C подобный язык, то придется.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Вышла новая версия компилятора FreePascal

Сообщение Дож » 26.12.2015 14:31:08

Лекс Айрин, Вы несёте полнейшую ахинею. Попробуйте найти хоть ещё одного человека, который с ней будет согласен.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Вышла новая версия компилятора FreePascal

Сообщение Лекс Айрин » 26.12.2015 15:24:40

Дож докажите.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Вышла новая версия компилятора FreePascal

Сообщение Дож » 26.12.2015 15:57:54

Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Вышла новая версия компилятора FreePascal

Сообщение Лекс Айрин » 26.12.2015 18:17:44

ок. Вы сами это сказали... Если в первом пункте опроса будет больше 2х голосов, то вы публично отказывайтесь от своих слов.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Вышла новая версия компилятора FreePascal

Сообщение Mikhail » 26.12.2015 19:09:55

kazalex писал(а):Вообще-то можно.


По Вашей ссылке об этом ни слова. Напомню, утечка памяти это когда на выделенный блок не остается ссылок.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Вышла новая версия компилятора FreePascal

Сообщение kazalex » 26.12.2015 20:06:24

Mikhail писал(а):По Вашей ссылке об этом ни слова.

Специально для тебя:
Утечка памяти
В системах со сборкой мусора тоже могут возникать утечки памяти, правда, имеющие несколько другую природу. Ссылка на неиспользуемый объект может сохраниться в другом объекте, который используется и становится своеобразным «якорем», удерживающим ненужный объект в памяти. Например, созданный объект добавляется в коллекцию, используемую для вспомогательных операций, потом перестаёт использоваться, но не удаляется из коллекции. Коллекция удерживает ссылку, объект остаётся достижимым и не подвергается сборке мусора. Результатом становится всё та же утечка памяти.
Чтобы устранить подобные проблемы, среда исполнения может поддерживать специальное средство — так называемые слабые ссылки. Слабые ссылки не удерживают объекта и превращаются в null, как только объект исчезает — поэтому код должен быть готов к тому, что однажды ссылка укажет в никуда.


Mikhail писал(а):Напомню, утечка памяти это когда на выделенный блок не остается ссылок.

Ещё один изобретатель собственной терминологии?

Добавлено спустя 20 минут 4 секунды:
Чтоб два раза не вставать... Можешь погуглить на счет .net memory leaks, заодно увидишь чего по этой теме ищут.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Пред.След.

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

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

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

Рейтинг@Mail.ru