Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Программирование и алгоритмические языки в Linux

Кросс-платформенная разработка с Free Pascal 2.2.0

Оригинал: Cross-Platform Development with Free Pascal 2.2.0
Автор: Joost van der Sluis
Дата: 10 сентября 2007
Перевод: Александр Тарасов aka oioki
Дата перевода: 3 октября 2007
Скриншоты взяты из статей Free Pascal, Lazarus Русской википедии

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

Недавно вышел Free Pascal (FPC) версии 2.2.0. Благодаря своей давней истории (первая версия вышла в 1993 году) этот компилятор языка Pascal сегодня является одним из самых примечательных компиляторов с открытым кодом. Каждый день все больше программистов узнают о FPC и начинают разработку своих приложений на Object Pascal. Особенно этому благоприятствует развитие Lazarus, графической среды разработки для FPC, которая содержит расширенный набор средств для разработки графических (GUI) приложений.

В чем сила FPC?

Многих программистов удивляет возрождение интереса к Pascal. Ведь многие думают, что Pascal - устаревший язык, который больше не используется после того, как давно проиграл войну с C. Тем не менее, FPC достаточно функционален, чтобы быть выбором программистов.
Free Pascal, запущенный из среды cygwin
Рисунок 1: Free Pascal, запущенный из среды cygwin

Кросс-платформенность

Самое главное достоинство FPC - это его кросс-платформенность. Разработка этого компилятора начиная с серии 2.0 была сфокусирована именно на возможностях переносимости.

Эта функция устраняет необходимость рутинной работы по написанию сложных Makefile, которые различны для каждой платформы, и должны быть получены с помощью средств типа autoconf и configure. С FPC же программисту не нужно искать различные библиотеки, для портирования достаточно скопировать компилятор и исходный текст проекта на платформу. Очевидно, что также возможна кросс-компиляция с одной платформы (к примеру, Linux) на другую (Windows как самая популярная).

Причина переносимости кода Free Pascal проста: в комплекте предлагается набор кросс-платформенных стандартных библиотек, обходящих различия между Posix и Windows API. Возможно симулировать одну платформу на другой, однако такое решение требует громоздких библиотек и непростой установки, при этом часто программы отмечаются странным поведением и внешним видом на неродной платформе.

Компилятор Free Pascal поставляется с богатым набором библиотек: библиотека RTL (Run-Time Library, библиотека времени выполнения) предоставляет базовую функциональность, такую как доступ к файлам, классы, манипуляции со строками и RTTI (Run-Time Type Information, информация о типах времени выполнения) для создания потоков. Библиотека FCL (Free Class Library, библиотека свободных классов) - объектно-ориентированная библиотека, нацеленная на работу с XML, веб-программирование, взаимодействие с базами данных, обработку изображений и др. Если программист опирается на эти библиотеки и избегает системно-зависимых API, его программа будет работать не только на Linux, но также на Windows, Free BSD, Mac OS X, Windows CE и многих других платформах.

Очевидно, что прямые указания путей, специфические для какой-либо ОС, например, 'c:\program files' или '/etc/myprog.cfg' не являются кросс-платформенными. Подпрограммы FPC (к примеру класс TRegistry) берут на себя работу, специфичную для ОС: реализация библиотеки FCL для этой платформы знает где и как система хранит конфигурационные данные. Это практически устраняет необходимость в системно-зависимых API-вызовах.

Скриншот Lazarus, IDE для FPC
Рисунок 2: Скриншот Lazarus, IDE для FPC

Графические (GUI) приложения

Графические (настольные) приложения сегодня стали нормой. Однако это не проблема: интегрированная среда разработки (IDE) Lazarus с самого начала разрабатывалась с тем же уклоном на переносимость, что и FPC. Библиотека LCL (Lazarus Class Library), поставляемая с Lazarus позволяет разрабатывать настольные приложения, которые используют стандартный Windows 32 или 64 API. На Linux используются библиотеки GTK 1 или 2, а поддержка библиотек Qt и Carbon находится на стадии завершения.

