Свободу Паскалю!

После пяти лет упорной работы Free Pascal 2.0 предстал перед разработчиками. Выпустив новую версию, авторы компилятора показали свою готовность к дальнейшему расширению открытой платформы разработки. В мире MS-DOS Паскаль был одним из самых любимых языков программирования, а его наследник Borland Delphi занимает важное место в мире Windows. Для сообщества OpenSource Free Pascal является основным компилятором Паскаля, и, не смотря на то, что сообщество это больше тяготеет к использованию языка Cи, Паскаль может многое предложить своим поклонникам.

Что такое FreePascal
Free Pascal — это компилятор, разрабатываемый под лицензией GPL. Он может использоваться на системах с 32 и 64-битной архитектурой CPU, таких как Intel 32/64 бита, AMD 32/64 бита, SPARC, PowerPC и Intel ARM. Этот язык совместим с Turbo Pascal, Delphi (до седьмой версии), и (частично) с Metrowerks Pascal. Он поддерживает множество различных операционных систем: Dos, Linux, Windows, OS/2, FreeBSD, NetBSD и OpenBSD, Novell Netware, Mac OS classic, Mac OS X и MorphOS.
К нему прилагается кросс-платформенная Run-Time библиотека, множество интерфейсов к существующим библиотекам, а также большое число невизуальных классов из состава Free Component Library. Последний по порядку, но не по значимости, аргумент в пользу Free Pascal – это наличие текстовых IDE для множества платформ, а также более 1800 страниц документации по FPC.

Почему Паскаль?
Поскольку сообщество OpenSource больше тяготеет к Си, нам придется для начала ответить на вопрос: «А чем же Паскаль лучше?». Для этого сравним Паскаль с другими современными языками, доступными в наше время. Паскаль столь же стар, как и Си, и между двумя этими языками есть много общего. Оба они являются процедурными языками третьего поколения, оба позволяют писать четко структурированные программы, на обоих языках написано немало известных во всем мире программ.
Новые языки, такие как Java и C#, обещают облегчить программирование за счет использования менеджера кода с автоматическим управлением памятью. Так как это освобождает программиста от рутинных задач, разработка программы в целом облегчается. Отсюда возникает законный вопрос: а оправдан ли в наше время интерес к старым «школьным» языкам? Несомненно, ведь программы, написанные на новых языках имеют неприятную привычку – им часто требуются дополнительные исполнимые библиотеки (помните, что нужно для программ, написанных с использованием .Net? — НП).
Так или иначе, но большинство программного обеспечения написано для работы в «чистой» ОС, и, как мне кажется, такое положение вещей будет нормой еще долгое время. Ну а для написания таких программ нужны хорошие средства разработки. Некоторые компиляторы Си обладают такими качествами и Free Pascal – тоже. Да, Паскаль и Си схожи, но Паскаль может предложить программистам еще очень много нового. Например, традиционная сильная сторона Паскаля – безопасность типов – в наше время является столь же действенной, как и 30 лет назад. При этом в Паскаль весьма удачно введено модульное программирование и возможность работы с объектами.
Паскаль снимает с вас заботу о многих важных вещах. Например, каждое использование типа string в Си требует внимания, дабы избежать выхода за пределы буфера. Паскаль не ограничивает вашу свободу: если вы хотите, чтобы ваш код использовал область за пределами буфера – делайте это! Вам не нужно заботиться о такой рутине, как правильное использование строк, а значит, количество ошибок сокращается.
Современный Паскаль имеет множество способов для улучшения программного обеспечения. При проектировании современных объектно-ориентированных приложений свойства Паскаля предоставляют вам мощнейший инструмент, позволяющий использовать множественное наследование без проблем с семантикой. Использование RTTI (Run-Time Type Information) обеспечивает легкое использование поточности и множество опций дизайна RAD. Взгляните, например, на проект Lazarus, представляющий собой кросс-платформенную IDE, использующую Free Pascal.
Что касается Free Pascal, то я уверен, что многие программисты оценят то, что компиляция с его помощью осуществляется в 9 (девять!) раз быстрее, нежели с помощью GCC, сопровождается понятными и полезными сообщениями об ошибках, а также освобождает вас от необходимости написания make-файлов.
В итоге, использование Паскаля дает вам, как программисту, множество преимуществ перед вашими коллегами, пишущими на Си.

