Бейсик Линукс сыры пыры
АрхивСофтерраСогласен, сейчас название кажется вам бессмыслицей, но к концу статьи вы все поймете. Для начала расшифровка: сыры пыры - это средства производства. Именно так, для удобства, сокращал сие неудобоваримое словосочетание профессор экономики в моем вузе.
Согласен, сейчас название кажется вам бессмыслицей, но к концу статьи вы все поймете. Для начала расшифровка: сыры пыры - это средства производства. Именно так, для удобства, сокращал сие неудобоваримое словосочетание профессор экономики в моем вузе. И, похоже, не только он, ибо если вы взглянете на инструментальные средства разработки (RAD) под Linux (особенно после длительного знакомства с MS Visual Studio или Delphi), может возникнуть неприятное ощущение ущербности и сырости.
Но начну я не с описания различных RAD, а с некоторой технологической затравки, без которой, к сожалению, никак нельзя. Нельзя по той простой причине, что разработка ПО под Linux имеет ряд важных особенностей.
С чем сталкивается пользователь, запустив обычное Windows-приложение? С окошечками, кнопочками и прочими визуальными элементами, будь то линейки прокрутки или текстовые поля. Linux по умолчанию лишена всего этого благолепия, она строга и безнадежна, как черный квадрат Малевича, ибо понимает только командную строку. Конечно, это не означает, что для Linux нельзя создать программу с графическим интерфейсом (GUI), но в отличие от Windows, где все эти украшательства являются частью самой ОС, в Linux визуальность реализуется несколькими внешними надстройками. Поэтому при разработке приложения с GUI программисту волей-неволей придется ориентироваться на какую-либо библиотеку (иногда называемую интерфейсным пакетом), из которых самыми популярными являются Qt и GTK+ (на их базе построены KDE и Gnome, соответственно).
Второй момент. RAD под Windows внешне выглядят монолитами: компилятор, IDE, отладчик и все утилиты (контроля версий, групповой работы) интегрированы до гранитной неразделимости. Отчасти это связано с тем, что компиляторы не бесплатны и жестко привязаны к IDE, к тому же, не в пример Unix, эта ОС с самого начала была визуальной. Подключить компилятор от Microsoft к IDE от Borland не удастся, хоть тресни - такая возможность не предусмотрена в принципе. В Linux все иначе: компиляторы в основной своей массе бесплатны, но поддерживают только режим командной строки и тем паче знать не знают о визуальном проектировании интерфейса. Здесь им на помощь приходят IDE, которые выступают своеобразным front-end, встав между программистом и компилятором, так что вы можете легко прикрутить, например, к компилятору gcc практически любую IDE.
Code Crusader
Перехожу собственно к RAD и начну с бесплатного Code Crusader. Он ориентирован в первую очередь на профессионалов: вместо того чтобы дергать программиста предупреждениями и подсказками, среда предоставляет развитый инструментарий для редактирования кода, сопряжения практически со всеми известными компиляторами и отладчиками, средствами контроля версий, линковщиками и т. д. Естественно, Code Crusader генерирует makefile, при этом сам перекомпилирует модифицированные подчиненные библиотеки и содержит встроенный отладчик CodeMedic, понимающий основные компиляторы (так, при ошибке в исходных текстах он понимает, какая строка в каком файле не понравилась компилятору, и позволяет перейти к ее редактированию одним кликом. Поддерживает gcc, g++, gcj, kcc, IBM VisualAge C++ for AIX, Absoft FORTRAN и др.). RAD поддерживает шаблоны кода, включает браузер имен, дерево Java-классов, Code Mill - подключаемый модуль для работы специально с классами С++ и графический front-end утилиты diff. Не привязывает пользователя к какой-то конкретной библиотеке и позволяет работать с множеством языков, начиная от ассемблера, С и С++ и заканчивая Фортраном, Коболом, Java, Pascal и другими. Впрочем, все-таки Code Crusader заточен под С++, о чем говорят развитые средства отображения дерева классов (рис. 1) с возможностями печати, поиска в нем и доступа к заголовкам.
Редактор кода тоже неплох: есть средства глобального поиска и замены в файлах, запуска внешних сценариев обработки выделенного текста, преобразования форматов DOS/UNIX. Кроме того, редактор поддерживает неограниченную глубину отката, сохранение резервных копий файлов, а размеры файлов ограничены только объемами доступной памяти.
Code Forge
Тоже бесплатный, содержит браузер классов и их иерархии (понимает только С, С++, PHP), поддерживает множество инструментов контроля версий, начиная с таких монстров, как Microsoft SourceSafe и CVS, и заканчивая экзотикой типа BitKeeper и SCCS. Встроенный отладчик - самый что ни на есть обычный, тесно интегрирован в IDE (рис. 2) и предоставляет такие базовые возможности: просмотр значения переменных во время исполнения (сейчас этим никого не удивишь), просмотр и редактирование кода прямо из отладчика (Windows-программистам это кажется само собой разумеющимся, но в мире Linux стоит многого, поскольку редактор кода, компилятор и отладчик - три разные программы, как правило, осуществляющие вывод информации на консоль, то есть в обычное текстовое окно. Без тесной интеграции в IDE этих трех компонентов разработка превращается в сущий ад, в котором, впрочем, Linux-программисты чувствуют себя вполне комфортно), поддержка удаленной отладки. Из интересного отмечу редактор кода SMED (Integrated Smart Editor), одного взгляда на скриншот которого хватит, чтобы понять, что есть подсветка кода, всплывающие подсказки, свертки кода (Collapse/Expand Code. Исходные тексты современных программ, мягко говоря, не маленькие. Они насчитывают тысячи и десятки тысяч строк. Данная функция позволяет выделить какой-то участок кода, например текст функции, и "свернуть" его в одну строку: на экране останется только первая строка и многоточие, по щелчку на котором код развернется. Последовательно сворачивая текст, можно практически любую программу визуально уложить на пару листов, что бывает весьма удобно) и даже эмуляция Vi (рис. 3). Помимо обязательной программы, Code Forge содержит популярные утилиты:
JbuilderX
Продукт, при описании которого мне трудно удержаться от восторженных слов. Среда, выдержанная в духе Delphi/Builder, но при этом написанная на Java, полностью поддерживает Java2, JavaBeans, JFC/Swing, AWT, JDBC, CORBA и RMI и еще целый сонм технологий.
Начну с того, что приложения, создаваемые с помощью JBuilder, работают на любой платформе, поддерживающей Java: Windows, Linux, Unix, портативные устройства. Разумеется, JBuilder доступен на нескольких платформах.
IDE полностью настраивается. Например, если вы разрабатываете приложение для мобильной платформы (J2ME), J2EE вам не нужна, поэтому все соответствующие вкладки (tabs) исчезают. Настройки могут носить не только глобальный, но и персонифицированный характер, так что за одной машиной могут работать несколько человек. С другой стороны, удивило, что разработчики не сделали еще полшага: на одной машине не слишком удобно даже двум программистам, а вот если бы конфигурацию и настройки можно было легко перенести с одной рабочей станции на другую…
Компилятор, поставляемый в комплекте, целиком поддерживает JDK 1.2 (к JBuilder можно также подключать компиляторы и виртуальные машины Java третьих фирм). Встроенные средства отладки позволяют вылавливать ошибки в компонентах, апплетах и сервлетах и поддерживают средства удаленной отладки. Базы данных тоже не обойдены вниманием: Data Modeler, SQL Explorer, SQL Builder, JdataStore - все эти инструменты обеспечивают довольно комфортный и производительный интерфейс к СУБД.
Напоследок кратко опишу остальные вкусности (за подробностями сходите на www.borland.com):
Конечно, всякие побрякушки типа скинов IDE я бы отнес уже к явным излишествам, все-таки среда разработки - это вам не Winamp, а инструмент для серьезных дядечек, которым очень понравятся браузер классов, менеджер проектов, гипертекстовая навигация в исходном коде и Code Competition, коего так не достает в некоторых Linux RAD.
Несколько ложек дегтя. Во-первых, JBuilderX, в отличие от многих других сред разработки под Linux, заточен специально под Java, так что воспользоваться этой средой для Си-разработки вы не сможете. Во-вторых, опять же в отличие от конкурентов, JBuilderX стоит денег (JBuilder X Enterprise Edition - около 3500 долларов). В-третьих, вызывают определенные опасения разборки вокруг Java и несовместимость виртуальных машин от разных производителей (в первую очередь, от Microsoft и Sun). В-четвертых, JBuilderX порой тормозит, причем так, что и пары "твиксов" не хватит, чтобы пересидеть время от клика до отклика.
Kylix
Что мы все о Си с бубликами да о кофе, ведь есть и другие замечательные языки, например Pascal. Вот о нем-то, в обличьи Kylix, и пойдет речь. Надо сказать, что Kylix был одним из самых громких проектов, ведь Borland традиционно славилась своими RAD, и в далеком уже 2000 году Kylix вызвал какой-никакой, а фурор, в первую очередь, простотой адаптации Windows-приложений под новую платформу. Конечно, на самом деле все оказалось не так просто, как хотелось адептам Borland, и существует целый ряд моментов, затрудняющих (или делающих невозможным) перенос проектов на рельсы Linux. Но, в конце концов, Kylix можно (и должно) использовать для разработки проектов с нуля.
На сегодняшний день этот язык, достигший версии за номером 3, понимает не только Delphi, но и C/C++ и, конечно же, позволяет создавать не только обычные консольные, но и приложения баз данных, графические (GUI), веб-приложения и веб-сервисы. В полном объеме поддерживаются уже ставшие традиционными для платформы Wintel технологии WebSnap и DataSnap, вдобавок появилась BizSnap - платформа для разработки ebusiness-приложений (импорт и использование веб-служб с поддержкой XML, SOAP, WSDL). XML тоже не забыт: в Kylix есть инструменты для создания XML-источников данных и XSL-страниц.
Теперь о недостатках. Меня, разработчика, избалованного разнообразием компонентов в седьмом Delphi, чуть ли не шокировало малое число оных в Kylix. Вспомнив, что половина компонентов в Delphi - от сторонних компаний (например, весьма популярный отечественный пакет RxLib), я кинулся в Сеть, дабы подыскать им замену под Linux. Не тут-то было! Конечно, кое-где попадаются портированные версии, но это скорее исключение, чем правило. Второй момент: в Kylix порой невозможно писать модули для ядра Linux. Кроме того, по моим ощущениям, компилятор не оптимизирует вычисления с плавающей запятой, так что о сложных математических приложениях забудьте.
Резюме: Kylix не стал революцией, это всего лишь еще одно средство разработки, пусть и с замечательным редактором кода, удобной и мощной интеграцией с базами данных, но всего лишь одно из многих.
Если вы посмотрите на описанные выше среды разработки, точнее, на спектр поддерживаемых языков программирования. Может сложиться впечатление о превосходстве (по крайней мере, по этому параметру) Linux RAD над конкурентами из мира Windows. Но это впечатление обманчиво, ибо еще недавно из "тяжелых" языков под Linux были доступны только С/С++ да Java. Появился Kylix, а с ним и Delphi (это не опечатка, Object Pascal с недавних пор именуется "язык программирования Delphi").
Теперь зададимся вопросом о пятерке популярнейших RAD для "Окон": Microsoft Visual C, Delphi, C++ Builder и Visual Basic. Вот о "Бейсике" мы как-то забыли, а зря, ибо вопреки снобизму профессионалов именно VB занимал нишу офисного программирования в США и Западной Европе (В России и Европе Восточной VB уступал Delphi).
Как же обстоят дела с "Бейсиком" под Linux? До недавнего времени ответ был: никак или почти никак, теперь ситуация не столь плачевна.
Перебирая соответствующие каталоги, я насчитал, по меньшей мере, восемь продуктов, из которых два (HBasic и Gambas) вышли из подросткового возраста, и один из которых я препарировал.
HBasic
Начну с обескураживающих сведений. Во-первых, в отличие от других проектов, за которыми стоят или корпорации-монстры, или целые сообщества, HBasic (basic.sourceforge.net) двигает в массы один человек - немецкий программист Маркус Энгельс. Во-вторых, это не тот куцый Visual Basic, которым нас одарила Microsoft: HBasic содержит настоящий компилятор, а графика основана на Qt. В-третьих, этот RAD поддерживает не только "Бейсик" и Си, но и C#, а значит, становится возможным .NET-программирование (предварительно нужно установить библиотеку dotGNU), что заметно раздвигает рамки использования продукта.
Теперь познакомимся с этим зверем поближе. Встречает нас полнофункциональная IDE с визуальным конструктором интерфейса (рис. 5), редактором свойств, подсветкой синтаксиса, автозавершением и сворачиванием кода и встроенным менеджером проекта (рис. 6). Есть и ключевая для "всех бейсиков" возможность - почти мгновенное исполнение программы ввиду использования интерпретатора. Имеется менеджер баз данных с браузером/редактором таблиц. Телеграфной строкой перечислю некоторые другие возможности:
В целом, проект развивается хоть и медленно, но верно: есть надежда на скорый релиз первой версии, так как текущая версия довольно неустойчива. Оставшийся за скобками Gambas, тоже основанный на Qt, более стабилен, переведен на множество языков, но в отличие от HBasic для запуска приложения требует наличия на пользовательской машине Gambas-интерпретатора. К тому же производительность приложений хромает.
Подытожим наш обзор. Одним из главных недостатков Linux считают сравнительно малое число приложений для конечных пользователей, с чем нельзя не согласиться. Достаточно посмотреть, какой помпой сопровождается такое заурядное событие, как выход новой версии OpenOffice, а ведь не «вордом единым» жив человек. Особенно смущает почти полное отсутствие бизнес-софта и откровенно слабые возможности по созданию софта "на коленке". Учитывая, что графических библиотек для Linux существует больше одной (а это вносит дополнительный раздрай при разработке GUI-приложений), складывается впечатление, что детище Линуса Торвальдса так и останется нишевым продуктом, опираясь на серверный и некоторые вертикальные сегменты (веб-киоски, встраиваемые системы и пр.), тогда как "выходцы из Редмонда", подвергающиеся постоянным нападкам, будут и впредь удерживать "мэйнстрим" рынка прикладных ОС.
- Из журнала "Компьютерра"