LINUX.ORG.RU

Вышел FreePascal 2.6.0

 , , ,


0

1

Состоялся релиз 2.6.0 компилятора FreePascal.

Изменения в релизе, прежде всего, касаются добавления отсутствовавших ранее возможностей, появившихся в языке Delphi после 7-й версии, а также добавления или улучшения поддержки новых платформ.
Помимо всего прочего:

  1. Диалект Objective-Паскаль, поддерживаемый на всех Mac OS X и iOS
  2. Улучшения в режиме совместимости Delphi:
    • вложенные типы, переменные класса и локальные константы класса
    • расширенный синтаксис записи (пока без конструкторов)
    • счетчики в записях (for.. in)
    • помощники для классов и записей
    • конструкции Generic для записей, массивов и процедурных типов
    • улучшение совместимости с Delphi обычного синтаксиса Generic-ов
    • «собираемые» перечисления ($SCOPEDEUNMS)
    • пользовательские сообщения для директивы «deprecated»
    • возможность использования «&» для разыменования ключевых слов
  3. Новые возможности генератора кода ARM
    • модуль для поддержки вычислений с плавающей точой для ARM VFPv2 и VFPv3
    • поддержка Thumb-2
  4. Не остались без внимания RTL и пакеты.

текст перевода частично взят с freepascal.ru

>>> Подробности



Проверено: anonymous_incognito ()
Последнее исправление: JB (всего исправлений: 5)

Ответ на: комментарий от slackwarrior

Где не парсятся? Ты щас на голубом глазу лечишь про какие-то проблемы, а все пользуются фигурными скобками.

Не парсятся в (**). И в эти «все» едва-ли входит тот же Вирт.
В мое время за фигурные скобки для комментов могли даже баллы на олимпиадах срезать.

madcore ★★★★★
()

В Паскале мне очень не нравится оператор цикла - С-шный for(...,...,...) куда более притягателен. А в последнее время я открыл для себя: newLISP v.9.2.3 on Win32, execute 'newlisp -h' for more info.

(+ 12345 4567)

16912

(+ 12345 4567 1 2 3 4 5)

16927


Лаконичненько и со вкусом :-)

anonymous
()
Ответ на: комментарий от madcore

Озвучь, к какому периоду относится это «твое время»

slackwarrior ★★★★★
()
Ответ на: комментарий от deis

Но раз машине проще разобрать какой-то логический текст, то наверно и с посторонним человеком будет тоже самое.

Napilnik ★★★★★
()
Ответ на: комментарий от anonymous

Версия старая, но уж какой попался :-)

anonymous
()
Ответ на: комментарий от Napilnik

Но раз машине проще разобрать какой-то логический текст, то наверно и с посторонним человеком будет тоже самое

Что будем делать с машинными кодами?

deis
()
Ответ на: комментарий от anonymous

В Паскале мне очень не нравится оператор цикла - С-шный for(...,...,...) куда более притягателен.

Мне никогда не была понятна необходимость for именно в таком виде. Ну, всмысле, завели бы отдельно и назвали подобный цикл как-то иначе, но в for как-то логически подразумевается наличие в явном виде какого-то итератора или другого вида выборки.

madcore ★★★★★
()
Ответ на: комментарий от deis

Что будем делать с машинными кодами?

Ты не поверишь, но когда-то писали не только на высокоуровневых и асме но и сразу в машинный код, его тоже можно написать по разному.

Napilnik ★★★★★
()
Ответ на: комментарий от Napilnik

Ты не поверишь, но когда-то писали не только на высокоуровневых и асме но и сразу в машинный код, его тоже можно написать по разному

Ну вот видите, даже машинный код можно было писать по-разному - а машине все равно

deis
()
Ответ на: комментарий от madcore

В сишном форе клёво задавать несколько условий выхода (например нам нужно отсчитать 20 штук из массива, но если выходим за его пределы, остановиться).

PolarFox ★★★★★
()
Ответ на: комментарий от anonymous

anonymous

В Паскале мне очень не нравится оператор цикла - С-шный for(...,...,...) куда более притягателен.

В Паскале как раз цикл for более логичен. Хоть и менее гибкий.

stolz
()
Ответ на: комментарий от PolarFox

Я не оспариваю его гибкость, но это ведь не for, по сути.

madcore ★★★★★
()
Ответ на: комментарий от PolarFox

PolarFox

В сишном форе клёво задавать несколько условий выхода (например нам нужно отсчитать 20 штук из массива, но если выходим за его пределы, остановиться).

В этом как раз отличие позиций академизма и прагматизма. По сути, цикл for должен проходить фиксированное число итераций, и в его обязанности не должно входить ничего более. Для отслеживания выхода за пределы нужно использовать while и repeat. А Си - это язык прагматиков, и класть они хотели на метафизику.

stolz
()
Ответ на: комментарий от PolarFox

