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)

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

Вообще не зря в Java ввели понятие интерфейсов, хотя отцы-основатели тоже окрестили множественное наследование демонским.

Ну дык интерфейсы и в FPC и в Delphi есть. Правда немного кривые, зачем-то с навязываемым счётчиком ссылок по умолчанию (как это относиться к интерфейсам?!). Но не знаю как в делфях, а в FPC есть и православные ява-подобные интерфейсы (включаются директивой $INTERFCES CORBA)

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

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

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

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

хороший стиль чего? и что такое вообще хороший стиль?

{
int a = 4; //Я определяю переменную, когда ее начинаю использовать, это плохой стиль?
...
}


{
var a = 4; //Нормальный компилятор не дурак, он поймет тип, это тоже плохой стиль?
...
}

// здесь a уже не используется - дополнительная помощь оптимизатору, хрен такое получишь в паскакале, ага
djenterprise
()
Ответ на: комментарий от madcore

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

Не побитовая. Логическая.

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

иногда они работают, вообще при общении с людьми, строгое соблюдение формальностей не обязательно, почему компьютер имеет наглость это требовать?

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

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

Не побитовая. Логическая.

Спасибо, кэп.

вообще при общении с людьми, строгое соблюдение формальностей не обязательно,

В беседе о погоде, когда дело не касается бизнеса, УК итд.

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

Хотя имхо вижулбасик подходит гораздо лучше.

Мне кажется, что из существующих языков для обучения очень хорош будет bc, ибо может работать в интерактивном режиме, не имеет лишних непонятных операторов типа «Program Название_Проги» и тд. А из ассемблеров лучше всего fasm, поскольку не требует множества малопонятных директив вначале. Хотя другие свободные ассемблеры я не сравнивал, может какие-то из них и не хуже.

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

Бц не покажет распердолистое виндовое^W иксовое окошко. Тут важная деталь: GUI-программы выглядят гораздо более впечатляюще, школьник видит, что его программа выглядит как «настоящая», а не как DOS какой-то и это, в некоторых случаях, мотивирует.

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

Этому лучше всего соответствует собственно алгоритмический язык

Паскаль — это форк алгола, так что считай, что это и есть алгоритмический язык.

Имхо, всё-таки он лучше чем алгол. Хотя дядушка Вирт ещё Оберон изобрёл, может он ещё лучше — не изучал.

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

школьник видит, что его программа выглядит как «настоящая», а не как DOS какой-то и это, в некоторых случаях, мотивирует.

Мне никогда не нравилось программировать оконные приложения — вместо того что бы думать над задачей приходилось рисовать тупые формочки.

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

Там калькулятор заставляли рисовать вроде...

Да и вообще не нравится мне этот метод взаимодействия с пользователем.

Пару чисел вбить в консоли куда проще чем в формочке, где надо мышью тыкаь или вспоминать комбинации...

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

Я смотрю до тебя не доходит значение слова «равно»

Это ты не понимаешь, что как раз в математике знак = используется в нескольких смыслах.

Например, сравни «решите уравнение a*x^2+b*x+c=0, используя формулу разности квадратов x^2-x^2=(x+y)*(x-y), при условии что a=1»

Пример искусственный, но все три знака = имеют разные смыслы.

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

Паскаль — это форк алгола, так что считай, что это и есть алгоритмический язык

Надеюсь, блок-схемы к паскалю отношения не имеют?

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

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

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

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

Спасибо, кеп. Я же про то, что изначально в паскалях интерфейсы вводились почти исключительно для того чтоб поддержать такие технологии как COM и CORBA, а не для множественного наследования и интерфейсно зависимых паттернов программирования. Тоесть если ты в делфях обьявил некий интерфейс и хочеш реализовать его в неком классе, то ты должен знать что всякий интерфейс является наследником iUnknown с методами AddRef, RemRef и QueryInterface и ты обязан реализовать их в своем классе (или можеш наследоватся от TInterfacedObject где вся эта галимотья уже реализована). Мало того опять таки хочеш ты или нет делфя включает для экземпляров твоего класса автоматический подсчёт ссылок, тоесть метод AddRef вызовется автоматически(!) когда ты присвоеш ссылку на интерфейс новой переменной и удалится когда переменная выйдет из области видимости. При этом если счётчик станет равен нулю, делфя грохнет ваш обект также автоматом. И это на фоне того, что остальные классы, ни реализующие никаких интерфейсов надо все-ещё удалять самому. А ещё прикольно бывает когда в многопоточном приложении автоматические подсчёты ссылок вообще сходят с ума и начинают грохать или не удалять все что попало.. Поэтому я и говорю, что очень хорошо, что в фпц (не знаю как с делфями) ввели также и ява-подобные интерфейсы без счётчика ссылок и без наследования от iUnknown. Правда есть ещё проблемы, например указатель на интерфейс нельзя привести к указателю на обьект класса реализующего этот интерфейс, почему - неясно.

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