Free Pascal
В начале 90-х годов прошлого века самым распространенным компилятором Паскаля был Turbo Pascal от Borland. Он собрал вокруг себя огромное сообщество программистов, и когда в 1994 году стало ясно, что его развития не последует, многие программисты были очень недовольны. В то время было начато немало проектов по написанию нового компилятора. Одним из таких проектов (стартовавшим в 1993 году) был Free Pascal, изначально известный как FPK-Pascal. Все первые разработчики Free Pascal были очень довольны Turbo Pascal и потому поставили перед собой цель: написать современную 32-битную замену для Turbo Pascal.
voxel_world.jpg
За короткий срок к проекту присоединилось большое число поклонников Turbo Pascal, и это дало ему большую пользовательскую базу. В июле 2000 года, как венец долгой работы, вышел Free Pascal 1.0. Как и было обещано, Free Pascal представлял собой 32-битный современный компилятор Паскаля, довольно хорошо совместимый с Turbo Pascal. Он также оказался достаточно надежным, чтобы его можно было использовать для написания больших программ. В сфере образования – традиционной цитадели Паскаля – Turbo Pascal был вытеснен Свободным Паскалем, и многие гуру перешли на разработку программ в FPC. Количество загрузок компилятора резко возросло, и до сих пор с сервера ftp.freepascal.org каждый месяц уходит до 0,5 терабайта трафика.
Однако мир изменился. Turbo Pascal исчез с арены, и его место занял новый лидер – Delphi, используемый в основном для разработки бизнес-приложений. Так появилась новая цель для FPC – создать OpenSource аналог Delphi. Однако, так или иначе, компилятор был написан. Причем фактически он был написан группой талантливых юнцов и сумасшедших программистов, не имевших на тот момент ни малейшего опыта в написании компиляторов.
Также стал очевидным другой недостаток. Версия 0.99 компилятора была портирована на платформу Commodore Amiga. Для этого был написан второй генератор кода – для M68000 (первый, само собой, был предназначен для платформы i386). Этот подход оказался крайне неудобным, поскольку каждое изменение приходилось вносить в оба генератора кода, что увеличивало количество ошибок. На этом фоне задача по генерации более эффективного ассемблерного кода несколько отошла на второй план.
lentil_wars.jpg
Другими словами, назрела необходимость модернизации. Делом первостепенной важности стало написание нового генератора кода, но для обеспечения строгой архитектуры компилятора нужно было переписать и многие другие составляющие.

Новые возможности
Версия 2.0 использует архитектуру, которая до сих пор нигде не применялась, что является предметом особой гордости разработчиков. Однако новый компилятор не только должен иметь новую архитектуру; он к тому же должен обладать и новыми возможностями.
Итак, что нового предлагает FPC? Прежде всего, он может быть портирован на множество платформ. Вторая версия уже доступна на процессорах i386, x86_64, PowerPC/32, Sparc и ARM. В списке поддерживаемых операционных систем числятся Dos, Linux, Windows, OS/2, и FreeBSD. В настоящее время ведется работа по созданию версий для мультипроцессорных систем, а также ОС, не поддерживаемых ранее: таких, как Novell Netware, Mac OS classic и Mac OS X.
Вторая важная особенность – это способность генерировать отличный код, делать хороший «inlining» и возможность использовать множественные преобразования вызовов. FPC также обладает возможностью использовать расширения языка, такие как парсинг 64-битных констант, интерфейсы, динамические массивы и многое другое.
Третья деталь: у FPC есть отличный менеджер «кучи» (heap), а компилятор и runtime-библиотека поддерживают многопоточность. Поддержка интернационализаций поможет вам без труда переводить ваши приложения на разные языки, при этом тип widestring будет корректно работать даже при использовании языков с «нестандартными» наборами символов. Также в версии 2.0 была значительно улучшена совместимость с Delphi, и теперь вы можете использовать многие особенности этого языка, работая в специальном Delphi-режиме. Программистов, работающих с платформой Apple порадует тот факт, что в режиме Mac Pascal можно использовать многие возможности таких языков, как Think Pascal и Metrowerks Pascal.
Разумеется, даже самый хороший компилятор бесполезен без хороших библиотек, и множество таких библиотек уже доступно для скачивания.
Впрочем, описанию всех усовершенствований нового Свободного Паскаля можно посвятить отдельную статью…

Будущее
Чего стоит ожидать в будущем? Теперь, когда главные архитектурные вопросы уже решены, мы вплотную займемся оптимизацией кода, которая у FPC пока заметно хуже, нежели у других OpenSource-компиляторов. Больших изменений стоит ожидать и в работе с «деревьями» (особенно с присвоением одиночных статических переменных). Также мы будем расширять список поддерживаемых платформ. Ну и, наконец, большие изменения ожидаются в средах разработки, основанных на FreePascal, что позволит сделать его мощным инструментом RAD.

Заключение
Free Pascal 2.0 – это результат пяти лет интенсивной разработки. За эти годы он превратился из банальной поделки, каких в Интернете и без него хватает, в отличный инструмент, по праву считающийся одним из лучших OpenSource компиляторов. Он не пытается создать новый красивый язык, один из тех, что появились и исчезли, а использует проверенную основу, успешно используемую уже более 30 лет.
Если вы хотите писать стоящие программы, то FreePascal будет для вас одним из лучших инструментов.


Рекомендуем почитать: