Компилятор
Среда разработчика (IDE)
Редактор
Менеджер проектов
Отладчик
Компоненты
Все для Internet и intranet
Средства создания СУБД и распределенных систем
Компоненты COM и ATL
Конвертеры и средства импорта

Я никогда ничего не имел против языка Паскаль. Даже более того, всегда отдавал должное его скорости и строгости. Но почему-то всегда писал программы на Cи и Cи++. Каково же было мое негодование, когда я узнал, что самый первый RAD-продукт - пакет Delphi, выпущенный компанией Borland, базируется на Паскале. Неясно, с чего это вдруг корпорация Borland пренебрегла индустриальным стандартом в пользу "студенческого" языка. Разумеется, со временем стало понятно, что язык процедурного программирования Паскаль, отданный полностью на откуп Borland, уже не тот, что раньше, и что показатель его мощи вплотную подобрался к Cи++. Да и скорость компиляции в Delphi, что ни говори, на порядок быстрее, чем в любом компиляторе Cи++. Однако как-то неуютно делается при мысли, что компания Borland, выпускавшая прекрасные компиляторы Cи++, предательски обошлась с его поклонниками. Видимо, молитвы обиженной Гильдии Поклонников Фигурных Скобок были услышаны и таки принесли свои плоды - в продаже появился замечательный пакет Borland C++ Builder 1.0. Казалось бы, все довольны, но Borland возьми да и выпусти очередную версию Delphi, в которой полным-полно разных полезных диковинок.

И все-таки компания Borland осталась верна своим почитателям - третья версия пакета C++ Builder впитала не только все хорошее из Delphi 3, но и некоторые достижения мира Cи++. Однако не станем забегать вперед и начнем рассказ о новых возможностях, заложенных в Borland C++ Builder 3.

Компилятор

Именно качество компилятора во многом решает вопрос о покупке программного пакета для разработчиков. Продукт может содержать море различных крайне необходимых утилит, однако судьба его будет предрешена, если обнаружатся серьезные ошибки компилятора. Хотя в предыдущей версии Borland C++ Builder 1.0 встречались мелкие огрехи генерации кода, все они были незначительны и легко устранялись. Тем не менее создатели C++ Builder 3 убрали даже эти незначительные дефекты. В результате получаемый машинный код весьма стабилен даже в бета-версии продукта. Окончательный вариант, видимо, еще точнее.

Программисты, предпочитающие продукты Borland, знают, что эта компания отличается тем, что свято соблюдает все указания комитета ANSI, касающиеся тонкостей и премудростей стандарта языка Cи++. И всегда можно быть уверенным, что решения ANSI будут учтены в ближайшей после заседания комитета версии компилятора, даже если большинство программистов не чувствует в этом явной необходимости. Пакет C++ Builder 3 также равняется на последние решения комитета ANSI и обновленный стандарт языка Cи++. Из чисто языковых поправок, вошедших в C++ Builder 3, можно назвать расширенные функции работы с многоязыковыми кодировками символов Unicode и MultiByte. Помимо этого, к списку директив препроцессора #pragma добавились новые директивы option push и option pop. Управляя ими, т. е. изменяя опции компилятора и возвращая настройки в исходное состояние, программист имеет дополнительный уровень контроля за генерацией кода.

Для облегчения работы программистов в новый пакет включена библиотека STL компании Rogue Wave. Версия STL 2.0 - это еще один шаг в сторону "шаблонизации" создаваемых исходных текстов. Библиотека STL 2.0 предлагает новые классы работы с потоками, которые, похоже, заменят в ближайшем будущем старые потоковые классы Cи++. Ко всему этому богатству прилагаются новейшие средства по локализации и работе с различными кодировками.

В качестве награды приверженцы C++ Builder получают бесплатный "пирожок" в виде компилятора Delphi, что позволит компилировать программы, разработанные в этой среде, импортировать формы и модули Delphi, подключая их к проектам C++ Builder. Кстати говоря, Turbo Assembler также присутствует среди компиляторов. Теперь, если он потребуется при доведении программы "до ума", его не придется докупать. К тому же этот вариант TASM "знаком" с инструкциями MMX - пользуйтесь на здоровье!

Среда разработчика (IDE)