У дядушки еще с Модулы-2 дилер поменялся, пошли обломные бэд-трипы.

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

{

int a = 4; //Я определяю переменную, когда ее начинаю использовать, это плохой стиль? ... }

Дрянь, охренеешь потом эти переменные искать если понадобятся.

{

var a = 4; //Нормальный компилятор не дурак, он поймет тип, это тоже плохой стиль? ... }

Дрянь номер 2, рыскай по всем исходникам, по всем случаям применения переменной чтобы понять её тип.

// здесь a уже не используется - дополнительная помощь оптимизатору, хрен такое получишь в паскакале, ага

В примерах выше код уже так «наоптимизирован» что тормоза при компиляции кривоплюсов гарантированы.

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

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

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

{ int a = 4; //Я определяю переменную, когда ее начинаю использовать, это плохой стиль? ... }

Дрянь, охренеешь потом эти переменные искать если понадобятся

Локальные?

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

Пример искусственный, но все три знака = имеют разные смыслы.

Все три имеют один смысл.

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

Имхо, всё-таки он лучше чем алгол. Хотя дядушка Вирт ещё Оберон изобрёл, может он ещё лучше — не изучал.

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

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

Локальные?

Любые. Размер процедур в памяти явно ограничивался в турбопаскале, в фпц программист дорвался до ресурсов и может жрать их гигами а не только блоками до 64Кб. В принципе, все лежащие на поверхности полезные синтаксические плюшки из других языков, давно уже потырены и запилены. И только дельфисты находят что-то якобы полезное, что ещё не перенесено с дельфей.

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

Размер процедур в памяти явно ограничивался в турбопаскале

Однако Вирт был не дурак. Жаль, конечно, что всё так получилось...

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

Однако Вирт был не дурак. Жаль, конечно, что всё так получилось...

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

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

дельфисты находят что-то якобы полезное, что ещё не перенесено с дельфей.

Куча очень нужных компонентиков, которые на радостях использованы были в софте, который щас с упорством достойным лучшего перетягивают на Delphi 2010, не заботясь ни5.1 о кроссплатформенности и т.д. :)

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

Удачная, используйте смело. :)

anonymous
()

Что не релиз fpc, то новый срач на ЛОРе, что бы мы без него делали, совсем скучно было бы! А вообще = в качестве присваивания не нужно, только паскакальный :=, *ML-ный <- и схемовский set!

mix_mix ★★★★★
()

Быдлокодю на FPC и на C, и, самое странное, что оба языка мне нравятся и я никогда не пытался полить какой-то из них говном! А эти холивары {} vs begin-end - ну это просто бред и ни о чём

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

// здесь a уже не используется - дополнительная помощь оптимизатору, хрен такое получишь в паскакале, ага

Delphi:

var
  a:Integer;
begin
  Sleep(10); //a - ещо не существует
  a:=0;        //a - не существуєт. Warning! присвоеное значения не используетса!
  a:=4;        //инициализацьія а
  MyProc(a);
  Sleep(10); //а - уже не существуєт
  a:=23;       //a - не существуєт. Warning! присвоеное значения не используетса!
end;

в паскале должно бьіть также

ADR
()

и ещо... «begin» vs «{» - кора главного мозга после нескольких дней практики определяет и то и другое за один проход (т. е. за 60-120мс). не пойму в чом разница?

ПС для учоби ІМХО лутше внятноє слово «begin»

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

это неверно «{» - кора головного мозга без всякой практики нормально определяет.

А Begin End порочен по сути.

В Basic даже старых версий на порядок разумнее посупили

IF .. END IF, WHILE .. WEND, FOR .. NEXT

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