Добавить комментарий

"Test drive" FreePascal / Lazarus

Тестировал FreePascal / Lazarus на предмет пригодности к профессиональной разработке. В качестве теста взял простенькое приложение из 3 компонентов (1 исполняемый модуль и 2 DLL-ки по принципу плагинов) с несложной обработкой XML внутри. Выводы.

Продукт имеет немало продвинутой функциональности, главная из которой - компиляция и кросс-компияция под множество платформ, включая мобильные устройства. Однако, среда пока не слишком пригодна для разработки чего-то иного, чем монолитное графическое оконное или консольное приложение, в т.ч. связанное с СУБД.

Например:

  • в последней стабильной версии 0.9.28 отсутствует отладка DLL в среде разработки (можно использовать GDB извне или традиционную отладку сообщениями и файлами журналов). Мне удалось заставить это работать только взяв последний девелоперский слепок-дистрибутив (snapshot), обновив в нем руками GDB до последней версии 7.2.
  • в последней стабильной версии все ещё нет различных конфигураций для компиляции. Они введены в 0.9.29, но эта версия пока доступна только в виде слепка текущей разработки.
  • отсутствует управление группой проектов (решением, solution). То есть для работы с тремя тестовыми модулями приходилось держат открытыми три запущенных среды разработки...
    встроенная справка отсутствует, вся информация в документации на сайте или в виде PDF-книжек
  • unicode-строки так и не реализованы по-умолчанию, необходимо явное использование WideString и нового типа UnicodeString (управление памятью в нем базируется на подсчете ссылок)
  • ну, куча неприятной мелочи, вроде того, что окно редактирования теряет фокус после компиляции - с этим ёщё жить можно

Вариант использования Lazarus для разработчика видится только такой:

  1. Основная разработка ведется в Delphi, в исходном коде используем условную компиляцию
  2. С юникодными строками работаем так, как будто нет их поддержки в Delphi 2009, т.е. используем техники до версии 2007
  3. Регулярно проводим компиляцию под FreePascal, проверяя совместимость кода. Получается, правда, что Lazarus, как таковой становится здесь необязательным, достаточно одного FPC.

Вариант радикальный, вряд ли пригодный для Delphi-разработчика, особенно если речь идет об оконных приложениях: не связываться и сразу писать переносимый код на С/С++, Java или .Net/Mono :)

P.S. Про эксперимент миграции относительно большой системы читайте в "Кактус, или как перестать грызть Lazarus"