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)

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

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

От

Private Sub Button1_Click()
    Form1.BgColor = Colors.Blue
End Sub

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

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

Нечеловеческого образа, всёже человеки при встрече говорят «здарово и привет» а не перлообразную прессованую кашу

Ага, а для кивка головой слова и вовсе не нужны

:=

Тихо плакаю в углу

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

Я про обучение навыкам программирования, есличо

Вот как раз за это и нужно давать по рукам, а где-то ещё дураков уже нет

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

Бэйсик или Фортран

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

Тихо плакаю в углу

Тебе ха ха (точнее хнык хнык), а народ, вначале изучивший алгебру, а затем приступивший к программированию, иногда испытывает диссонанс от выражения a = a + 1.

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

deis

:=

Тихо плакаю в углу

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

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

deis

Бэйсик или Фортран

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

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

а народ, вначале изучивший алгебру, а затем приступивший к программированию, иногда испытывает диссонанс от выражения a = a + 1

А разве в алгебре как-то по-другому, я что-то упустил? Лично мне не нравятся выражения типа а += 5 (к а++ отношусь нормально), по уж паскалевское а := 5 вообще за гранью здравого смысла

И эти люди ещё имеют наглость возмущаться

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

А что не так? Лишний символ? На раннем этапе обучения воспринимается намного лучше, когда из курса математики известно, что «=» - равно, а нужен дополнительный символ для операции присваивания

Да неужели? А я почему-то думал, что как раз из курса математики «=» это прежде всего оператор присваивания и только потом - сравнение

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

по уж паскалевское а := 5 вообще за гранью здравого смысла

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

madcore ★★★★★
()

Новость-то она, конешне, хороша, но как там в 2.6 обстоит дело с оптимизациями? Год наза тестил - так к моему удивлению, тест (bintrees с известного сайта) на fpk слил в полтора (sic!) раза аналогичному на scala/JVM 1.6

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

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

В каком алгоритмическом языке операторы присвивания и сравнения идентичны?

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

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

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

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

У меня иная точка зрения, и я в определённой мере согласен, что «чем ближе к естественному языку, тем легче усваивается материал». Так вот естественный язык - это ещё большая жуткая неформализованная гадость. Здравый смысл подсказывает, что истина где-то посередине, однако паскаль в этом случае жестоко пролетает

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

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

Совершенно верно, и выбор в пользу «==» и "!=" в качестве операторов сравнения выглядит полностью ему соответствующим

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

В каком алгоритмическом языке операторы присвивания и сравнения идентичны?

В Бэйсике, если мне не изменяет память

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

В курсе математики символ = означает равенство, а выражение со знаком равенства — уравнение. То есть, если a = a + 1, то от обоих частей этого уравнения можно отнять a и получится выражение 0 = 1.

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

И в той же самой математике, когда оперируют понятием присваивания (что приходится делать нечасто, в отличие от программирования) как раз и используют символы вроде := или ←.

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

deis

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

В математике вообще по другому это воспринимается, но знак равенства указывает на отношение равенства, а не присваивание.

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

В курсе математики символ = означает равенство, а выражение со знаком равенства — уравнение. То есть, если a = a + 1, то от обоих частей этого уравнения можно отнять a и получится выражение 0 = 1

Хорошо, добавим к присвоению, сравнению ещё и равенство

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

Бейсик

Изначально использовалось LET, потом ухомячили.

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

В математике вообще по другому это воспринимается, но знак равенства указывает на отношение равенства, а не присваивание

Не буду спорить, в целом согласен

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

deis

У меня иная точка зрения, и я в определённой мере согласен, что «чем ближе к естественному языку, тем легче усваивается материал». Так вот естественный язык - это ещё большая жуткая неформализованная гадость. Здравый смысл подсказывает, что истина где-то посередине, однако паскаль в этом случае жестоко пролетает

Я субъективно сужу. Наверное, кесареву - кесарево. Меня жутко тошнило от школьного бейсика, а втянулся я в паскаль (уже потом). Там было всё понятно, просто, строго. А уже потом, освоив азы, мог двигаться дальше, на менее строгие языки. Субъективно, да.

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

В математеке понятие присваивания вообще определено? «пусть а равно б»
ЯП, ежду тем, оперируют не только математикой.

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

PolarFox

Если считать информатику разделом математики, то всё вполне определено.

Господа, вот уж только не валите всё в кучу. Никакой это не раздел. Информатика - вполне себе наука, а у математики особая роль, которую нельзя ни с чем смешивать.

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