Используя Lazarus, можно разработать приложение в Linux, и оно будет использовать GTK. Все, что нужно будет сделать, чтобы получить версию приложения для Windows - указать опцию компилятора. Тогда перекомпиляция произведет исполняемый файл для Windows, который будет работать на любой версии Windows - без каких-либо дополнительных библиотек. Все, что требуется для такого программистского приема - стандартная установка Lazarus.

64-битная Windows

Компилирование из Windows в Linux немного более сложно: компилятору нужен редактор связей GNU, чтобы собрать бинарный файл ELF, а также копия всех требуемых библиотек. Но принцип остается тем же. Для сборки исполняемых файлов Windows FPC содержит встроенный редактор связей, что позволяет создавать бинарные файлы для 64-битной версии Windows, в то время как средства GNU пока не позволяют этого делать. Это делает FPC+Lazarus первой крупной средой разработки с открытым кодом для Win64.

Новые возможности Object Pascal

В прошлом в FPC были реализованы некоторые расширения языка Pascal, в частности перегрузка операторов, которая впоследствии была реализована и в коммерческих компиляторах. В новой версии 2.2 реализована экспериментальная поддержка шаблонов, что может быть чрезвычайно полезно при программировании, например, классов списков.

Скорость

FPC - быстрый компилятор. FPC компилирует код примерно в 7 раз быстрее, чем, к примеру, GCC. Это может быть не так важно, но все же сокращает время разработки. Скорость полученного кода сравнима со скоростью кода, полученного компилятором GCC: согласно измерениям Shootout, код FPC 2.0.4 лишь на 30% медленнее, чем код GCC. С другой стороны код FPC использует меньше памяти, чем код GCC. В сравнении с интерпретируемыми языками (например, Ruby) код FPC выполняется в 50 раз быстрее. Разница между PHP или Java меньше, однако эти программы используют в 14 (PHP) и в 17 (Java) раз больше памяти, чем программы, написанные на FPC.

Кто-то может удивиться, почему ничего не говорится о скорости работы графических приложений. При сравнении отклика популярной Java IDE Eclipse с откликом Lazarus, можно моментально почувствовать разницу. Родной код выполняется быстрее, чем интерпретируемые или JIT-языки, даже с предварительной компиляцией. Родной код использует меньше памяти, такие программы легче устанавливать, так как на компьютере пользователя не нужно будет доустанавливать дополнительные компоненты.

Библиотеки

Как было отмечено ранее, Free Pascal поставляется с библиотеками RTL и FCL. FCL содержит компоненты для доступа к базам данных, таким как Oracle, Firebird, MySQL, SQLite, PostgreSQL и любой другой ODBC-совместимой базы данных. Также она содержит код для работы с XML, веб-программами (модули CGI и Apache) и для доступа к графическим библиотекам, таким как SDL и OpenGL. Множество компонентов Delphi можно напрямую использовать в Free Pascal. Сразу вспоминаются компоненты доступа к базам данных - ZeOS и сетевые компоненты - Indy. Все большее число компаний выпускают FPC-версии своих Delphi-библиотек.

Заключение

Free Pascal - зрелый компилятор, замечательно подходящий для любой задачи программирования. FPC особенно хорош там, где требуется кросс-платформенность приложений. Простота разработки приложений для Linux и Windows изумляет. Вдобавок ко всему проект Lazarus предоставляет два пути разработки настольных GUI-приложений, что едва ли доступно для C или C++ под Linux. Это поле традиционно отводилось интерпретируемым языкам, таким как Java или C#, которые страдают чрезмерным потреблением памяти и низкой производительностью. В общем, можно сказать, что комбинация FPC/Lazarus - хороший выбор при кросс-платформенной разработке.

Обсуждение статьи на LORe.