Что такое Free 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. |
Опубликовал Kest
November 12 2008 20:52:24 ·
0 Комментариев ·
11489 Прочтений ·
|
|