Я так понимаю, срач у вас перешел в плоскость оператора присваивания, который с среднем используется в 0,5%...0,8% кода (спецом, скачал LCL и тупо пересчитал)?

Доо, реально напрягающий синтаксический оверхед :)

Вот лично мне - смешно. А вам, коллеги?

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

В математеке понятие присваивания вообще определено? «пусть а равно б»

А это и не важно. Важно то, что в программировании определены две операции (из трёх) - присваивание и сравнение, т.е. равенство получается что выпадает

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

В императивном программировании равенство и не применяется

Так а я про что?

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

Пусть сразу начинают с C

Наверное, очень забавно заставить выучить 3 десятка приоритетов, а потом рассказывать басни, что какие-то комбинации операторов могут приводить к непредсказуемогу поведению.

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

Доо, реально напрягающий синтаксический оверхед

Вы внимательно прочитайте с чего началось данное обсуждение - претензии были к сишным ++, !=

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

Вот паскалисты пусть лучше молчат про приоритет.

a > b or c < d в паскале ведёт себя совершенно неожиданным образом.

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

А это и не важно. Важно то, что в программировании определены две операции (из трёх) - присваивание и сравнение, т.е. равенство получается что выпадает

В ЯП операции сравнения определены не только для чисел и могут использоваться отличные операторы для разных типов.
Кроме того, в ЯП могут быть свои операторы, не имеющие прямых аналогов в математеке, например '=~' в перле.

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

В ЯП операции сравнения определены не только для чисел и могут использоваться отличные операторы для разных типов. Кроме того, в ЯП могут быть свои операторы, не имеющие прямых аналогов в математеке, например '=~' в перле

Так о чём и речь - паскаль в этом плане ничуть не лучше других

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

…нормальный для профессионалов язык грязью.

С никогда не был нормальным языком.

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

Зачем калечить моск паскалем с его begin-ами и end-ами? Пусть сразу начинают с C

Да, пусть нафиг посадят глаза (да и мозг) всеми этими фигурными скобками и прочим пёстрым орнаментом. Оставьте учащимся паскакаль. Заинтересуются - освоят Си.

Господа, вы за деревьями леса не видите. Можно подумать, есть большая разница между скобочками и begin/end.

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

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

a > b or c < d в паскале ведёт себя совершенно неожиданным образом.

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

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

Так о чём и речь - паскаль в этом плане ничуть не лучше других

Так а чем он хуже? То вам много ":=", то мало «==».
Конкретно по обучению:
есть строгая типизация
есть строки
с бОльшей вероятностью выдаются ошибки, нежели варнинги
Что еще надо?

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

C++ для обучения тоже не очень подходит, ибо в нём нет нормальной модульности. (Костыли в лице #include/namespace таковой не являются.)

Испытываю всё больше симпатии к этому господину. Дело бает.

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

Для того, кто привык к си, с++, бейсику, питону, жабе, жабаскрипту и куче других языков.

А я к сиськам привык. Можно, я буду возмущаться всем конструкциям просто потому, что непривычно?
Но тему неоднозначности приоритетов в паскале ты не раскрыл.

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

…а народ, вначале изучивший алгебру, а затем приступивший к программированию, иногда испытывает диссонанс от выражения a = a + 1.

+1.

Добавлю:

if ( 1 == i ) { ...

От такого кода просто тошнит. Да, да, я знаю, что сейчас компиляторы пошли умные и выдают предупреждения на вот такой код:

if ( i = 1 ) {

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

С и Паскаль — отличный пример. Дедушка Вирт сначала /подумал/, потом сделал. А Томпсон и Ричи /сделали/…

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

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

Садись, два.

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

a > b or c < d в паскале ведёт себя совершенно неожиданным образом.

Внезапно, имеем ошибку компиляции:

Incompatible types: got «Boolean» expected «Int64»

Внимание, вопрос: При каких значениях a условие будет истинным?

if ( a & 0x1 == 0 ) {

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

На эту ошибку я напоролся в турбопаскале, когда готовился к ЕГЭ по информатике. Ему что int, что boolean, or между ними применим. Вовремя переполз на фрипоскаль и научился ставить скобочки, ага.

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

На эту ошибку я напоролся в турбопаскале, когда готовился к ЕГЭ по информатике. Ему что int, что boolean, or между ними применим.

Т.е.? Операции сравнения всегда возвращают boolean, потому унарные и бинарные операции в контексте однозначны.

Вовремя переполз на фрипоскаль и научился ставить скобочки, ага.

Опять не понял, чем помогло переползание?

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

Но сколько лет потребовалось, чтобы компиляторы стали такими умными?

Верификатор lint был написан году в 1975-76.

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