Категория: Руководства
Free Pascal. иначе называемый FPC (F ree P ascal C ompiler) — это 32х-разрядный, кроссплатформенный компилятор языка Pascal. В настоящем обзоре я рассмотрю его основные характеристики и возможности. Free Pascal относится к категории свободного программного обеспечения (free software) и распространяется по лицензии GNU.
КроссплатформенностьИтак, что в данном случае понимается под кроссплатформеностью? Довольно-таки большое количество платформ, однако. Во-первых, это два типа процессора:
Для i386 поддерживаются следующие операционные системы:
Версия 1.1 (находящаяся в состоянии разработки нестабильная ветвь) также поддерживает:
Надо заметить, что поддержка некоторых целевых платформ в нестабильной версии находится в состоянии разработки и не вполне пригодна для серьезной работы. Также в ветке 1.1 идет разработка компиляции для Linux и других ОС на отличных от i386 и m68k типах процессоров, таких как PowerPC, Sparc и 64х-разрядные процессоры линии x86.
Непосредственно кросскомпиляция поддерживается, однако возникают серьезные проблемы. Так, например, мне не удалось скомпилировать ассемблерные части RTL для Linux используя версии binutils для DOS и Windows.
Возможности языкаВ целом возможности языка ориентированы на развитые "промышленные стандарты", а не на ANSI-стандарт языка, как GNU Pascal. Промышленным же стандартом языка Pascal в настоящее время является его диалект Object Pascal от фирмы Borland. Кроме того, Free Pascal поддерживает дополнительные расширения, нехарактерные для Borland Delphi.
Версия 1.0.10 поддерживает следующие возможности:
В версии 1.1 добавлены средства языка из старших версий Borland Delphi:
В настоящий момент все перечисленные средства языка работают удовлетворительно, хотя можно выделить пару проблем: во-первых, незавершено автопреобразование строк UNICODE, и во-вторых, реализация интерфейсов допускает несоответствие требованиям модели COM — единственность ссылки на IUnknown должна отслеживаться разработчиком.
КомпиляцияКомпиляция происходит весьма быстро, поскольку, как и положено компилятору Pascal, Free Pascal работает в один проход. Так, например, полная сборка самого компилятора на моем компьютере (Celeron 600) занимает около полутора минут.
Для сборки объектных файлов, получающихся в результате компиляции, вызывается внешний компоновщик — GNU ld (или ldw для Windows-платформы). Вообще, дистрибутив Free Pascal попросту включает в себя пакет GNU BinUtils, частью которого является ld. Также данный пакет включает в себя кроссплатформенный ассемблер as (asw), GNU make, компилятор ресурсов для Win32 — windres и другие программы.
Встроенный компоновщик планируется в следующих версиях компилятора, однако ход работ в этом направлении мне неизвестен.
Компилятор командной строки для платформ i386 называется ppc386 (ppc386.exe для DOS и Windows). В дистрибутив входит также "загрузчик" (loader) компилятора, называемый, для любого процессора, fpc (fpc.exe). Таким образом, на любой платформе можно использовать в командной строке fpc .
Компилятор Free Pascal использует оптимизацию. Хотя она и уступает интеллектуальной оптимизации компилятора того же Delphi, однако рутинную, формальную оптимизацию FPC таки выполняет. В частности, можно указать целевой процессор, чтобы использовать расширенный набор команд, отсутствующих в i386, например, команды Pentium II. Для вычислений можно задействовать набор команд MMX или XMM.
Стандартные модулиВ состав дистрибутива входят модули, реализующие основную функциональность. Конкретный состав модулей зависит от платформы. Кроме ядра RTL, дистрибутив включает в себя дополнительные модули, называемые "пакетами" (packages), содержащие, например, интерфейс к API SQL-сервера InterBase (пакет ibase ), или функции работы с регулярными выражениями (пакет regexpr ).
Также наличествует некоторый аналог VCL, точнее ее ядра — основных классов и модулей библиотеки. Библиотека называется FCL — Free Component Library. Содержит как относительно примитивные классы, a-la TStringList. так и классы для работы с базами данных. Впрочем, модули FCL в настоящее время явно недоработаны — содержат пробелы в функциональности и некоторые баги.
ДокументацияВ целом, Free Pascal весьма хорошо документирован.
Документация к версии 1.0.10 состоит из шести частей и распространяется в различных форматах, в том числе — исходники LaTeX. В состав дистрибутива входит документация в виде PDF и HTML. Ниже — описание частей документации.
Free Pascal. Reference guideСправочное руководство. Содержит описание языка и модуля System. Также описывается модуль ObjPas. автоматически подгружаемый (аналогично System ) при выборе режима компиляции Delphi. или ObjFPC .
Free Pascal. Users' manualРуководство пользователя. Содержит описание процедуры инсталляции, ключей командной строки компилятора, IDE и утилит, входящих в состав дистрибутива, сообщений компилятора об ошибках, ошибках времени выполнения и так далее. Также содержит перечень стандартных модулей для различных платформ.
Free Pascal. Programmers' manualРуководство программиста. Описываются режимы компиляции, директивы компилятора, вопросы распределения памяти, компоновки, использования ассемблера и так далее.
Free Pascal supplied units. Reference guideСправочное руководство по стандартным модулям. Довольно подробно описываюся модули RTL, за исключением тех, которые являются интерфейсами к API операционных систем и их компонент.
Free Component Library (FCL). Reference guideСправочное руководство по FCL. В настоящий момент содержит описание классов модуля Classes. По всей видимости, в дальнейшем будет расти вместе с доработкой самой FCL. По крайней мере, я на это надеюсь.
FPDoc. Free Pascal code documenter. Reference manualРуководство по использованию утилиты для автодокументации fpcdoc, входящей в состав дистрибутива.
IDE и утилитыВместе с компилятором распространяется IDE (интегрированная среда разработки — Integrated Development Environment) текстового режима, похожее на IDE Turbo/Borland Pascal. В настоящее время, стабильные версии IDE, насколько мне известно, существуют только для DOS и Win32, работа над вариантами для других платформ еще не закончена. IDE содержит встроенную систему отладки — если я не ошибаюсь, с использованием отладчика GNU GDB, — и встроенную справку.
О стабильности IDE, к сожалению, приходится говорить с некоторой натяжкой — проблемы существуют. Однако, в целом пользоваться можно.
Также в состав дистрибутива входят следующие утилиты:
Кроме вышеперечисленных, относящихся собственно к Free Pascal, утилит, в дистрибутив входит, как уже упоминалось, пакет GNU BinUtils.
В настоящий момент находится в процессе разработки RAD для Free Pascal — IDE Lazarus. Существует рабочая версия для Linux. Версия для Win32 пока не работает.
ЛицензияFree Pascal распространяется под лицензией GNU GPL (GNU General Public License), входящие в состав дистрибутива библиотеки модулей — под лиценизией GNU LGPL (GNU Lesser Public License). Таким образом, программы, написанные на Free Pascal, могут распространяться каким угодно образом, в том числе — и закрытым, а исходники самого компилятора доступны для изменения и использования с сохранением условий GNU GPL.
Источники в InterNetОсновной источник информации — официальный сайт Free Pascal — www.freepascal.org. а также его зеркала, в том числе — находящееся в России — www.ru.freepascal.org. On-line документация находится по адресу www.freepascal.org/docs.html .
Информацию о лицензиях и идеологии GNU следует искать на официальном сайте GNU Project — www.gnu.org .
Дистрибутивы и/или исходники рекомендую скачивать с ftp-зеркала в Черноголовке — ftp.chg.org/pub/lang/pascal/fpc .
WDOSX DOS extender
Надо заметить, что поддержка некоторых целевых платформ в нестабильной версии находится в состоянии разработки и не вполне пригодна для серьезной работы. Также в ветке 1.1 идет разработка компиляции для Linux и других ОС на отличных от i386 и m68k типах процессоров, таких как PowerPC, Sparc и 64х-разрядные процессоры линии x86.
Непосредственно кросскомпиляция поддерживается, однако возникают серьезные проблемы. Так, например, мне не удалось скомпилировать ассемблерные части RTL для Linux используя версии binutils для DOS и Windows.
Возможности языкаВ целом возможности языка ориентированы на развитые "промышленные стандарты", а не на ANSI-стандарт языка, как GNU Pascal. Промышленным же стандартом языка Pascal в настоящее время является его диалект Object Pascal от фирмы Borland. Кроме того, Free Pascal поддерживает дополнительные расширения, нехарактерные для Borland Delphi.
Версия 1.0.10 поддерживает следующие возможности:
Object Pascal на уровне Delphi 3, и немного от Delphi 4:Объектные типы, в том числе классы;
"Широкие" строки с поддержкой UNICODE. Впрочем, полной поддержки различных кодовых страниц на данный момент нет, т.е. автоматическое преобразование WideString -> AnsiString и наоборот корректно выполняется только для символов Latin-1;
Перегрузка (overloading) функций и процедур.
Дополнительные расширения:Перегрузка операторов сравнения ( <, >, =, <=, >= ), арифметических ( +, -, *, /, **, div, mod ), и оператора присваивания ( := );
Поддержка inline- функций и процедур — в отличие от Borland Pascal, такие подпрограммы не требуется писать в машинных кодах;
Поддержка примитивных макросов;
Поддержка операторов присваивания с выполнением некоторого арифметического действия ( +=, -=, *=, /= ).
В версии 1.1 добавлены средства языка из старших версий Borland Delphi:
В настоящий момент все перечисленные средства языка работают удовлетворительно, хотя можно выделить пару проблем: во-первых, незавершено автопреобразование строк UNICODE, и во-вторых, реализация интерфейсов допускает несоответствие требованиям модели COM — единственность ссылки на IUnknown должна отслеживаться разработчиком.
КомпиляцияКомпиляция происходит весьма быстро, поскольку, как и положено компилятору Pascal, Free Pascal работает в один проход. Так, например, полная сборка самого компилятора на моем компьютере (Celeron 600) занимает около полутора минут.
Для сборки объектных файлов, получающихся в результате компиляции, вызывается внешний компоновщик — GNU ld (или ldw для Windows-платформы). Вообще, дистрибутив Free Pascal попросту включает в себя пакет GNU BinUtils, частью которого является ld. Также данный пакет включает в себя кроссплатформенный ассемблер as (asw), GNU make, компилятор ресурсов для Win32 — windres и другие программы.
Встроенный компоновщик планируется в следующих версиях компилятора, однако ход работ в этом направлении мне неизвестен.
Компилятор командной строки для платформ i386 называется ppc386 (ppc386.exe для DOS и Windows). В дистрибутив входит также "загрузчик" (loader) компилятора, называемый, для любого процессора, fpc (fpc.exe). Таким образом, на любой платформе можно использовать в командной строке fpc <имя файла> .
Компилятор Free Pascal использует оптимизацию. Хотя она и уступает интеллектуальной оптимизации компилятора того же Delphi, однако рутинную, формальную оптимизацию FPC таки выполняет. В частности, можно указать целевой процессор, чтобы использовать расширенный набор команд, отсутствующих в i386, например, команды Pentium II. Для вычислений можно задействовать набор команд MMX или XMM.
Стандартные модулиВ состав дистрибутива входят модули, реализующие основную функциональность. Конкретный состав модулей зависит от платформы. Кроме ядра RTL, дистрибутив включает в себя дополнительные модули, называемые "пакетами" (packages), содержащие, например, интерфейс к API SQL-сервера InterBase (пакет ibase ), или функции работы с регулярными выражениями (пакет regexpr ).
Также наличествует некоторый аналог VCL, точнее ее ядра — основных классов и модулей библиотеки. Библиотека называется FCL — Free Component Library. Содержит как относительно примитивные классы, a-la TStringList. так и классы для работы с базами данных. Впрочем, модули FCL в настоящее время явно недоработаны — содержат пробелы в функциональности и некоторые баги.
Документация В целом, Free Pascal весьма хорошо документирован.Документация к версии 1.0.10 состоит из шести частей и распространяется в различных форматах, в том числе — исходники LaTeX. В состав дистрибутива входит документация в виде PDF и HTML. Ниже — описание частей документации.
Free Pascal. Reference guideСправочное руководство. Содержит описание языка и модуля System. Также описывается модуль ObjPas. автоматически подгружаемый (аналогично System ) при выборе режима компиляции Delphi. или ObjFPC .
Free Pascal. Users' manualРуководство пользователя. Содержит описание процедуры инсталляции, ключей командной строки компилятора, IDE и утилит, входящих в состав дистрибутива, сообщений компилятора об ошибках, ошибках времени выполнения и так далее. Также содержит перечень стандартных модулей для различных платформ.
Free Pascal. Programmers' manualРуководство программиста. Описываются режимы компиляции, директивы компилятора, вопросы распределения памяти, компоновки, использования ассемблера и так далее.
Free Pascal supplied units. Reference guideСправочное руководство по стандартным модулям. Довольно подробно описываюся модули RTL, за исключением тех, которые являются интерфейсами к API операционных систем и их компонент.
Free Component Library (FCL). Reference guideСправочное руководство по FCL. В настоящий момент содержит описание классов модуля Classes. По всей видимости, в дальнейшем будет расти вместе с доработкой самой FCL. По крайней мере, я на это надеюсь.
FPDoc. Free Pascal code documenter. Reference manualРуководство по использованию утилиты для автодокументации fpcdoc, входящей в состав дистрибутива.
IDE и утилитыВместе с компилятором распространяется IDE (интегрированная среда разработки — Integrated Development Environment) текстового режима, похожее на IDE Turbo/Borland Pascal. В настоящее время, стабильные версии IDE, насколько мне известно, существуют только для DOS и Win32, работа над вариантами для других платформ еще не закончена. IDE содержит встроенную систему отладки — если я не ошибаюсь, с использованием отладчика GNU GDB, — и встроенную справку.
О стабильности IDE, к сожалению, приходится говорить с некоторой натяжкой — проблемы существуют. Однако, в целом пользоваться можно.
Также в состав дистрибутива входят следующие утилиты:
data2inc — преобразует произвольный файл во включаемый файл ( .inc ) для FPC, где соответсвующие данные представлены в виде константы-массива.
delp — очищает каталог от "временных" файлов, возникающих при компиляции, таких как объектные файлы модулей и .ppu.
fpcmake — используется для подготовки make-файлов для GNU make.
fpdoc — генерирует документацию из модулей Free Pascal в форматах HTML и LaTeX.
Закончил наконец-то перевод руководства программиста Free Pascal. Возможно, кто-то скажет, что это неактуально. Может быть… Ну а если вам этот документ всё-таки интересен, то вот ссылка на страницу документа:
Зачем я это делаю? Во-первых, я программист, поэтому подобная информация мне интересна. Во-вторых, чтобы хоть как-то поддерживать знание английского языка. Хотя, пожалуй, «знание» - это громко сказано))) Просто есть некоторые навыки перевода технических текстов.
Если кто не знает, Free Pascal – это среда разработки и компилятор языка программирования Object Pascal. Это полностью бесплатный инструмент. То есть с помощью этого инструмента вы можете создавать свои программы и делать с ними всё что угодно, в том числе использовать в коммерческих целях.
Впрочем, не буду тратить ваше внимание – переходите по ссылке и читайте. Там же, кстати, вы можете найти ещё один документ – руководство пользователя Free Pascal (впрочем, есть и другая документация).
Не забудьте оставить свои отзывы. Буду благодарен, если вы обнаружите какие-то ошибки и сообщите мне о бэтом.
Free Pascal, также известный как FPC (free pascal compiler), а ранее как FPK - свободно распространяемый в исходных текстах 32-разрядный кроссплатформенный компилятор языка Pascal.
КроссплатформенностьПервое, что впечатляет, это его кроссплатформенность: поддерживаются не две-три операционных системы, а сразу шесть ОС и два типа процессоров. На базе i386 - Win32, DOS, Linux, FreeBSD и OS/2. На базе процессора Motorola 680x0 - AmigaOS.
Что это значит? Это значит, что под все эти операционные системы вы можете писать программы, пользуясь одним языком и одной библиотекой базовых функций. А зачастую, вообще, для переноса программы или библиотеки достаточно ее перекомпилировать. Думаю, что особенно приятно должно быть инженерам и научным работникам - если не вдаваться в интерфейсные заморочки, любые расчеты можно написать один раз, не задумываясь над тем, под какой операционной системой они будут выполняться.
Надежность и удобствоСуществует мнение, что бесплатные и открытые програмные продукты менее надежны, чем коммерческие. К сожалению, в большинстве случаев это действительно так.
Однако и здесь Free Pascal является приятным исключением. Лично мне пришлось столкнуться в лоб только с одним глюком, причем только тогда, когда я использовал возможность Free Pascal'я работать не с родным для него GNU-ассемблером, а с TASM. Bug-list на сайте freepascal.org весьма обширен, однако подавляющее большинство багов обычному программисту никогда не встретится. Кроме того, в отличие от коммерческих систем эти ошибки не скрываются и исправляются командой разработчиков.
Сообщения об ошибках, выдаваемые компилятором - четкие и информативные, с указанием номера строки и позиции в ней, где обнаружена ошибка. Сделано это в таком формате, что например, редактор UltraEdit-32 позволяет автоматически перейти к нужной строке (кстати, очень хороший редактор для программирования, жаль только, что не бесплатный).
Компилятор сам управляет процессом ассемблирования и сборки, так что пользоваться им может и начинающий программист, привыкший к интегрированным средам.
Модули и библиотекиБазовая библиотека включает в себя стандартные модули, реализующие управление памятью, работу с файловой системой, управление консольным вводом/выводом, работу со строками и датами, математические функции, обработку исключений и интерфейс к API поддерживаемых операционных систем. При этом все вышеперечисленное, кроме API, для различных систем реализовано единообразно a-la Borland Pascal.
Если сравнивать с Turbo Pascal, то мы видим модули CRT, DOS, Graph (реализует работу с VGA-графикой), Strings, Objects. Сравнивая с Borland Delphi, видим соответствующие модули SysUtils и Classes. Для работы с API в базовой библиотеке предусмотрены модули Linux, Windows и GO32 (API DOS-расширителя GO32v2).
Существуют также дополнительные библиотеки модулей, часть из которых включается в дистрибутив Free Pascal, а часть - нет.
Несколько библиотек, находящихся пока в состоянии разработки, предназначено для объектной реализации GUI-интерфейса для Windows и XWindow.
Существует аналог Turbo Vision - Free Vision, однако пока он недоступен: первоначальная версия содержала много кода от Borland, и сейчас перерабатывается для лицензионной чистоты.
В процессе разработки библиотека доступа к базам данных. Предполагаются InterBase, MySQL и Postgress. Сейчас пока можно с ними работать только через их API.
В дистрибутив входят модули, облегчающие написание CGI-программ - разбор HTTP-заголовка и т.д. модули упаковки и распаковки файлов в формате zip, работа с SVGA-графикой и OpenGL, и многое другое.
ЛицензияFree Pascal распространяется на условиях GNU General Public License (GNU GPL). Модули и библиотеки распространяются на условиях GNU Library General Public License (GNU LGPL), последняя версия данной лицензии называется GNU Lesser Public License.
Ознакомиться с ними и узнать, что за зверь GNU можно на gnu.org или gnu.ru.
ЯзыкВпечатлившись кроссплатформенностью, мы скачиваем документацию, дабы поподробнее узнать о возможностях компилятора. Обычно freeware компиляторы особыми изысками не балуют - совместимость с Turbo Pascal 7.0 практически максимум их притязаний. Конечно, и TP - шаг вперед по сравнению со стандартами Pascal и Extended Pascal, однако мы живем в мире уже других стандартов, так называемых "промышленных". "Промышленный стандарт" на Pascal сейчас - это последняя версия Borland Delphi, то есть Object Pascal со всеми прелестями классов и настоящего объектного программирования.
Так вот, Free Pascal поддерживает классы и RTTI. Поддерживает также перегрузку (overloading) процедур и функций и обработку исключений в try-блоках. Поддерживает он и длинные строки (тип ansistring) по модели Delphi.
В общем, до Delphi Free Pascal "не дотягивает" совсем чуть-чуть: отсутствует поддержка динамических массивов, "широкие строки" (WideString) для работы с Unicode, и поддержка OLE Automation. Однако все эти возможности группа разработчиков намерена включить уже в следующий релиз - версию 1.2. Впрочем, я думаю, что с OLE Automation они скорее всего подзадержатся, поскольку это нужно только на одной платформе. Поживем, увидим.
Зато присутствуют такие вкусности, как перегрузка операторов (+, -, *, /, **, =, <, >, <=, >=. =), последний обеспечивает также скрытое преобразование типов, посему с ним надо обращаться осторожно. Inline- процедуры, функции и операторы, причем не нужно извращаться, как в Turbo Pascal, и писать в машкодах. Правда, действуют они только в пределах модуля - вне его вызываются как обычные.
IDE и утилитыА теперь о грустном - IDE, можно сказать, отсутствует. Для Win32 и DOS существует консольная оболочка fp, построенная по образу и подобию Turbo Pascal 7.0. Единственное достоинство этой оболочки - декларированная интеграция с gdb - GNU-отладчиком. Сам я этим отладчиком не пользуюсь, однако в конференциях встречал жалобы, что интеграция эта весьма несовершенна.
Отладчик прилагается в дистрибутиве (см. выше). К сожалению, GNU-отладчик не ориентирован на Free Pascal, зато Free Pascal ориентирован на него. Лично я отладчиком стараюсь не пользоваться, предпочитая "метод вилки".
Ассемблер и компоновщик - GNU as и ld (для Win32 - asw и ldw, соответственно).
Из прочих утилит, прилагаемых к компилятору, отмечу h2pas - переводчик С-шных заголовочных файлов .h в модули .pas; и компилятор ресурсов windres - аналог brcc32 из поставки Delphi.
Должен заметить, что ситуация с IDE не такая безнадежная, как может показаться. Существуют отдельные проекты, некоторые из которых весьма неплохи, однако характеризуются хотя бы одним из трех недостатков: написаны не на Free Pascal (хороший пример - редактор-оболочка Dev-Pascal, написанный на Delphi), не распространяются в исходниках, или недостаточно отлажены, попросту говоря, глючат. Очевидно, любой из этих причин достаточно, чтобы не вносить эти инструменты в дистрибутив.
СправкаСправка Free Pascal распространяется с дистрибутивом в двух форматах: PDF и HTML, при желании можно скачать отдельно справку и в других форматах. И в том и в другом виде она хорошо структурирована и прекрасно читается. Состоит из четырех книг:
"Руководство программиста", которое описывает различные аспекты программирования, такие как директивы компилятора, использование ресурсов, использование встроенного ассемблера и т.д.
"Справочник", где описывается язык Pascal в его Free Pascal диалекте и содержимое модулей System и ObjPas.
"Справочник модулей". Описываются модули: CRT, DOS, DXELoad, Emu387, GetOpts, GPM, GO32, Graph, HeapTrc, IPC, Linux, Math, MMX, MSMouse, Objects, Ports, Printer, Sockets, Strings, SysUtils.
"Руководство пользователя", где рассматриваются такие вопросы, как инсталляция Free Pascal, ключи командной строки, файл настроек и проч.
РезюмеНадеюсь, данный краткий обзор заинтересовал вас и станет первым шагом на пути к обстоятельному знакомству с одним из интереснейших открытых проектов - кроссплатформенным компилятором Free Pascal. Жду вопросов и тем для обзоров.
Copyright © Иван Шихалев, 2001-2002
Оставить комментарийОсновы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее.
Насколько это возможно, Free Pascal был разработан максимально совместимым с Turbo Pascal 7.0 и Delphi 7 (несмотря на это, совместимость не является основной целью), но он также расширяет возможности этих языков благодаря таким элементам, как перегрузка операций. И, в отличие от своих прототипов, Free Pascal поддерживает множество платформ, то есть является кросс-платформенным.
Он также отличается тем, что вы не можете использовать модули, откомпилированные на одной системе в других системах, то есть вы не можете использовать откомпилированные модули Турбо Паскаль.
Также имеется текстовая версия Интегрированной Среды Разработки (Integrated Development Environment – IDE), доступная для Free Pascal. Пользователи, предпочитающие визуальную среду разработки, могут использовать Lazarus или MSIDE.
Free Pascal состоит из нескольких частей:Это руководство пользователя Free Pascal. Оно описывает установку и использование компилятора Free Pascal на различных поддерживаемых платформах. Оно не пытается дать ни исчерпывающий список всех поддерживаемых команд, ни определение языка Pascal. Для этих целей смотрите Справочное Руководство. Для просмотра описания возможностей и внутренней организации компилятора используйте Руководство Разработчика. В приложениях этого документа Вы найдете списки зарезервированных слов и сообщений об ошибках компилятора (с описаниями).
Этот документ описывает компилятор и его функции такими, какими они есть на момент написания этого руководства. Для начала ознакомьтесь с файлами README (информации к сведению) и FAQ (часто задаваемых вопросов), распространяемых вместе с компилятором. В случае конфликта README и FAQ файлов с этим руководством, более достоверными следует считать README и FAQ файлы.
Free Pascal [1]. точнее Free Pascal Compiler aka FPC — это свободный 1 кроссплатформенный компилятор языка программирования Pascal. В отличие от другой свободной реализации этого языка — GNU Pascal, FPC ориентирован не на стандарт, а на популярные диалекты — то, что когда-то называлось Object Pascal, а теперь Delphi Language.
Существует также проект Lazarus [2] — основанная на FPC свободная среда программирования, реализующая значительную часть функционала собственно среды Borland Delphi (см. врезку). Простые проекты можно переносить практически без ручной работы, после чего они могут быть скомпилированы для систем, отличных от Win32.
Поддерживаемые платформыСписок ниже неполон. Дело в том, что разработка компилятора ведется непрерывно и портирование его на различные платформы тоже. Версии для разных платформ находятся в разных стадиях готовности, постоянно дорабатываются, а проверить их вживую у меня нет никакой возможности. Поэтому я перечислю только те, в которых я более-менее уверен.
Не все из этого развито одинаково хорошо. За подробным списком с пояснениями, что и как, прошу на официальный сайт, в викидокументацию [3]. Информация в pdf-документации, пожалуй, слишком скупа [4, стр. 7–8]. Замечу, что чем менее «мейнстримна» ваша платформа, тем больше вероятность столкнуться с проблемами. Наиболее отлажены и богаты библиотеками — самые распространенные системы: Windows, Linux, Mac OS X и FreeBSD.
В устаревших версиях компилятора 1.x, которые можно попытаться найти на ftp-зеркалах в интернете, поскольку на официальном ftp-сервере [5] они сейчас отсутствуют, была также поддержка архитектуры Motorola 680x0. В современных версиях она отсутствует, и неизвестно, вернется ли. Скорее всего, никому особо-то и не нужно.
Отдельно стоит упомянуть о недавно запущенном проекте генерации кода для виртуальной Java-машины. В релиз эта возможность еще не попала, желающие могут обратиться к викидокументации [6] .
Диалекты языкаTP режим совместимости с Turbo Pascal. Совместимость практически полная, за исключением тех средств Turbo Pascal, которые были возможны только в real-mode DOS. Delphi режим совместимости с Borland Delphi. На сегодняшний день по языку 2 Free Pascal совместим с Delphi примерно 7-й версии. FPC собственный диалект языка. Базируется на TP, от которого отличается различными расширениями, такими как, например, перегрузка операций. Включен по-умолчанию. ObjFPC собственный диалект языка с объектно-ориентированными расширениями a-la Delphi. Рекомендуется для новых проектов. MacPas режим совместимости с Macintosh Pascal.
Выбор текущего диалекта осуществляется через указание параметров компилятора, а также посредством директивы компилятора <$MODE xxx> непосредственно в исходных файлах. В одном проекте, но в разных модулях, могут быть задействованы одновременно любые диалекты.
Подробнее о различиях между поддерживаемыми диалектами и прочих расширениях языка пойдет речь в отдельной статье.
Источники информацииОфициальная документация на английском языке распространяется вместе с компилятором, а также доступна на официальном же сайте FreePascal.org [1]. Там же находится вики, где можно найти дополнительную информацию — о новых, экспериментальных и только планируемых возможностях.
Документация распространяется в формате PDF и состоит из следующих книг:
Free Pascal: Language Reference Guide [7] Справочное руководство по языку. Подробно описывает собственно язык, не включая стандартную библиотеку, которая документирована отдельно (см. ниже). Free Pascal: Programmer’s Guide [8] Руководство программиста. Описывает различные тонкости, такие как: директивы компилятора, управление памятью, соглашения об использовании регистров, особенности различных платформ и т.д. Free Pascal: User’s Guide [4] Руководство пользователя. Описывает использование и настройки компилятора и входящих в дистрибутив утилит, включая IDE текстового режима, но исключая описание утилиты для генерации документации к модулям fpdoc. которой посвящено отдельное руководство (см. ниже).
Также описывается отладка, сообщения об ошибках и проч. Run-Time Library (RTL): Reference Guide [9] Справочное руководство по стандартным модулям. Включает документацию на 46 модулей, входящих в состав RTL. Free Component Library (FCL): Reference Guide [10] Справка по дополнительным модулям, также входящим в стандартный набор, но не входящих в состав RTL. Подробнее о том, какие это модули и с чем их едят, мы поговорим в отдельной статье. FPDoc: Reference Manual [11] Справочное руководство по утилите автодокументирования исходников FPDoc.
Тем же, кто предпочитает русский язык, следует в первую очередь обратиться на сайт FreePascal.ru [12]. где наличествует ряд материалов (в основном статьи) и хороший живой форум [13]. Также могу порекомендовать книги для начинающих [14] и [15] .
Компилятор как таковой распространяется на условиях GNU General Public License v2 [16]. тогда как идущие в комплекте библиотеки — RTL и FCL — на условиях модифицированной GNU Lesser General Public License v2.1 [17]. Данная модификация явно разрешает статическую линковку с произвольным кодом [18, п 1.4]. Также входящие в комплект модули из каталогов packages могут использовать какие-то другие лицензии — тут лучше уточнять отдельно в каждом конкретном случае.
Схожую картину можно наблюдать и в проекте Lazarus — IDE и утилиты под GPLv2, основные библиотеки — modified LGPL, некоторые пакеты под своими лицензиями.
Итого: вы можете, используя Free Pascal и/или Lazarus, писать, как проприетарные, так и свободные (в том числе — копилефтные) программы.
1) GNU General Public License, см. подраздел «Лицензии ».
2) Совместимость стандартных библиотек менее полная.
СсылкиНачнем, пожалуй, с оператора if. then. else.
Если вы не программируете на Паскале и в обозримом будущем не собираетесь этим заниматься, то, скорее всего, все, о чем здесь пойдет речь, будет для вас малопригодным.
Если вы уже знакомы с Free Pascal и применяете этот компилятор, разрабатывая собственные программы, то для вас, должно быть, нижеследующее повествование будет скучным.
Для всех остальных, надеюсь, рассказ о Free Pascal окажется полезным. Не зря же говорят, что чем больше информации, тем выше уровень свободы( или энтропии. ).
Помимо всего прочего, Free Pascal потенциально может быть интересен незрячим программистам, поскольку позволяет создавать современные и качественные программы, используя компилятор в режиме командной строки.
Отсутствие платы за лицензию и открытость исходных кодов Free Pascal дают возможность использовать его в школах и университетах. Также Free Pascal может заинтересовать тех разработчиков, которых волнуют вопросы юридической чистоты создаваемых программных продуктов.
НапутственноеРазговор наш пойдет о компиляторе Free Pascal Compiler (FPC), который распространяется группой разработчиков по общественной лицензии GNU. Лицензия эта подразумевает, в частности, что для Free Pascal открыты и общедоступны исходные коды, а их распространение и модификация (при условии соблюдения лицензии) ничем не ограничены. Входящие в состав дистрибутива пакеты и библиотеки имеют лицензию LGPL (GNU Lesser Public License), что позволяет распространять скомпилированные программы на любых (в том числе и коммерческих) условиях. В дополнение к этому, Free Pascal можно получить совершенно бесплатно, то есть даром (вернее, на что вам придется раскошелиться, так это на оплату соединения через интернет для загрузки дистрибутива на свой компьютер).
По давно устоявшейся традиции, разработчики этого программного обеспечения ничего вам не гарантируют, дистрибутив и исходные коды отдают вам в том виде, каком они существуют (то есть если в них есть ошибки, то они там есть. если нет ошибок, то нет. ). Все, что вы будете делать с программным обеспечением, вы будете делать на свой страх и риск. Следуя этой традиции, добавлю, что и вся эта статья предоставлена вам на таких же условиях.
Примечание. все необходимые ссылки собраны в заключительном разделе этой статьи.
К чему он пригоден.Читая документацию по Free Pascal, то и дело натыкаешься на слово "Delphi". Речь идет о совместимости Free Pascal с Delphi, причем это настолько завораживает, что поначалу пояснения о том, что совместимость поддерживается лишь на уровне языка программирования, не воспринимаются всерьез. Как всегда, хочется всего сразу и бесплатно. Так что если для вас программирование в среде Delphi сводится к "мышиной" возне с формами и "кидании" компонентов из одного угла экрана в другой, то, подозреваю, Free Pascal вас разочарует. Ничего подобного Free Pascal не содержит. Вернее сказать, среда быстрой разработки приложений -- это другой программный продукт и, следовательно, тема для другого разговора.
Здесь же начнем с того, что Free Pascal -- это 32-разрядный компилятор. Мощный, быстрый (компиляция выполняется за один проход), многоплатформенный. Он поддерживает и расширяет синтаксис промышленных стандартов языка Паскаль: Turbo Pascal 7.0 и Object Pascal (тот самый, который используется в качестве языка программирования в среде Delphi). Для Turbo Pascal декларируется почти полная совместимость, а для Delphi - совместимость с большинством версий, включая Delphi 7 (классы, rtti, исключения, ansistrings, widestrings, интерфейсы). В дистрибутиве для Apple предусмотрен режим совместимости с Mac Pascal. Кроме того, Free Pascal реализует перегрузку функций, перегрузку операторов, глобальные свойства и некоторые другие самобытные возможности.
Free Pascal поддерживает компиляцию кода для процессоров Intel, начиная с i386, AMD64 or EMT64, PowerPC, SPARC, Intel ARM. На сегодняшний день существуют или находятся в разработке релизы Free Pascal для следующих операционных систем: Dos (с поддержкой 32-разрядных расширений), Linux, Mac OS X/Darwin, Mac OS classic, Amiga (только версия 0.99.5), Win32, os/2, FreeBSD, BeOS, Solaris. PalmOS. NetBSD, Netware, OpenBSD, MorphOS.
Сейчас последней и рекомендуемой к использованию является версия 2.0.2, вышедшая в ноябре 2005 г. Для каждой из поддерживаемых платформ существует свой дистрибутив Free Pascal. В дальнейшем речь пойдет о пакете, предназначенном для семейства ОС Win32.
На уровне исходного кода приложения, разработанные при помощи Free Pascal, являются переносимыми (портируемыми) между поддерживаемыми платформами. Степень переносимости тем выше, чем больше приложение ориентировано на использование входящих в состав Free Pascal модулей (имеются в виду модули, общие для всех поддерживаемых платформ).
Free Class LibraryВернемся еще раз к вопросу совместимости Free Pascal и Delphi. Полагаю, что справедливей будет говорить о легкости/трудности перехода от Delphi к Free Pascal и легкости/трудности переноса существующих исходных кодов. При таком подходе нельзя не сказать о библиотеке Free Class Library (FCL), входящей в состав дистрибутива Free Pascal. Эта библиотека содержит аналоги невизуальных компонентов Delphi. Здесь широко представлены средства доступа к различным базам данных (в том числе Interbase, mysql, ODBC и др.), средства работы с XML и средства работы с интернет. В некоторых случаях совместимость с компонентами Delphi доведена вплоть до совпадения имен классов и методов.
ДокументацияВ дистрибутив Free Pascal для Win32 включена документация на английском языке, представленная в формате pdf. На сайте разработчиков также доступна он-лайн документация и архивы с документацией в формате html и в виде обычного текстового файла.
В состав документации входят руководство пользователя, руководство программиста, справочник по диалекту языка Паскаль, который поддерживается Free Pascal, справочник по опциям командной строки,справочник по модулям и функциям встраиваемых библиотек и руководство по созданию документации.
Перевод документации на русский язык подкрасил бы дело, но, к сожалению, работы по переводу находятся в начальной стадии.
Прибавления Кроме компилятора, в состав пакета входят дополнительные утилиты, призванные подсобить в разработке приложений. Среди них:Единственное, что не устроило меня во Free Pascal, это интегрированная среда разработки. Дело в том, что она малопригодна для работы незрячих программистов, поскольку реализована в виде консольного приложения. Напомню, что консольным называется такое приложение, которое не использует графический интерфейс, а работает исключительно в текстовом режиме. При этом такое приложение может быть 32-разрядным приложением Windows (а не только DOS-программой). Не секрет, что консольное окно, мягко говоря, недостаточно озвучивается скринридерами (например, Jaws for Windows). Ситуация осложняется еще и тем, что внешне среда разработки Free Pascal выглядит подобно среде разработки Turbo Pascal (то есть имеет меню, диалоги, множество окон, реализованных в текстовом режиме). Однако скринридеры, работающие под DOS, здесь тоже не помогут, так как это приложение Windows.
С точки зрения разработчиков Free Pascal, такой подход, возможно, и оправдан: консоль есть практически во всех операционных системах, а графический интерфейс только в некоторых. Но в данном случае приходится признать, что интегрированная среда Free Pascal для незрячих недоступна.
Впрочем, выход есть всегда. Free Pascal может выполнять компиляцию и сборку программ из командной строки. То есть вы можете для подготовки исходных текстов использовать наиболее удобный для вас текстовый редактор, который позволяет редактировать обычный текст (plain text) в кодировке ANSI, а компилировать программы можно, запуская специально подготовленный bat-файл или используя утилиту make, входящую в состав Free Pascal. Такой способ может показаться непривычным для пользователей Windows, програмирующих в среде Delphi, но для пользователей Linux - это в порядке вещей. Ниже будут приведены два примера (консольное приложение и GUI-приложение), иллюстрирующих такой подход.
Также следует заметить, что уже существуют многочисленные (в том числе и бесплатные) текстовые редакторы, представляющие собой не слишком изощренную среду разработки программ. Некоторые из них вполне доступны для чтения программой Jaws for Windows. В таких редакторах выполняется цветовое выделение синтаксических конструкций для различных языков программирования, а также есть возможность собрать несколько файлов в один проект и указать командную строку для компиляции исходных кодов.
Проект LazarusРассуждая об "идеологической совместимости" Free Pascal и Delphi, необходимо отдать должное проекту Lazarus, в рамках которого и реализуется идеология быстрого визуального программирования.В основе проекта лежит библиотека визуальных компонентов Lazarus (LCL), для которой декларируется совместимость с визуальными компонентами VCL из Delphi. Библиотека LCL является платформонезависимой и утверждается, что исходные коды приложений могут быть портированы на любую из поддерживаемых платформ.
Развитие проекта идет в двух направлениях: разработка и улучшение работы визуальных компонентов, входящих в LCL, и совершенствование интегрированной визуальной среды быстрой разработки приложений. Дистрибутив этой среды разработки и библиотека компонентов Lazarus не входят в состав дистрибутива Free Pascal. Если вас интересует этот проект, вы можете отыскать все необходимые файлы на сайте разработчиков.
Установка компилятораРекомендуемую для работы версию Free Pascal можно загрузить с официального сайта разработчиков. Имя загружаемого файла (версия 2.0.2 для ОС Win32): fpc-2.0.2.i386-win32.exe, размер составляет около 26 мегабайт.
Также на официальном сайте доступны исходные коды компилятора и входящих в него пакетов. Этот материал может быть использован и как пример большого открытого проекта, и как своего рода образец стиля программирования, и как основа для собственных разработок.
После того как вы загрузили дистрибутив, запустите программу установки Free Pascal (файл fpc-2.0.2.i386-win32.exe). Далее придется выполнить стандартную процедуру установки, то есть последовательно пройти несколько диалогов, нажимая кнопку Next (в последнем диалоге нужно будет нажать кнопку Install).
Не рекомендуется изменять папку, в которую будет установлен компилятор (по умолчанию это C:\FPC\). Иначе (если путь к этой папке будет слишком длинным) возможны ошибки при компиляции.
Рекомендуемый тип установки (если позволяет размер свободного места на диске) - Full installation (Установка полного пакета). Также доступны - Minimum installation (Установка минимально необходимых файлов) и Custom installation (Выборочная установка). Полная установка займет на диске 101 мегабайт. При выборочной установке можно отказаться, например, от интегрированной среды разработки.
Первые программы Командный файлДля компиляции простых примеров и небольших программ вполне подойдет bat-файл, который должен располагаться в той же папке, где и файл с исходным кодом. Для консольного приложения он может иметь следующий вид(предполагается, что компилятор установлен в папку C:\FPC\):
В результате выполнения такого файла в текущей папке появятся три файла: объектный (с расширением .o), исполняемый (.exe) и файл, содержащий отчет о компиляции и сообщения об ошибках (errlog.txt). Разумеется, что объектный и исполняемый файлы появятся лишь в том случае, если при компиляции не было ошибок.
Аналогичный bat-файл для GUI-приложения дополнительно будет содержать командную строку для вызова компилятора ресурсов. Компилятор ресурсов входит в дистрибутив Free Pascal.
Консольное приложениеПо заведенному порядку следовало бы в качестве первой консольной программы предложить четырехстишие, выводящее на экран строку "Hello, world!". Немного отступим от этого порядка и, кроме вывода текста на экран, проиллюстрируем работу с функциями Win32 API (в данном случае GetVersionInfo ).
Поместите нижеследующий текст программы в текстовый файл с hello.pas. В той же папке создайте bat-файл для компиляции консольного приложения. Запустите этот bat-файл. Если во время компиляции ошибок не было, то в папке появятся файлы hello.o, hello.exe и errlog.txt. В противном случае вы увидите только файл errlog.txt (просмотрите его и устраните ошибки).
Запустите файл hello.exe. На экран будет выведено сообщение о версии ОС Windows, установленной на вашем компьютере. Если вы используете Jaws for Windows, то прочитать содержимое окна можно при помощи Jaws-курсора. Нажмите клавишу Enter, чтобы закрыть окно приложения.
GUI-приложениеЕсли вы изучаете Win32 API и системное программирование в ОС Windows, но при этом не хотели бы переходить с Паскаля на Си, то Free Pascal - это вполне приемлемое решение. Практически любой пример, приводимый в справочниках по Win32 API, можно реализовать на Free Pascal путем замены конструкций языка Си на аналогичные конструкции языка Паскаль.
В качестве примера ниже приведен исходный код простого GUI-приложения, которое описывает и регистрирует класс окна, создает окно и запускает цикл обработки сообщений. Окно приложения содержит горизонтальную полоску меню: Файл и О программе. При выборе в меню Файл пункта Открыть появляется стандартный диалог открытия файла. Пользователь может выбрать только файлы с расширением .wav. После того как файл будет выбран, он будет воспроизведен при помощи системной функции PlaySound (). Чтобы сделать пример попроще, в нем не обрабатывается сообщение о перерисовке окна.
При создании GUI-приложения необходимо указать компилятору тип приложения (по умолчанию подразумевается консольное). Это делается дериктивой
Если необходимо добавить к приложению файл ресурсов (в данном случае ресурсом является меню программы), то следует воспользоваться директивой
Вам следует скопировать исходный код приложения в текстовый файл hellowin.pas, а исходный код файла ресурсов в hellowin.rc. В ту же папку необходимо поместить bat-файл для компиляции GUI-приложения. Запустите этот файл. Если не было ошибок компиляции, то в папке появятся файлы hellowin.exe, hellowin.o, hellowin.res, hellowin.or и два файла с отчетами о компиляции errlog,txt и errres.txt. Запустите файл hellowin.exe и проверьте работу пунктов меню приложения.
Для компиляции приложения необходим файл ресурсов hellowin.rc.
Ссылки по теме