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)
Ответ на: комментарий от dismal_faun

if ( a & 0x1 == 0 ) {

есть предположение что при всех четных a

Упс. Внезапно, приоритет оператора == выше, чем &. Значение выражения всегда ложно, независимо от значения a. При этом с точки зрения компилятора всё ништяк, программист не получит от компилятора ни ошибок, ни предупреждений.

Вообще, упомнить 18 уровней плюсовых приоритетов (в С на пару уровней поменьше), могут только настоящие профи. Которые встречаются очень редко. Все остальные делают ошибки, а потом трахаются с тестированием и отладкой…

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

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

Попробуйте на C написать тип «указатель на функцию». Кому удалось сразу вспомнить где и как ставить скобки?

Мне :) Есть же простое правило «объявление отражает использование». Вот написать тип «функция, возвращающая указатель на функцию» - это задача для typedef %)

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

В турбопаскале A > B or C > D работало так:

a > b давало True или False, затем оно неявно преобразовывалось в 0 или 1 и побитово складывалось с С и результат сравнивался с D. В фрипаскале эта конструкция давала ошибку типов.

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

Вообще, упомнить 18 уровней плюсовых приоритетов (в С на пару уровней поменьше), могут только настоящие профи

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

Все остальные делают ошибки, а потом трахаются с тестированием и отладкой…

Из-за приоритетов? Глупости.

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

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

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

Из-за приоритетов? Глупости.

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

Анекдот: Сидит мужик в кинотеатре, морщится. Сесед спрашивает: «Чего морщищся?» — «Кресло с гвоздём, сидеть неудобно, колет.» — «Так пересядь.» — «Ничего, сейчас привыкну.»

Толпы народа привыкли сидеть на гвоздях. Многие даже не понимают в чём дело, считают, что так и должно быть. Говорят: зато у нас обивка весёленькая, в цветочек. А у вас обивка серенькая, скучная.

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

Но спорить на эту тему скучно. Дискуссии на тему «С vs Pascal» велись двадцать лет назад, ничего принципиально нового с тех пор в этом вопросе не появилось. Как был С креслом с гвоздями, так и остался.

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

Вообще, упомнить 18 уровней плюсовых приоритетов (в С на пару уровней поменьше), могут только настоящие профи. Которые встречаются очень редко. Все остальные делают ошибки, а потом трахаются с тестированием и отладкой…

Фигня, вот в перле их 26. ;)

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

Из-за приоритетов? Глупости.

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

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

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

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

очень согласен. если инструмент коряв, почему бы не сделать свой прямой и алмазно-точный?! :3

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

но есть какбы спорные штуку, которые определяются только стандартом

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

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

изобретатель перла лингвист-гуманитарий, ему простительно

Почему? Я же не сочиняю стихи, щажу других людей.

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

Еще один СИКПанутый. Просвещайся

Эта твоя хрень требует аккаунт на мордокниге и адоб флеш, так что или выложи на нормальный хостинг, или лучше скажи словами что там

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

обязательное объявление переменных, причем блин в самом начале - это как отче наш?

По идее это учит хорошему стилю.

Вообще, для обучения лучше Perl с use strict;

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

Перед end точку с запятой ставить необязательно.
Одиночное условное выражение заключать в круглые скобки необязательно.

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

Да и есть уже бумага от Оракла, запрещающая свободную яву.

4.2? Вот включать в дистры несвободную яву запретили, да.

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

Мнение безбородого админа в данном топике особенно важно.

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

На вижулбасике я получил гораздо больший заряд мотивации в дальнейшем изучать программирование, чем получил бы от унылого консольного a + b или hello world.

Ну это ты, а мне бы вот программа, которую можно запускать как

./prog 1 + 2 - 3 * 5
-12

Понравилась бы гораздо больше чем унылый графический калькулятор, который хуже даже calc.exe

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

когда из курса математики известно, что «=» - равно, а нужен дополнительный символ для операции присваивания.

Я как-то, когда только изучал программирование, как раз «=» воспринимал лучше, так как не понимал что это отдельная операция присваивания.

В алгебре просто она тоже есть и обозначается просто как =, например:

a*x^2+b*x+c; a = 1, b = -4, c = 2; найти x

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

Люди думать не умеют и не хотят дальше, чем «нажал кнопку — получил результат». Куда там такая интересная вещь как анализ арифметических выражений, у него же «ОМГ, формочка цвета меняет!!111».

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

И кстати, заметь, на каждую DE, тулкит или вообще просто так кто-нибудь напишет по очередному клону унылого calc.exe. И никому при этом даже не придёт в голову, что если уж свербит шило в заднице сделать графический калькулятор, то сделать его хотя бы удобным. Таким, напрмиер: http://www.bestfree.ru/soft/office/ChistaCalculator.gif

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

Здравый смыл как раз есть, чтобы не путать оператор присваивания и оператор сравнения.