Ведь обычно перебирают что-то индексируемое, а не сами индексы.

Так сишный for сам ничего не переберает и вообще не обязан, в отличие от.

madcore ★★★★★
()
Ответ на: комментарий от sjinks

При желании получит:

gcc -O2 -Wall test.c
test.c: In function 'main':
test.c:5:2: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]

Gcc хороший компилятор, но не единственный.

Если /один/ отдельно взятый компилятор выдаёт предупреждение, это не значит, что /все/ компиляторы выдают его. Приложение I к стандарту C99 со (весьма скромным) списком предупреждений является информативным, т. е. не обязательным к исполнению.

anonymous
()
Ответ на: комментарий от PolarFox

PolarFox

Самый логичный for в питоне. Ведь обычно перебирают что-то индексируемое, а не сами индексы.

Ну вот представь - стоит командир и колонна бойцов. Командир говорит: «первый», выходит боец с номером один, командир смотрит на него, ругает за нечищенные сапоги. Потом командир прибавляет в уме к 1 ещё 1 и говорит: «второй». Шаг вперёд делает боец с номером 2. И так далее.

Т.е. счёт как раз ведётся по индексам, а уже потом наблюдается содержимое. Хотя тут можно по-разному трактовать.

stolz
()
Ответ на: комментарий от madcore

И не надо никаких while, do, и прочей «лабуды», которая, как мне кажется, не способствует ВЫРАЗИТЕЛЬНОСТИ языка

anonymous
()
Ответ на: комментарий от anonymous

И не надо никаких while, do, и прочей «лабуды», которая, как мне кажется, не способствует ВЫРАЗИТЕЛЬНОСТИ языка

Как быть если условие продолжения цикла вычисляется в самом цикле?

deis
()
Ответ на: комментарий от stolz

For с английского на русский переводится как «для».

Для бойца из колонны: если сапоги у бойца нечищенные: отругать бойца.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Для бойца из колонны: если сапоги у бойца нечищенные: отругать бойца

Для индекса, а уж с чем соотносится данный индекс - дело десятое

deis
()
Ответ на: комментарий от tailgunner

Доо. Лучшие мировые конторы, программистская элита, и всё равно - кучу, кучу ошибок. И все ошибки - с приоритетами.

Про программистскую элиту это вы, батенька, сами придумали. Я говорил про конторы с мировыми именами. В которых работают обычные программисты. Обычные, а не идеальные. И я не говорил что все ошибки связаны с приоритетами.

Судя по вашим высказываниям, вы, батенька, большой фантазёр.

Спорить на эту тему глупо - ошибки, связанные с приоритетом операций, на практике встречаются очень редко или не встречаются вообще.

Это был всего лишь один пример реальной ошибки в реальном коде (не моём). В коде, который существует уже не один год. Ошибка, которую в более нормальном языке заметили бы при первой же компиляции, и тут же исправили.

Других примеров приводить не буду. Скучно. Сидите на своём стуле с гвоздями дальше и фантазируйте.

anonymous
()
Ответ на: комментарий от deis

Когда я перебираю кучку объектов, мне обычно в принципе не важен индекс отдельно взятого элемента. Может это вообще не индексируемый список, а итератор.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Даже более того, если в питоньем коде возникает острое желание использовать индекс в цикле for, значит код скорее всего слегка непитоничен.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Когда я перебираю кучку объектов, мне обычно в принципе не важен индекс отдельно взятого элемента

И что?

deis
()
Ответ на: комментарий от anonymous

Про программистскую элиту это вы, батенька, сами придумали. Я говорил про конторы с мировыми именами. В которых работают обычные программисты

Не-а. Ты сказал «херовые программисты, допускающие туеву хучу ошибок». Если ты сказал серьезно, то о чем тут вообще спорить? Херовые - значит, херовые.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

И не надо никаких while, do, и прочей «лабуды», которая, как мне кажется, не способствует ВЫРАЗИТЕЛЬНОСТИ языка

В том-то и дело, есть универсальный for, перекрывающий функционал других циклов. Зачем перегружать язык ненужными конструкциями? Так или иначе, в итоге, есть только просто условные циклы, и нет аналогов с итераторами типа for или foreach.

madcore ★★★★★
()
Ответ на: комментарий от PolarFox

PolarFox

Для бойца из колонны: если сапоги у бойца нечищенные: отругать бойца.

Это уже sql-запрос получается. Без алгоритма. :)

stolz
()
Ответ на: комментарий от PolarFox

PolarFox

Значит цикл for [each] … in является самым кошерным for.

Да, он самый простой. Хоть и самый узкоспециализированный.

stolz
()
Ответ на: комментарий от anonymous

Мне приходилось встречаться с программой, где между do и while 15 страниц текста - не желаю вам этого в новом году :-)

anonymous
()
Ответ на: комментарий от PolarFox

