Больше, чем просто хорошая среда разработки
Уже не один раз на страницах "Компьютерных вестей" я рассказывал о разных средах разработки для разных языков программирования, о коммерческих и свободных программных продуктах этого класса. Сейчас расскажу ещё об одной среде разработки для C/C++, имя которой - Ultimate++. Но, хочу предупредить сразу: эта среда разработки - нечто большее, чем простой редактор программного кода.
Эта IDE (Integrated Development Environment - интегрированная среда разработки) полностью бесплатная, или, как любят говорить линуксоиды, свободная. Найти её во Всемирной сети можно по адресу www.ultimatepp.org. Размер дистрибутива зависит от нескольких факторов. Во-первых, от платформы, для которой предназначена данная сборка, а во-вторых, от того, входит ли в дистрибутив компилятор. Однако вариации сравнительно невелики - несколько мегабайт. Дистрибутив для Win32, вместе с компилятором MinGW (Minimalist GNU for Windows - версия компилятора C++ от GNU), "весит" около 14 Мб.
Сначала маленькая тонкость, которая, впрочем, может быть интересной. Ultimate++ распространяется по лицензии BSD, которая является самой свободной из всех свободных лицензий, поскольку разрешает использование продукта для любых целей, в том числе и коммерческих.
По словам разработчиков этого программного продукта, Ultimate++ - это не просто интегрированная среда разработки, но и комплексное RAD-решение, включающее в себя библиотеки для создания графического пользовательского интерфейса, программирования приложений для работы с базами данных и многих других актуальных задач современной разработки.
Как средство кросс-платформенной RAD-разработки, Ultimate++ выглядит довольно солидно. Во многом это достигается благодаря инструментам создания пользовательского интерфейса. Они в Ultimate++, на мой взгляд, ничуть не хуже, чем аналогичные в других бесплатных средах разработки, а местами даже и лучше. "Формочки", как и во многих других RAD-средах, сохраняются в отдельных от самого кода файлах и используют собственную библиотеку визуальных компонентов. В отличие, например, от Code::Blocks, о которой я рассказывал на страницах газеты, Ultimate++ использует собственную библиотеку для проектирования пользовательского интерфейса (в Code::Blocks используется библиотека wxWidgets, о которой я уже писал). Собственно, библиотека виджетов Ultimate++ заслуживает того, чтобы поговорить о ней отдельно.
Эта библиотека выделяется в лучшую сторону среди многих подобных библиотек (особенно тех, что созданы энтузиастами-одиночками). Начинаются отличия уже с количества доступных разработчику элементов управления. Их много, и для удобства они разделены на три "пакета": стандартный (CtrlLib), RichEdit-контролы и SQLCtrl. Первый пакет включает в себя обязательные кнопочки, однострочное и многострочное поля ввода текста (а также чисел, даты и времени), списки разных мастей, полосы прокрутки, чекбоксы, меню, прогрессбары, древовидные списки, разделители, закладки, панель инструментов... В общем, что называется, джентльменский набор. В нём же присутствуют и более интересные элементы управления. Например, пять (!!!) различных контролов для выбора цвета. Ещё есть список файлов, компонент для отображения справки и компоненты для показа форматированного текста. Для редактирования этого текста же имеется отдельный пакет. В него входят непосредственно редактор (в двух вариантах: с панелью инструментов и без неё), линейка и специальный комбобокс для типографических настроек. Пакет SQLCtrl содержит в себе не элементы управления, а просто классы для работы с базами данных. Однако, тем не менее, их разработчики решили поставить наравне с визуальными контролами и выделили в отдельный пакет. Полный список со скриншотами всех элементов управления легко найти на сайте разработчиков. Ссылка на него такая: www.ultimatepp.org/src$CtrlLib$index$en-us.html.
Правда, как и все RAD-библиотеки, библиотека Ultimate ++ не лучшим образом влияет на размеры получаемых приложений. Но, конечно, до многих монстров (особенно коммерческих) ей далеко. Например, скомпилированный пример Puzzle с оптимизацией по размерам занимает 980 Кб (данные с сайта Ultimate++). Как отмечают разработчики, средний размер исполняемого файла полнофункционального приложения, при создании которого используется библиотека Ultimate++, будет 2-3 Мб. Сама среда разработки, созданная, естественно, при помощи этой же библиотеки, занимает 3,5 Мб (речь идёт об исполняемом файле - EXE). То есть, на самом деле не так уж и много. Но авторы всё равно защищаются справедливым замечанием о том, что производители предлагают не так уж много моделей жёстких дисков размером менее 20 Гб.
Судя по всему, библиотека использует стандартные платформенные API для отображения элементов управления. Но для разных платформ они реализованы на разном уровне. В этом плане самое лучшее положение у Windows. Для Linux и FreeBSD библиотека, по словам разработчиков, "стабильна и завершена". А вот MasOS и Windows CE повезло меньше. Для них библиотека виджетов только разрабатывается. В далёком будущем авторы планируют поддержку Solaris.
Однако, естественно, библиотека для разработки пользовательского интерфейса - не единственная часть всего комплекса программных средств, о котором я сейчас вам рассказываю. Поэтому, полагаю, настала пора поговорить о самой среде разработки.
Эта часть проекта Ultimate++ тоже выглядит весьма достойно. Редактор кода обычный, с подсветкой синтаксиса и разными полезными подсказками, без которых уже сложно представить жизнь современного программиста. Подсвечиваются открывающие и закрывающие скобки, чтобы в них не запутаться, причём как круглые, так и фигурные. Сбоку, как и во всех других средах разработки, находится дерево с файлами проекта, так что переключаться между ними достаточно удобно. Редактирование кода и конструирование интерфейса происходит в одном окне, и, поскольку программа поддерживает в нём вкладки, то это по ощущениям не сильно отличается от работы в тех же Delphi или Visual Studio. Для навигации по коду присутствуют дополнительные средства. Их можно найти в меню "Assist" под пунктами "Navigate in the file" и "Navigate". Первая команда покажет окно, которое легко позволит перемещаться среди функций и методов редактируемого в данный момент файла, а второе даст такие же возможности, но уже для всех файлов проекта и для загруженных в данный момент в среду пакетов. Что приятно, так это то, что в окне навигации методы можно отфильтровать по начальной букве. Правда, если бы это окно было реализовано как панель в главном окне, доступ к нему был бы быстрее. Хотя, вероятно, это загромождало бы главное окно, что тоже отнюдь не хорошо. В принципе, за счёт горячих клавиш доступ к окнам навигации тоже довольно скор.
Естественно, среда разработки Ultimate++ имеет встроенные возможности отладки. Отладка - настолько важный этап создания любого программного продукта, что, казалось бы, глупо даже вспоминать о её присутствии в IDE. Но, тем не менее, достаточно большое количество средств разработки не имеют встроенных в среду отладчиков, и это на самом деле очень плохо. Так что просто замечательно, что Ultimate++ не из этой песочницы. В этой среде присутствуют стандартные возможности отладки: пошаговое выполнение, установка точек останова, запуск при этом приложения с определёнными параметрами.
Среда разработки, по словам её создателей, прекрасно работает с двумя разными компиляторами C++: MinGW и Microsoft Visual C++ Compiler. Но если MinGW можно скачать прямо в комплекте поставки Ultimate++, то с компилятором от "Мелкомягких" придётся разбираться самостоятельно. Впрочем, настроить среду таким образом, чтобы она нашла общий язык с этим компилятором, - дело, по словам разработчиков Ultimate++, одной-двух минут. Поддерживаются седьмая и восьмая версии Visual C++ Compiler. Но это, конечно, только для тех, кто программирует под Windows. Для Linux и FreeBSD единственный и безальтернативный компилятор - GCC. Впрочем, не думаю, что использовать при программировании под эти платформы какой-то другой компилятор C++ - удачная идея.
Среда разработки использует технологию BLITZ для ускорения сборки проектов. По словам создателей Ultimate++, это ускоряет сборку проектов примерно в четыре раза, по сравнению с обычными методами организации этого процесса. Ещё, что касается сборки - среда умеет генерировать make-файлы, так что проекты, созданные с помощью Ultimate++, можно смело включать в процесс автоматической сборки продукта. Среди других инструментов, имеющихся в арсенале Ultimate++, в первую очередь, хочется отметить Topic++ - средство создания справочных систем для документирования как самого кода, так и разрабатываемых приложений. В этом инструменте можно на практике проверить возможности контролов для работы с форматированным текстом из стандартной библиотеки Ultimate++. Возможности, надо сразу сказать, не самые плохие.
Отдельного упоминания заслуживает работа с базами данных в стиле Ultimate++. Чтобы понять, о чём речь, достаточно посмотреть на следующую строку программного кода.
Select(NAME, SURNAME).From(PERSON).Where(PERSONID == personid);
Для работы с запросами и данными библиотека Ultimate++ предоставляет специальные классы и типы данных, которые дают возможность работать с SQL-запросами так, как показано выше. Вот ещё один пример работы с запросами к базе данных.
Sql sql; sql * exp; while(sql.Fetch()) { Sql sqlu; sqlu * Update(PERSON)(SALARY, SALARY + 100).Where(PERSONID == sql[0])}
Выполнение запроса осуществляется оператором *, после чего уже можно работать с его результатами.
Конечно, об Ultimate++ можно говорить ещё долго. Но, думаю, гораздо интереснее будет увидеть его собственными глазами. Потому что среда разработки и всё к ней прилагающееся действительно сделаны качественно и заслуживают того, чтобы ими пользовались. Не так уж много средств кросс-платформенной RAD-разработки, да ещё и таких, которые одинаково хорошо позволяли бы проектировать пользовательский интерфейс, работать с базами данных и создавали бы родной для платформы код, способный обеспечить быстрое выполнение приложения. Поэтому Ultimate++ (а ведь этот программный продукт ещё и бесплатен!) занимает совершенно особое место среди всевозможных инструментов для разработки приложений на C++.
Вадим СТАНКЕВИЧ
Комментарии
хочется какого-то постоянства в работе, а не сидеть на иголках и гадать что Майкрософту опять взбредет в голову в следующие 5 лет.