Со средой разработчика C++ Builder мы уже знакомили вас (см. "Мир ПК", #10,11,12/97). Заметим, что она, как родная сестра, похожа на среду Delphi 3. Но все по порядку.

Редактор

Редактор исходных текстов C++ Builder 3 оснащен полем на левом краю окна для установки точек прерывания. Как и в других продуктах Borland, ключевые слова и прочие элементы исходного текста выделяются цветом. К этой замечательной опции программисты настолько привыкли, что без нее вообще не мыслят свою работу. Однако и для них в новинку будет технология шаблонов Code Insight. Суть этого нововведения состоит в том, что в запаснике у редактора имеются шаблоны всех часто используемых элементов языка. В любой момент за пару секунд можно вставить пустой цикл for или, к примеру, описание нового класса.

Что бы ни говорили противники автоматизации, это все-таки весьма удобно. Если вы не обнаружили какого-то фрагмента среди шаблонов - создайте его! В этом редакторе можно сделать все.

Менеджер проектов

Вряд ли удивишь программиста возможностью одновременной компиляции нескольких проектов. Это "чудо" было известно уже с выходом Borland C++ 4.0, в котором дозволялось вести сложные проекты из нескольких узлов. А вот в RAD-продуктах этого почему-то не было. Пакет C++ Builder 3 оснащен новым менеджером проектов, для которого одновременная сборка нескольких приложений - нормальное явление. Сложный проект в нем называется группой проектов и может сочетать самые разнообразные узлы. Так, в мире Windows создание приложения и нескольких динамически загружаемых библиотек DLL - обычное дело. И здесь могут оказаться весьма кстати многоузловые группы проектов. Компиляцию и сборку проектов можно вести либо по одному выбранному узлу из группы проектов, либо обрабатывать всю группу целиком. Для этого в меню Project появились две дополнительные команды Compile all projects и Build all projects. Окно самого менеджера проектов осталось довольно простым и интуитивно понятным, но в то же время мощным и удобным.

Кнопка New менеджера проектов привязана к мастерам создания разнообразных приложений. А кнопкой Activate активизируется проект и его подгрузка. Добавим, что с помощью контекстного меню менеджера проектов пользователь может добавлять любые файлы к выбранному узлу проекта и даже разделять один и тот же файл между разными узлами одной группы проектов.

Важным дополнением к менеджеру проектов стал менеджер версий, формирующий специальный ресурс VERSON, контролирующий правильность замены старых версий продукта новыми. Программисты, использующие Delphi 3, уже знакомы с такой возможностью. Однако для пользователей C++ Builder это в новинку. Удобная диалоговая панель настройки позволяет интерактивно, без ручного редактирования формировать номер версии и некоторые другие специальные флажки.

И наконец, нельзя не сказать о расширенных опциях компиляции, предназначенных для "тонкой" доводки генерируемого кода.

Решая конкретную задачу, программист может установить, каким стандартом языка должен руководствоваться компилятор во время разборки исходных текстов:

  • стандартным Cи++ с расширениями компании Borland;
  • "чистым" стандартным Cи++, основанным на решениях комитета ANSI;
  • Cи операционной системы Unix;
  • изначальным стандартом языка Cи Кернигана и Ричи.

Отладчик

Отладчик - весьма значительная часть любого продукта для разработчика. Нет хорошего отладчика - не жди хорошего исходного текста. И хотя любую среду разработчика производства Borland всегда отличала "гуманность" по отношению к пользователям, отладчик C++ Builder 3 - это новый шаг навстречу повышенным требованиям современного мира. Речь идет не о таких полезных мелочах, как всплывающие окна ToolTip с текущими значениями переменных, ставших уже стандартом. А вот окно для показа загруженных в адресное пространство модулей - эта новинка весьма кстати, особенно когда потребуется добавить другие модули, благо такая опция также предусмотрена. Из окна со списком модулей можно непосредственно перейти к их исходному тексту двойным щелчком мыши.

Существующее с незапамятных времен окно просмотра стека вызовов в C++ Builder 3 наконец-то может оставаться открытым на протяжении всей отладки программы. Более того, это окно можно перевести в режим "всегда наверху".

Теперь коснемся генерируемых приложениями исключительных ситуаций. Их пассивный перехват отладчиком не всегда был хорош и часто связывал руки программисту. Новые дополнительные ключи управления этим процессом изменили положение. С помощью настроек среды определяется список, содержащий исключительные ситуации, перехват которых поручается самой среде, а также исключительные ситуации, которые отладчик C++ Builder игнорирует.

Попутно можно легко настроить протоколирование процесса отладки: C++ Builder занесет в протокол записи о загрузке модулей, об ошибках времени исполнения или просто сообщения Windows. "Фанаты" Borland Turbo Debugger могут использовать привычные клавишные комбинации.

Отладка динамически загружаемых библиотек тоже проста: достаточно установить в их исходных текстах нужные точки останова (точно так же, как при отладке обычного кода). Сами же точки останова функционально расширены и могут срабатывать при изменении значений переменных, когда программа проходит заданные пользователем участки памяти.

Компоненты

Прежде чем рассказать о компонентах палитры Borland C++ Builder 3, отметим, что разработчики продукта перенесли из Delphi возможность создания пакетов. Пакеты - это особый вид динамических библиотек - файлов с расширением .BPL, в которые можно упаковать фрагменты исходного текста и компоненты. Чем удобны пакеты? В основном компактностью, возможностью повторного использования инкапсулированного кода и умением разбить код на независимые части, что при грамотном применении сулит выигрыш в скорости и загрузке компьютера. Достаточно сказать, что сама библиотека VCL и отдельные части среды C++ Builder - это пакеты.

Палитра компонентов третьей версии продукта содержит более 160 компонентов, что в полтора раза больше по сравнению с первой версией C++ Builder. Среди типовых компонентов такие популярные элементы управления, как разделительная полоса (Splitter), скользящие полосы командных кнопок (CoolBar), отмечаемые списки (CheckListBox), а также другие компоненты, характерные для программных продуктов, следующих стилю пользовательского интерфейса Microsoft.

Абсолютно новыми для программистов, как по названиям, так и по функциям станут компоненты из набора Decision Cube. Само слово Decision указывает на область применения этого набора - визуализация данных для успешного принятия решений. Во многом концепция Decision Cube похожа на принятую в C++ Builder и Delphi схему выборки и передачи данных. Здесь все те же источники данных (DecisionSource) и компонент для SQL-запросов (DecisionQuery) плюс несколько визуальных компонентов для отображения данных в графическом виде. Объемное представление данных дает возможность взглянуть на уже имеющуюся бизнес-информацию под другим углом, наглядно демонстрируя отношения различных выборок.

Дабы программисты не завидовали пользователям Delphi 3, авторы C++ Builder 3 подумали и о создании отчетов. Теперь в их руках QuickReports - расширенный набор компонентов для генерации отчетов. Как показала практика, многие разработчики СУБД остро нуждаются в средствах создания отчетов "на лету", и набор QuickReports пакета C++ Builder 3 появился как нельзя кстати. Ранее адепты Cи++ нехватку этих средств компенсировали изготовлением форм и модулей отчетов в Delphi и затем переносили их в среду Borland C++ Builder (самостоятельные продукты типа ReportSmith и Cristal Reports в расчет не берутся). Средства QuickReports предназначаются для визуального компонентно-ориентированного формирования полноценных отчетов с простыми и групповыми колонтитулами, множественными источниками данных, суммарными и калькулируемыми полями. Сформированный отчет можно предварительно посмотреть перед печатью на принтере.

Все для Internet и intranet

Огромный набор компонентов - 25 штук! - предназначен для создания приложений Internet и intranet. Данные средства перебрасывают биты и байты из пункта А в пункт Б (а может, и В) через модемы, сетевые адаптеры и разноцветные провода разного диаметра.

Поддерживаются TCP/IP, UDP, HTTP, FTP, NNTP, POP, SMTP, Finger, URL, MsgClient и MsgServer, MIME и прочие порождения мира телекоммуникаций. Даже есть серверные и клиентские сокеты, что необходимо для организации передачи информации протоколами нижнего уровня.

Предусмотрены компоненты для решения такой сложной задачи, как динамическая публикация данных с автоматической генерацией HTML-страниц. Они размещаются в специальном модуле WebModule и называются продюсерами: PageProducer, QueryTableProducer и DataSetTableProducer. Управляет ими компонент WebDispatcher, принимающий запросы от браузеров пользователей и определяющий дальнейшую реакцию сервера. Новое Web-приложение можно создать, обратившись к мастеру New Web Server Application.

Средства создания СУБД и распределенных систем

С точки зрения программиста, Borland осталась верна своей модели обработки данных. Однако произошло существенное смещение интереса в сторону распределенных вычислений и многоуровневых приложений, а конкретнее - появилась технология MIDAS (см. "Мир ПК", #2/98, с. 54). Правда, она доступна лишь тем, кто приобретает C++ Builder Client/Server Suite, ведь распределенные системы - удовольствие пока что дорогое. Зато большое увеличение производительности, хорошую защиту данных и равномерную загрузку системы это средство гарантирует.

Теперь о драйверах, которые будут в распоряжении программиста, создающего СУБД. Во-первых, это драйверы для широко распространенных настольных СУБД: Paradox, dBASE, Access и FoxPro. В версии Professional добавляется драйвер SQL Link для сервера баз данных IB DataBase. При покупке системы C++ Builder Client/Server Suite драйверы SQL Links поставляются для таких корпоративных серверов баз данных, как Oracle, Sybase, Informix, MS SQL Server и IBM DB2. Альтернативным вариантом связи с таблицами могут служить драйверы ODBC и Microsoft OLE DB, для которых имеются специальные классы.

Удобство работы в комплекте C++ Builder 3 обеспечивают несколько полезных утилит, предназначенных для визуальной генерации запросов на языке SQL (SQL Builder) при создании и конфигурировании таблиц баз данных (SQL Explorer), а также утилита трассировки выполнения запросов (SQL Monitor).

Компоненты COM и ATL

Поскольку при создании COM-объектов и компонентов ActiveX большинством программистов в качестве негласного стандарта признана библиотека ATL фирмы Microsoft, добавление генерации ATL-совместимого кода в пакет разработчика С++ Builder 3 можно считать стратегическим решением. Построение ATL-компонентов и объектов в среде C++ Builder просто, даже проще, чем в Visual C++ 5.0 корпорации Microsoft. Если в последнем принята полуавтоматическая генерация исходных текстов, все-таки требующая ручного написания текстов на языке IDL, то в C++ Builder 3 этот процесс автоматизирован полностью, хотя и допускает, по желанию программиста, ручные исправления. Все это обеспечивает специальная утилита Type Library Editor.

С помощью этого потрясающего инструмента ничего не стоит смастерить любой COM-объект. Щелкая мышью по кнопкам, вы задаете элементы класса или модуля, добавляете и удаляете интерфейсы, перечисления и объединения. Из окна Type Library Editor можно даже зарегистрировать готовый объект. Результатом работы этого редактора становится исходный текст на языке IDL, принятом для описания каркасов COM.

Создание компонентов ActiveX вообще не вызывает сложностей. Вы отвечаете только за задание подходящего компонента-предка. Единственное ограничение - наследование должно вестись от компонентов VCL (правда, оно действует только в мастере создания компонентов). При ручном описании компонентов с помощью Type Library Editor это ограничение снимается - и твори что хочешь. Однако лучше использовать в качестве предка привычную библиотеку VCL со всеми ее классами, свойствами и методами. Это просто и удобно. Кроме того, вы можете импортировать данные из уже имеющихся компонентов или их библиотек. По этим данным генерируется исходный текст для класса-оболочки, делающего управление и вызов методов подключаемого компонента тривиальным.

У программистов C++ Builder 3, как и у пользователей Delphi, с выходом третьей версии появилась возможность превратить любую форму в компонент ActiveX. Споры вокруг полезности такого подхода продолжаются, однако мне возможность создания активных форм понравилась. Тем более что с помощью другого мастера - Web deploy - готовые компоненты очень просто разместить на сервере Web.

Конвертеры и средства импорта

Без прошлого нет будущего. Эта известная фраза применима не только для социума, но и для программирования. Накопленный код непременно должен быть использован (если, конечно, он не устарел морально). С этой точки зрения пользователям Borland грех жаловаться. В C++ Builder 3 можно импортировать приложения, написанные с использованием библиотек OWL, OFC, MFC и с применением языка программирования Object Pascal. Файлы ресурсов .RC прекрасно воспринимаются средой и могут быть открыты в редакторе ресурсов, причем все диалоговые панели будут конвертированы в формы C++ Builder.

Возможно, вам доведется воспользоваться парочкой утилит-конвертеров idetobpr и coff2omt. Первая из них умело преобразует проекты старого формата .IDE в новый .BPR, тогда как вторая служит для конвертирования библиотек импорта формата COFF в OMF. К сожалению, на момент написания статьи бета-версия coff2omt работала весьма нестабильно.

И все же, подводя черту, следует отметить, что Borland C++ Builder 3 можно считать лидером среди средств быстрой разработки. Думаю, программисты оценят его по достоинству.


Borland C++ Builder 3
Системные требования: процессор Intel 486DX-100 или выше; Windows 95 и Windows NT (ServicePack 2); 24 Мбайт ОЗУ (рекомендуется 32 Мбайт); минимум 175 Мбайт свободного дискового пространства; дисковод CD-ROM.

Borland Россия, тел.: (095) 238-36-11

1009