После статьи об XBasic, которая была опубликована в "Компьютерных вестях", поступил ряд предложений в письменном виде от читателей. Была даже статья от Андрея Колесникова, который "не вполне согласен с Вадимом Станкевичем, причислившим Паскаль и Бейсик к разряду языков-неудачников". По этому поводу, решив, что Basic - тема вполне благодарная, я взялся за написание данной статьи.
Сложно делить языки программирования, особенно известные и распространённые, на такие категории, как "удачники" и "неудачники". Если и есть языки-неудачники, то это никак не Pascal или Basic. Языком-неудачником можно было бы назвать Алгол, ставший прообразом Паскаля, но вскоре после этого постепенно практически умерший. Можно было бы назвать не самым удачным проектом PL/1, который в своё время IBM мечтала сделать универсальным высокоуровневым языком. Как показала практика, это оказалось слишком сложно - всё-таки к моменту создания PL/1 уже сформировались определённые традиции, которые этот язык поломать не смог. Pascal и Basic - далеко не самые выдающиеся неудачники среди языков программирования, просто (разрешите повториться) это учебные языки, и редкие "серьёзные" программисты воспринимают их всерьёз.
Впрочем, попытки сделать эти языки основой для коммерческих проектов всегда были и будут. Впрочем, слово "попытки" здесь не совсем удачно выглядит. Например, Visual Basic и Delphi язык не поворачивается (а рука - не поднимается) назвать неудачными проектами. Однако Visual Basic - далеко не единственный коммерческий продукт, который предлагает использовать Basic для быстрой разработки приложений (rapid application development - RAD). Как вы уже догадались, продукт-конурент для VB, о котором я сейчас расскажу, называется REALBasic, и найти его во Всемирной паутине можно по адресу realbasic.com.
В целом, RealBasic, будь он некоммерческим, можно было бы сравнивать с Lazarus для Free Pascal. Как Lazarus старается быть кросс-платформенным аналогом Delphi, так и REALBasic старается быть конкурентом Visual Basic'а, только, опять-таки, для различных платформ. И платформ пока в списке поддерживаемых три: Windows, Linux и MacOS. При этом, в отличие от Visual Basic'а, REALBasic компилирует проекты целиком в родной исполняемый код платформы, что также роднит его с Lazarus (да и с Delphi тоже, в общем-то).
REALBasic обладает всеми необходимыми атрибутами RAD-среды. В среде имеется отличный визуальный редактор графического пользовательского интерфейса и собственная компонентная библиотека, насчитывающая более сорока визуальных компонентов общего назначения. Среди компонентов есть и очень интересные, например, элемент управления для просмотра HTML-файлов. При этом при редактировании форм в REALBasic поддерживается такая замечательная вещь, как линии для выравнивания компонентов (alignment guides), появившиеся в REALBasic'е едва ли не раньше, чем в Visual Studio. Правда, в этой ложке мёда есть бочка дёгтя (я не оговорился, это именно так): свои собственные компоненты для REALBasic в нём самом писать нельзя. Этим среда разработки отличается от Visual Basic и Delphi не в лучшую сторону, хотя для ограниченного круга проектов это не так уж и существенно. В справке к программе, правда, упоминается возможность писать плагины к REALBasic, но делать это можно только на C/C++, и, кроме того, не указывается, для чего эти плагины могут быть применены (для более подробной информации предлагается купить фирменный диск с документацией и дополнениями к среде). Как мне кажется, это именно тот самый фактор, который и не позволяет REALBasic'у стать таким же популярным, как VB или Delphi.
Естественно, с помощью одной только мыши много не напрограммируешь1. Поэтому поговорим о той части программы, которая отвечает за работу с клавиатурой, и с которой, собственно, и придётся программисту, выбравшему эту среду разработки, иметь дело больше всего. Я говорю, естественно, о редакторе исходного кода программы. Редактор кода в REALBasic неплохой, но ничего выдающегося в нём не замечено. Подсветка синтаксиса, подсказки при наборе кода и автоматическое завершение набираемых идентификаторов. Правда, вместо цельного текста программы, как это принято в других средах разработки, REALBasic выводит в редакторе текст отдельной функции (или метода), внутри которого программист и работает. Переключаться между разными подпрограммами можно с помощью их дерева, расположенного слева от редактора кода. При этом структурирование в дереве выполнено весьма удобно: отдельно обработчики событий для компонентов, находящихся на форме, и отдельно для методов некомпонентных классов. И ещё отдельной группой вынесены заметки, которые, хотя к коду программы и не относятся, но всё же зачастую в нём, этом коде, сами собой возникают.
Естественно, в среде есть интегрированный отладчик, без которого сложно представить себе любую современную интегрированную среду разработки. Отладчик вполне обычный: трассировка, точки останова, просмотр значений переменных... Правда, в отличие от большинства бесплатных сред разработки, поддерживается удалённая отладка, причём для любой из трёх платформ.
Поддерживается кросс-компиляция, то есть компиляция версии для одной платформы из-под другой. Открыв любой кросс-платформенный пример из дистрибутива REALBasic, вы можете сами убедиться в том, что кросс-компиляция работает. Для этого в меню "Project" выберите пункт "Build Settings" и выделите птичками те системы, для которых вы хотели бы компилировать проект. В результате в папке, где находился проект, вы обнаружите исполняемые файлы для выбранных операционных систем. Это действительно удобно, и это большой плюс REALBasic, особенно на фоне того, что, как ни странно, большая часть сред разработки, доступных для разных платформ, кросс-компиляцию не поддерживает.
Большая часть RAD-сред обеспечивает удобство разработки приложений, работающих с базами данных. REALBasic тоже, к счастью, не исключение. В нём имеется встроенная поддержка СУБД Real SQL Server, которую производит та же компания, что и сам REALBasic (Real Software). Скачать дистрибутив Real SQL Server можно на том же сайте, что и REALBasic. Впрочем, по идее, среда разработки может работать и с другими БД, но для этого нужны упоминавшиеся выше плагины. В целом же, REALBasic в плане работы с данными выглядит слабее, чем Visual Basic и, особенно, Delphi. Правда, в среде имеется собственный редактор баз формата Real SQL, который позволяет создавать новые базы или редактировать уже имеющиеся. Нужно только не забывать, что для работы с базами в любом случае нужно будет скачивать и устанавливать Real SQL Server.
Real SQL Server - СУБД, если честно, достаточно своеобразная. Начнём с того, что создана она разработчиками из Real Software на основе движка SQLite, о котором я рассказывал в №27 за 2006 год. Это, конечно, делает Real SQL действительно быстрой СУБД и вполне надёжной, но, конечно, рядом с большинством коммерческих движков этот и рядом не стоял. Правда, в отличие от SQLite, его коммерческий потомок поддерживает распределённую работу с базами данных (в конце концов, на то он и сервер). Умеет работать на тех же трёх ОС, что и REALBasic, и, в отличие от большинства других серверов, не нуждается практически ни в какой настройке, так что в качестве встраиваемого в приложения движка подходит ничуть не хуже своего прародителя. Даже, наверное, лучше благодаря своим сетевым возможностям. Однако не стоит забывать, что Real SQL Server, в отличие от SQLite, продукт коммерческий, поэтому его внедрение в приложение будет гораздо более затратным. Правда, для связки с REALBasic'ом разработчики предлагают скидки и бесплатную developer-версию сервера, с помощью которой можно разрабатывать приложения, работающие с ним. Эта версия имеет ограничение по времени непрерывной работы (её нужно перезапускать каждые два часа), но в остальном это точно такой же Real SQL Server.
Давайте теперь поговорим немного на некоторые темы, которые авторы REALBasic'а освещают на своём сайте. Первая, и самая интересная, - это миграция с Visual Basic на REALBasic и перенос написанных для Windows приложений под Linux и MacOS. На сайте можно найти обширный материал на эту тему (realbasic.com/support/whitepapers/portingvisualbasic), и, в принципе, если почитать его, то всё кажется простым и понятным. Конечно, реальный процесс переноса сопряжён с большим количеством разнообразных проблем, но путеводным лучом эта статья служить может. Помимо этих вопросов, на сайте авторы сравнивают свой продукт с двумя другими разработками - первая, это, естественно, Visual Basic, а вторая... а вторая - Java. Среди достоинств, по сравнению с Visual Basic, упоминаются те, которые я уже расписывал в начале заметки - во-первых, кросс-платформенность, во-вторых, отсутствие внешних библиотек времени выполнения (правда, авторы скромно умалчивают, что по размерам создаваемые REALBasic'ом программы превосходят любые программы, написанные на VB вместе с runtime DLL). Кого из светлых голов, работающих в REALSoftware, посетила мысль сравнить своё детище с Java, история умалчивает. Известны только результаты этого довольно-таки претенциозного сравнения (realbasic.com/users/java). Получается, что приложения, написанные на REALBasic, выигрывают на настольных системах за счёт более тесной интеграции с платформой, на которой они работают. Кроме того, они работают быстрее за счёт отсутствия промежуточного байт-кода, который, как известно, применяется в Java. К тому же, разработчики отмечают, что в языковом плане REALBasic за счёт поддержки объектно-ориентированного программирования довольно близок к Java, так что разработчикам будет просто перейти с одного языка на другой. На мой взгляд, учитывая специфику языка Java, это заявление звучит очень оптимистично.
Что ж, пора, пожалуй, сворачивать рассказ о REALBasic'е. Возвращаясь к теме "языков-неудачников", хочу отметить, что удачной или неудачной лучше считать конкретную реализацию языка программирования. REALBasic - реализация явно не худшая, хотя, конечно, имеющая и свои минусы. Но для разработчиков, использовавших VB 6.0 и не желающих в силу каких-то причин переходить на VB.NET, REALBasic будет прекрасным решением, несмотря на некоторую ограниченность в работе с компонентами. Поэтому, глядя на REALBasic, верится, что у языка Basic есть будущее.
Вадим СТАНКЕВИЧ
1 Не спешите писать мне гневные
послания, я знаю о существовании
экранной клавиатуры, но заниматься
с её помощью программированием -
это мазохизм, причём уже не в ранней
стадии.
Горячие темы