Значит цикл for [each] … in является самым кошерным for

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

deis
()
Ответ на: комментарий от madcore

В том-то и дело, есть универсальный for, перекрывающий функционал других циклов

Этот цикл не является универсальным

deis
()
Ответ на: комментарий от stolz

Значит цикл for [each] … in является самым кошерным for.

Да, он самый простой. Хоть и самый узкоспециализированный.

Наоборот - самый общий:

for i in range(0, 100, 2):
tailgunner ★★★★★
()
Ответ на: комментарий от deis

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

PolarFox ★★★★★
()
Ответ на: комментарий от tailgunner

xrange возвращает итератор, а range генерирует список целиком

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

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

То, что это не ваша забота, вовсе не означает, что «перебирают что-то индексируемое, а не сами индексы» - перебирают именно через индексы, как бы они не назывались и где бы не скрывались

deis
()
Ответ на: комментарий от tailgunner

tailgunner

Наоборот - самый общий

Ему нужна совокупность элементов, он не будет просто так считать. К примеру, чтобы вывести подряд 10 фраз «Hello World» - ты дополнительно генерируешь ещё одну сущность.

stolz
()
Ответ на: комментарий от PolarFox

Только xrange, а не range.

На эту тему есть разные мнения.

The advantage of xrange() over range() is minimal (since xrange() still has to create the values when asked for them) except when a very large range is used on a memory-starved machine or when all of the range’s elements are never used (such as when the loop is usually terminated with break).

tailgunner ★★★★★
()
Ответ на: комментарий от stolz

К примеру, чтобы вывести подряд 10 фраз «Hello World» - ты дополнительно генерируешь ещё одну сущность.

Дополнительно к чему, по сравнению с чем?

tailgunner ★★★★★
()
Ответ на: комментарий от stolz

Вот в чём разница. Паскалевский for создан для вывода хелло ворлд по 10 раз, в то время как питоний for создан для действий над итерируемыми объектами.

PolarFox ★★★★★
()
Ответ на: комментарий от deis

Хорошо, попытаюсь объяснить на пальцах - хотя апологеты паскаля едва ли смогут не то что согласиться, но хотя бы попытаться осознать жизненность моего объяснения. Вот пример, вам для будущей деятельности требуется изучить английский язык, однако вместо непосредственно изучения английского вам предлагают сперва обстоятельно изучить суахили, который вам ни разу не упал, причём мотивируют это тем, что там есть какие-то более правильные слова, звуки, предложения, etc ad nauseum. Тяжело не согласиться с утверждением, что в общем случае уже имеющиеся знания иностранных языков могут помочь в изучении нового, однако поверить в то, что изучение суахили может поспособствовать изучению английского - увольте, а вот помешать - легко

Аналогия с суахили совершенно некорректная. Я приведу вам другую аналогию... Тоже некорректную.

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

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

Людям свойственно ошибаться. Программисты тоже люди. И тоже ошибаются. (Независимо от их мнения о собственной программистской квалификации.) Более строгий контроль типов в Паскале, меньшее количество уровней приоритетов, более простой синтаксис, модульность (а не препроцессорный костыль) позволяют меньше ошибаться, а ошибки обнаруживать при компиляции.

В Паскале тоже можно прострелить себе ногу, но только если очень хочется, а не по глупой случайности, как в Си.

anonymous
()
Ответ на: комментарий от tailgunner

tailgunner

Дополнительно к чему, по сравнению с чем?

for i in range(0, 100, 2):

Ты искусственно создаёшь поле для выборки.

stolz
()
Ответ на: комментарий от deis

Обычно все такие срачи к тому и сводятся - постеренно становится все более полнятно, что критики не понимаюь не паскаля, ни си, ни вообще нихрена.

madcore ★★★★★
()
Ответ на: комментарий от stolz

Ты искусственно создаёшь поле для выборки.

А в Си (к примеру) ты исскуственно создаешь индекс.

tailgunner ★★★★★
()
Ответ на: комментарий от Harald

Где операционные системы, написанные на идеологически правильном паскале? Где драйверы на паскале? На чем написаны Linux, BSD, оффтопик?

Распространённость языка ничего не говорит о его идеологической правильности. Самый популярный азык на земле — китайский. Значит ли это, что инглиш, спаниш, френч, дойч, русиш — отстой? Нет. Просто судьба такая.

anonymous
()
Ответ на: комментарий от deis

Ну вот видите, даже машинный код можно было писать по-разному - а машине все равно

Машине всё равно какой из свободных регистров использовать, в остальном _не_ всё равно. Микроконтроллеру может не хватить скорости для выполнения корявого крисваивания или другой операции и устройство не будет работать корректно, в результате придётся использовать более быструю и дорогую микруху. Китайцы смотрят на такое расточительство с неодобрением.

Napilnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.