В C сделано правильно, там присваивание =, а сравнение ==
Вот в бейсике неправильно, в паскале неудобно, поскольку присваивание встречается гораздо чаще.

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

кодёнок, а напиши-ка на пистоне аналог вот такому хелловорлду?

procedure InitMono(_name: pchar); external 'mono-2.0' name 'mono_jit_init'; cdecl;
procedure CleanupMono(_p: pointer); external 'mono-2.0' name 'mono_jit_cleanup'; cdecl;

var
    d: pointer;
begin
    d := InitMono ("fpc_mono");
    CleanupMono(d)
end.
Покажи всем, как оно с ctypes выглядит.

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

Уууу. Задолбали срачи о := и =.

=: и =. круче по-моему (язык J), но там это не совсем присваивание.

И кстати, заметь, на каждую DE, тулкит или вообще просто так кто-нибудь напишет по очередному клону унылого calc.exe

Первый калькулятор я написал на VBA, и никак не мог понять, где его скомпилировать в exe-файл, вроде в книжке о визуалбейсике было написано что можно %)

Да, формочки были прямо в документе ворда.

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

oops

function InitMono(_name: pchar): pointer; external 'mono-2.0' name 'mono_jit_init'; cdecl;
...
конечно же

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

Внезапно, приоритет оператора == выше, чем &. Значение выражения всегда ложно, независимо от значения a. При этом с точки зрения компилятора всё ништяк, программист не получит от компилятора ни ошибок, ни предупреждений.

И действительно. Вообще, мне кажется. что гораздо лучше или обратная польская нотация как в dc, forth и factor или строгий приоритет как в J, там независимо от операции, всё вычисляется справа налево. И это удобно тем что позволяет писать просто что-то вроде «sqrt x» вместо конструкций со скобками. В J тоже нужны скобки, но гораздо реже чем в других языках.

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

Кстати странно, в темах про бейсики почему-то меньше вбросов и страчей.

Потому что к бейсику практически все программисты относятся пренебрежительно, а малого числа его защитников недостаточно что бы развить серьёзный флейм на много страниц.

Я так думаю.

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

xenius , ну как, не прошли четные? :D
А то написал сперва не читая/проверяя чушь, стер, и теперь вот разразился философским текстом :)

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

В чем выражаются кандалы, кстати?

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

Xenius

а мне бы вот программа, которую можно запускать как

./prog 1 + 2 - 3 * 5 -12

Понравилась бы

$ echo "1 + 2 - 3 * 5"|bc
-12
anonymous
()
Ответ на: комментарий от anonymous

зачем им давить, проект, который готовит им будущих клиентов?

Кроме того, embarcadero использует компилятор freepascal в своём продукте Delphi XE2 для компиляции программ на ARM (для iOS).

Так что тут полный симбиоз. Было бы вообще шикарно, еслиб embarcadero денежку подкидывало на развитие проекта.

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

$ echo «1 + 2 - 3 * 5»|bc
-12

[code]$ expr 1 + 2 - 3 \* 5
-12
[/code]
Я как бы намекал на него

В чем выражаются кандалы, кстати?

В том что шаг влево, шаг вправо — расстрел. Я как раз про этим ваши «что не так — программа не запускается»

и теперь вот разразился философским текстом

По идее побитовые операции должны иметь всё-таки более высокий приоритет чем сравнение. Это нелогично. Я просто не подумал, что подвох в приоритете, я думал что дело в том что бы догадаться что «&» побитовая.

А про профессионализм — это ерунда написана. То есть профессиональный разработчик именно на C, конечно, будет это помнить, но не потому что профессиональный, а потому что ему приходится с этим каждый день сталкиваться.

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

Универсальная формула: Очередной релиз <любой сабж>, на ЛОРе — <сабжесрач>.

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

все что кроме православных круглых скобок - неполноценно.

Komintern ★★★★★
()

Когда уже сделают сечения для массивов и чтобы, как в D, можно было просто переопределить указатель? Ещё хочется механизм обмена сообщениями для потоков, начатых через BeginThread, и обёртку к OpenCl.

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

В турбопаскале A > B or C > D работало так:

a > b давало True или False, затем оно неявно преобразовывалось в 0 или 1 и побитово складывалось с С и результат сравнивался с D. В фрипаскале эта конструкция давала ошибку типов.

Кстати, да. За это в частности, я и люблю Фрипаскаль.

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

При этом с точки зрения компилятора всё ништяк, программист не получит от компилятора ни ошибок, ни предупреждений.

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

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

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

В том что шаг влево, шаг вправо — расстрел.

Т.е.?

Я как раз про этим ваши «что не так — программа не запускается»

Неправильные программы должны успешно компилироваться и запускаться?

я думал что дело в том что бы догадаться что «&» побитовая

А && тогда что?

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