продукт - недавно вышедшая новая версия VisualAge C++ for Windows 3.5 компании IBM. В этот сравнительный обзор не вошел мощный инструмент корпорации PowerSoft Watcom C/C++ 10.5, из-за того что спектр поддерживаемых им платформ не ограничивается ОС Windows. Понимая, что это весьма важное качество не вписывается в рамки и критерии нашего анализа, мы решили просто включить в этот материал отдельную статью, посвященную Watcom C/C++. Каждая из сравниваемых IDE поддерживает множество целевых платформ (Win16, Win32s, Win32) и объединяет в себе мощный интегрированный редактор, менеджер проектов, компилятор, загрузчик, отладчик, а также инструментарий для развертывания приложений.
Идея программного макета
Пожалуй, основное качество, присущее всем рассмотренным IDE - это средства автоматизации, которые существенно сокращают объем ручного кодирования, создавая тщательно оттестированную заготовку - программный макет. Макет содержит множество позиций, в которые программист вставляет содержательный код, определяющий функциональность прикладной системы. По-видимому, именно эти средства стимулировали рост популярности C++ как языка прикладных разработок.
Те, кому приходилось пользоваться такими библиотеками, как Microsoft Foundation Classes (MFC) или Object Windows Library (OWL) от Borland, знают, сколь обширны и разнообразны их возможности. То, что из двух упомянутых библиотек именно MFC приобрела статус стандарта объясняется главным образом лишь более агрессивной политикой Microsoft в области лицензирования.
На первый взгляд макетное программирование может показаться слишком ограничительным и чересчур сложным. Такое впечатление, что в рамках подобной технологии нельзя создать что-то неординарное. Преодолев это предубеждение, сталкиваешься с новой проблемой - макет выглядит совершенно необозримым, а освоение техники работы с ним кажется непосильной задачей. При этом, нельзя, например, построить по макету только часть приложения - или все, или ничего. Если вы выбрали макет, то придется тщательно изучить назначение и тонкости использования каждого "проема", предусмотренного в нем для вставки программного кода. Несмотря на относительную сложность макетной технологии, она значительно упрощает создание серьезных приложений, скрывая многие нюансы внутренней "кухни" Windows. К тому же один раз изучив структуру макета вы будете вновь и вновь применять это знание при создании последующих приложений.
Подобные средства стали появляться в инструментальных системах для C++ всего несколько лет назад. Существовали, правда, продукты третьих фирм, которые позволяли автоматически генерировать, например, коммуникационный код или создавать элементы пользовательского интерфейса; есть они и сейчас, но фирмам, занимающимся их производством, приходится все труднее, поскольку в современных IDE остается все меньше технологических пробелов.
Все в одном наборе
Современные IDE постепенно обрастают разного рода дополнительными средствами, среди них редакторы ресурсов, поддержка OLE, библиотеки контейнерных классов. И это не только программный строительный материал, но и инструментарий: изощренные отладчики, системы контроля версий и т. п.
Наличие столь широкого спектра средств в одном наборе составляет суть этих продуктов. Интегрированный пакет инструментов гораздо эффективнее, чем множество разнородных систем, которые еще придется подгонять друг к другу. С другой стороны, именно многообразие средств чрезвычайно усложнило нашу задачу. Нетрудно сравнить качество и скорость сгенерированного компилятором кода или оценить характеристики типа "простота использования" - сложнее учесть многочисленные индивидуальные черты отдельных IDE.
Как оценить, скажем, поддержку Java, которая имеется в Borland C++ и отсутствует в VisualAge C++ и Visual C++? (В Symantec C++ была "нашлепка" для генерации апплетов Java, но позже от нее отказались в пользу нового продукта Cafe.) Поскольку поддержка Java не имеет прямого отношения к разработкам на C++, мы не учитывали эту характеристику. Но если вы планируете использование Java, то этот факт может стать решающим при выборе IDE. Если Вас интересуют средства распределенной сборки программ, то предпочтение следует отдать Symantec C++.
Java против С++
Очередным серьезным потрясением для компьютерного мира после появления в 1993 г. ОС Windows 3.x стало создание "Всемирной Паутины" (World Wide Web). Признанным языком "Паутины" сейчас становится Java. Если исходить из утверждения, что будущее - за приложениями Web, то перспектива С++ наводит на серьезные раздумья. Без сомнения, С++ проживет еще очень долго, неизвестно только, будут ли поставщики IDE столь же ревностно поддерживать свои продукты. По данным International Data Corp., ежегодно 5% новых программистов, потенциальных пользователей С++, задумываются, а не лучше ли им взяться за изучение Java. Как только корпорации придут к убеждению, что Java - язык будущего, а Web - дойная корова, они тут же устремят разработческие ресурсы от С++ к Java. Но Web и связанные с ней технологии еще слишком молоды, и реально обо всем этом можно вести лишь спекулятивные разговоры.
С++, как и все на свете, имет свои "за" и "против". Это язык с недостаточной степенью контроля, где легко допустить ошибку, которая останется незамеченной. Наконец, он труден для изучения, и никакие высокоразвитые навигаторы, средства конструирования и генераторы кода не облегчают задачу освоения самого языка.
Мы строили свой анализ на базовых свойствах IDE: быстро ли работает система, каково качество генерируемого макета, эффективно ли перекомпилируются 16-разрядные приложения в 32-разрядный формат, насколько развиты средства управления проектом. Разумеется, мы не могли проверить все и учесть все детали. Поэтому, принимая решение в пользу того или иного IDE, необходимо сопоставить свои потребности прикладных разработок с конкретными характеристиками продуктов.
Конфигурирование компилятора и загрузчика
Borland C++ Development Suite 5.0
Очень хорошо
Средства настройки Borland C++ изящны и просты в использовании. Наивысший балл не выставлен лишь потому, что систему удалось "смутить" вводом противоречивых параметров и спровоцировать на выдачу неадекватной диагностики.
Параметры по умолчанию устанавливаются индивидуально для каждого проекта. Удачный диалоговый интерфейс настройки позволяет легко изменять многочисленные опции компиляции, загрузки, оптимизации. Если изначально выбран модуль EXE, то установки действительны для всего проекта. Если выбран модуль части проекта, то они распространяются только на эту часть.
Невозможность установить параметры сразу для нескольких модулей частично компенсируется наличием стилей настройки. Стиль - это именованное множество параметров, которые устанавливаются одним действием. Предусмотрено несколько стилей общего характера: с оптимизацией по скорости, с оптимизацтей по размеру готовой программы и др., - можно установить и свои. Хотя стили и экономят усилия, тем не менее нельзя применить стиль сразу к нескольким модулям. Borland C++ поддерживает в рамках единой 32-разрядной IDE целевые платформы Windows NT, Windows 95, Windows 3.1 и DOS.
Microsoft Visual C++ 4.0
Хорошо
В Visual C++ предусмотрен обширный набор параметров настройки. Не очень высокая оценка объясняется невозможностью настройки на 16-разрядную среду.
Для проекта выбирается один из типовых наборов параметров, после чего любой параметр можно изменить. На этом этапе делается выбор: будет ли MFC использоваться статически, динамически (на базе библиотеки динамической загрузки MFC) или вовсе не будет использоваться.
Можно выбрать один из четырех уровней выдачи предупреждающих сообщений, опции загрузки, навигации, оптимизации, задать определения для препроцессора, предусмотреть включение отладочных данных. Допустимо встраивание "своих" инструментов для файлов, которые не обрабатываются средой.
Версия 4.0 охватывает только 32-разрядные платформы Windows. Для 16-разрядной среды предлагается версия 1.52с, которая содержится на поставляемом CD ROM. К сожалению, в этой версии, которая существует уже более 2-х лет, отсутствуют многие привлекательные возможности 4.0.
Когда мы ввели противоречивые параметры, система распознала их некорректность и выдала приглашение для ввода исправлений; однако диагностика оказалась невразумительной, что также повлияло на оценку.
Symantec C++ 7.2
Очень хорошо
Symantec C++ обладает развитыми средствами конфигурирования. На этапе настройки принимается решение о том, будет ли приложение использовать MFC (Symantec лицензирут Microsoft MFC 2.5 и 3.2). Среди опций целевых платформ - Windows 3.x, Win32s, Windows 95, Windows NT и DOS, а также DOS-X - платформа для выполнения 32-разрядных приложений DOS, которые опираются на расширение DOS, предлагаемое Symantec. Это расширение может распространяться вместе с приложениями.
Параметры компиляции устанавливаются как на уровне всего проекта, так и на уровне отдельных модулей. Порадовала возможность наследования параметров проектов. Нам понравилось, когда система запросила подтверждение на уничтожение промежуточных объектных файлов, которые были получены при других отличающихся от заданных параметрах настройки.
Предупреждающие сообщения можно трактовать как ошибки, а можно, наоборот, выборочно подавлять. Индивидуально указываются файлы, в которые следует включать информацию для отладчика.
VisualAge C++ for Windows 3.5
Хорошо
Функциональные показатели VisualAge C++ вполне заслуживают максимально высокой оценки. Лишь исключительная медлительность среды и отдельных инструментов заставила нас снизить балл.
VisualAge в значительной степени отличается от своих конкурентов, у которых между собой много общего. Основное отличие в том, что ключевые компоненты: редактор, отладчик, компилятор - представлены как раздельные инструменты, вызываемые в рамках интегрированной среды.
Общее у VisualAge C++ с другими системами - понятие проекта. Проект включает модули, из которых состоит приложение. Настройка проекта содержит невероятное число опций, разделенных на страницы с заголовками типа "Листинг", "Отладка", "Обработка" и др.
Настроечные заготовки VisualAge C++ (BuildSmarts) подобны стилям Borland C++. Помимо предопределенных заготовок (отладочная, с максимальной оптимизацией и т. п.) можно создать и свои собственные.
VisualAge C++ требует довольно много ресурсов. И все же скорость работы в графической среде трудно назвать удовлетворительной. В отличие от прочих IDE, выполнение непосредственно с CD ROM практически неприемлемо по скорости. Впрочем, даже при полной установке всех 330 Мбайт на нашем тестовом компьютере - Pentium 90 МГц с 24 Мбайт оперативной памяти (16 Мбайт составляют необходимый минимум, 24 - рекомендуемый объем) - работа подчас шла чрезвычайно медленно, и мы даже предпочли пользоваться командной строкой.
Генерация кода C++
Borland C++
Development Suite 5.0
Очень хорошо
Borland C++ генерирует код, основанный на OWL, а не на MFC, как в Visual C++ и Symantec C++. Хотя в 5.0 и появилась поддержка MFC, но она адресована тем, кто имеет приложения на базе MFC и хочет перенести их в среду Borland C++.
Проект в Borland C++ либо начинается "с чистого листа", либо закладывается средствами AppExpert (компонент типа "помощников" в Visual C++ и Symantec C++). Borland C++ позволяет легко открыть доступ к классу средствами OLE-автоматизации. Сложности реализации многих аспектов OLE снимаются за счет использования ObjectComponents Framework.
Интегрированный редактор ресурсов довольно развит, но в нем нет средств для редактирования таблиц и для предоставления информации о версиях. Для этих целей предлагается редактор типа Notepad. Но еще более удивляет отсутствие визуальной поддержки для компонентов ActiveX (бывшие OLE custom controls) при наличии таковой для управляющих компонентов Visual Basic.
Microsoft Visual C++ 4.0
Очень хорошо
Visual C++ генерирует макет программы при помощи мощного инструмента AppWizard. К сожалению, это инструмент одноразового пользования - он не позволяет вносить изменения в уже созданную программную заготовку.
Проект инициализируется в среде Visual C++ Developer"s Studio, где вы выбираете способы его создания - средствами AppWizard или с чистого листа, с использованием DLL или с компонентами ActiveX, а также консольное приложение.
AppWizard создает макет приложения, в который добавляется содержательный программный код. AppWizard задает серию вопросов, ответы на которые влияют на процесс генерации кода.
Разумеется, продукт фирмы Microsoft обеспечивает всестороннюю поддержку OLE (контейнерные и серверные классы, компоненты ActiveX, OLE-автоматизация). Отметим, что хотя AppWizard и создает автоматически общий макет программы, внесение модификаций требует значительной степени ручного кодирования.
Symantec C++ 7.2
Очень хорошо
Поскольку Symantec C++ основан на MFC, он является почти точной имитацией Visual C++. Symantec C++ поддерживает и MFC, и Borland OWL.
Проект в Symantec C++ может быть начат "с чистого листа" или с программного макета, созданного при помощи инструмента AppExpress. AppExpress генерирует код, основанный на MFC. Опции генерации примерно те же, что и в Visual C++. Symantec, правда, идет чуть дальше и генерирует еще и макет файлов помощи.
Встраивание визуальных элементов пользовательского интерфейса в макет приложения осуществляется при помощи инструмента ClassExpert, подобного ClassWizard в Visual C++. Для каждого визуального элемента можно добавлять, изменять или удалять функции обработки сообщений, передаваемых Windows объектам MFC. Добавление кода для командной кнопки, например, свелось к двойному щелчку над соответствующим типом сообщения в диалоговом окне ClassExpert.
VisualAge C++ for Windows 3.5
Отлично
В этой категории VisualAge C++ обошел своих конкурентов, поскольку его Visual Builder - графический инструмент конструирования приложений - не только создает интерфейс программы, но в значительной мере позволяет задавать и ее логику. Процесс начинается с создания серии графических объектов в рамках формы, подобно тому, как это делается в Visual Basic (Microsoft) или Delphi (Borland). Выбрав из графической палитры требуемый тип органа управления, вы при помощи мыши указывате его положение в форме.
Впечатляет способ задания связей между органами управления: просто проводятся линии, связывающие объекты. Эти линии отображают сообщения, передаваемые от одного объекта к другому, и способ их обработки объектом-получателем. Генерируемый код опирается на IBM"овскую библиотеку Open Class Library, которая поддерживает создание и клиентов, и серверов OLE.
Управление проектом
Borland C++ Development Suite 5.0
Очень хорошо
Инструментальный компонент Borland C++ ClassExpert - прекрасное средство управления проектами, но, пожалуй, менее мощное и не такое простое в использовании, как Project Workspace в Visual C++.
В состав продукта входит вполне приличный навигатор кода, но еще лучше пользоваться ClassExpert, раз вы его уже освоили. Верхняя часть окна ClassExpert предназначена для просмотра классов и событий, в нижней выводится код, реализующий обработку выбранного события. В этой среде легко просматривать существующие классы, редактировать их заголовки, добавлять новые классы или события.
Borland C++ Development Suite - единственный продукт, поставляемый вместе с системой контроля версий от независимой фирмы - PVCS (Intersolv).
Microsoft Visual C++ 4.0
Отлично
В состав Visual C++ входит вполне надежный навигатор кода, но нам больше понравилась среда менеджера проектов - Project Workspace. Тем более, что для нее не нужно специально генерировать навигационную информацию. Project Workspace позволяет сконцентрироваться на структуре классов и связях между ними, не заботясь о том, где они хранятся. При помощи всплывающего меню легко добавить к определению класса новую переменную или функцию. Есть средства для обхода мест определения и использования компонента класса.
В отличие от более ранних версий, 4.0 не поддерживает создание кодовых групп в среде менеджера проектов. Это существенно для тех, кто намерен перейти к 4.0 от предыдущих версий. Visual C++ не содержит собственной подсистемы контроля версий, однако допускает интеграцию с системами независимых фирм, совместимыми со спецификациями Microsoft Common Source Code Interface.
Symantec C++ 7.2
Удовлетворительно
Symantec C++ поставляется в виде двух, на первый взгляд, идентичных IDE, предназначенных для 32- и 16-разрядных операционных систем. Однако при ближайшем рассмотрении обнаруживаются странные различия.
Хотя система контроля версий не входит в состав продукта, мы выяснили, что 16-разрядная IDE совместима с PVCS. Пользователи 32-разрядной IDE почему-то лишены возможности работать с PVCS.
Мы не смогли также заставить наши субпроекты работать в 32-разрядной IDE. Кроме того, окно менеджера проектов не позволяет максимально обозревать структуру проекта, совокупность составляющих его файлов и настроечные опции.
VisualAge C++ for Windows 3.5
Хорошо
Средства управления проектом в VisualAge C++ продуманы не столь тщательно, как в Borland C++ и Visual C++. Среда разработки VisualAge C++, WorkFrame, предназначена для управления кодом всего проекта в целом. Каждому модулю в ее рабочем пространстве соответствует иконка с обозначением имени файла.
Обозреваемую информацию можно фильтровать, вводя критерии отбора, но нельзя "свертывать" уровни показа зависимостей файлов.
Для создания новых проектов можно воспользоваться готовыми и полностью работоспособными макетами, которые входят в состав инструментального компонента ProjectSmarts. Выбрав один из типовых проектов, вы можете доработать его, внося соответствующие изменения.
Инструменты анализа приложений
Borland C++ Development Suite 5.0
Очень хорошо
Borland C++ содержит множество инструментов, облегчающих жизнь разработчика. Так, WinSight позволяет наблюдать за поведением классов и окон, отслеживать передаваемые между ними сообщения. WinSpector перехватывает ошибки при крахе программы, а утилита Buildsym расшифровывает результат, возвращаемый WinSpector. Многие утилиты доступны, правда, только из командной строки.
Новое в этой версии - язык cScript для развития среды разработки. Средствами cScript можно получить доступ к основным компонентам IDE, встроить в них дополнительные возможности или изменить существующие. Поскольку практически вся функциональность IDE реализована на cScript, мы могли обозревать существующие скрипты и использовать их как основу для создания собственных.
Microsoft Visual C++ 4.0
Очень хорошо
Многие инструменты, в частности Spy++ и WinDiff, входившие ранее в Windows Software Development Kit (SDK), включены также и в Visual C++. Имеется инструмент профилирования Microsoft Profiler и интегрированная версия Control Development Kit, содержащая библиотеки для создания управляющих компонентов ActiveX. В версию 4.0 вошли Game SDK и Internet Server API Extention Wizard, который умеет генерировать макеты серверных приложений Internet.
Visual C++ позволяет не просто применять существующие заготовки элементов приложения (AppWizard), но и строить на их основе свои собственные. Это будет интересно для тех команд разработчиков, которые хотели бы настраивать под свои потребности генерируемый по умолчанию код. Например, существующую заготовку формы можно настроить на свой корпоративный стандарт, включив в нее диалоговое окно ввода пароля для сервера базы данных.
Symantec C++ 7.2
Очень хорошо
Помимо обычного набора средств: HeapWalk, Spy++, DDE Spy (для наблюдения за выполняющимися объектами), Stress, WinDiff и т.п. - Symantec лицензирует у Microsoft целый спектр полезных инструментов - от весьма сложных, предназначенных, например, для отслеживания вызовов Messaging API (API обмена почтовыми сообщениями) или Microsof-Intel Telephony API (API управления телефонной аппаратурой) до простеньких инструментов типа Bits and Flags для показа 32-разрядных значений в виде серии помечаемых клеточек.
Средства анализа исходного кода позволяют обозревать структуру классов в графическом виде и манипулировать классами и их компонентами при помощи мыши. Symantec C++ имеет средства для создания управляющих компонентов ActiveX, но, в отличие от Visual C++, не содержит Control Development Kit, который приобретается дополнительно.
VisualAge C++ for Windows 3.5
Очень хорошо
IBM также лицензирует Microsoft SDK, поэтому набор вспомогательных инструментов VisualAge C++ примерно такой же, как и в других IDE. В состав продукта входят некоторые оригинальные компоненты, разработанные IBM, - DataObject Viewer (для просмотра объектов данных), Object Viewer (для просмотра объектов OLE), анализатор характеристик производительности.
Развитый навигатор VisualAge C++ отображает информацию в схематической или в графической форме. С его помощью можно изучать и свои, и библиотечные классы, что упрощает понимание сложных классовых иерархий, реализующих элементы пользовательского интерфейса, коллекции, поддержку OLE.
Отладка
Borland C++ Development Suite 5.0
Отлично
Тщательно продуманный отладчик Borland C++ имеет множество полезных инструментов. В состав интегрированной отладочной среды по-прежнему входит Turbo Debugger. Окна редактирования содержат боковое поле, где отображаются отладочные иконки, отмечающие точки прерывания, текущую строку выполнения и даже те строки, которые уже выполнялись при данном запуске. Поддерживается отладка многопотоковых программ и остановки в исключительных ситуациях, вызванных программой или ОС.
Одно из полезных качеств Borland C++ - огромное разнообразие опций для точек прерывания. Исключительно гибки способы установки условных прерываний. Среди множества видов отображаемой отладочной информации - стек вызовов, окно просмотра переменных, окно состояния процесса и его потоков, многопанельное окно состояния CPU, где показывается ассемблерный код выполняемой программы, регистры, флаги, стек. Вход в DLL выполняется прозрачно и не требует дополнительных программных шагов.
Мощь отладочных средств Borland C++ дополняют 16- и 32-разрядные версии CodeGuard, инструмента, который отслеживает общие ошибки работы с памятью, например выходы за границы буферов. CodeGuard работает только в среде Windows и неприменим для приложений DOS.
Microsoft Visual C++ 4.0
Отлично
Помимо стандартных отладочных средств (условные точки прерывания, пошаговое выполнение, показ значений переменных) Visual C++ предоставляет и ряд новых инструментов, которые в совокупности и обеспечили продукту наивысшую оценку.
Одно из наиболее полезных новшеств - моментальный показ значений переменных и выражений при установке курсора (DataTips).
В окнах отладчика отображается состояние регистров, дизассемблированный код, стек вызовов, память. Особенно удачен способ показа переменных: видны значения переменных, упоминаемых в текущем и в последнем выполненном операторе. Структуризованные информационные окна иногда выглядят несколько перегруженными, но в целом объем выдаваемых данных оптимален.
Visual C++ поддерживает разнообразные типы прерываний: по достижении заданного оператора, при получении определенного сообщения, при изменении значения переменной и т. п. Но нам показалось не очень правильным то, что установка прерываний выполняется из меню редактирования (Edit), а не отладки (Debug). Поддерживается отладка DLL. При отладке многопотоковых приложений можно отслеживать и приостанавливать отдельные потоки выполняющейся программы.
Symantec C++ 7.2
Очень хорошо
Отладчик Symantec C++, являющийся модернизацией мощного отладочного инструмента MultiScope, обладает полным спектром блестящих возможностей и способен работать с приложениями как для DOS, так и для Windows.
Отладчик Symantec C++, хотя и лишен некоторых привлекательных средств Visual C++ и Borland C, тем не менее обладает уникальными возможностями. Например, он графически отображает связи между сложными структурными объектами, скажем элементами списка.
Отображается список функций, определенных в программе, с указанием их позиций в файлах, их адресов, типов возвращаемых значений. Список функций - удобное средство навигации. С его помощью, например, мы без труда изучили структуру библиотек DLL. Поддерживается отладка функций из DLL, установка прерываний на случай возникновения исключительных ситуаций ОС.
VisualAge C++ for Windows 3.5
Удовлетворительно
Отладчик VisualAge C++ существенно отличается от своих "собратьев" в других IDE по внешнему оформлению, но перечень его возможностей приблизительно такой же. Невысокая оценка связана с ограничениями при отладке приложений Windows 3.x.
Процесс отладки приложений Windows 95 и Windows NT вполне прямолинеен. Но, поскольку отладчику VisualAge C++ необходима 32-разрядная среда, для приложений Windows 3.1 применяется механизм удаленной отладки. В состав IDE входит специальный зондирующий модуль, который запускается на компьютерах, работающих под управлением Windows 3.1.
Отладчик взаимодействует с зондирующим модулем посредством протоколов TCP/IP. Для этого пришлось дополнительно установить семь переменных окружения, что увеличило общий объем окружения на 20000 байт с учетом еще 25 переменных, добавленных системой автоматически.
Удаленная отладка приложений Windows 3.1 связана с определенными ограничениями, например невозможностью остановить выполнение работающей программы.
Совместимость с Windows
Borland C++ Development Suite 5.0
Хорошо
Перекомпиляция 16-разрядных приложений Windows в Borland C++ не представляет никаких проблем. Достаточно открыть новый проект, выбрать тип целевой платформы и заново построить приложение. Отметим, что Borland C++ позволяет выбрать базовую библиотеку для вновь создаваемого приложения - MFC, OWL или ObjectComponent Frame. Выбор той же библиотеки, на которой было основано исходное приложение, способствует сохранению преемственности.
Microsoft Visual C++ 4.0
Очень хорошо
Неудивительно, что продукт компании Microsoft, создавшей Windows API, оказался лучшим. При открытии 16-разрядного приложения в среде Visual C++ система запрашивает подтверждение на его конвертацию в 32-разрядный формат. После этого преобразование выполняется автоматически, и полученный проект сохраняется в другой директории под новым именем.
Symantec C++ 7.2
Хорошо
Перекомпиляция имеющегося приложения в 32-разрядный формат прошла гладко и без проблем. Достаточно было открыть проект, изменить тип целевой платформы на Win32s и заново собрать программу. Ошибок или погрешностей в новой программе мы не обнаружили, и не понадобилось вносить каких-либо изменений в исходный код приложения.
VisualAge C++ for Windows 3.5
Плохо
Процесс перекомпиляции приложения в VisualAge C++ отнял гораздо больше сил и времени, чем в других IDE.
При попытке перекомпиляции мы получили несколько сообщений об ошибках. В руководстве по VisualAge C++ утверждалось, что такого типа сообщения относятся к внутренним ошибкам компилятора, и предлагалось обратиться за технической поддержкой. При ближайшем рассмотрении выяснилось однако, что ошибки связаны с именами функций Windows API, в которых использовалось написание строчными буквами. Например, для того чтобы компилятор VisualAge воспринял имя _export, его нужно было заменить на _Export.
Исследования и необходимые исправления отняли в общей сложности 2,5 часа.
Как мы проводили тестирование
В прошлый раз, когды мы оценивали IDE для C++ (а это было в 1994 г.), их главным рыночным лозунгом было значительное увеличение продуктивности. Соответственно и тестирование ориентировалось на то, чтобы проверить, насколько хорошо выполняется это обещание. В этот раз мы сфокусировали внимание на наиболее важных характеристиках современных 32-разрядных IDE: построение программных макетов, управление проектами, общая функциональность.
Основные функции
Конфигурирование компилятора и загрузчика
Многие опции компиляторов сходны между собой, но их общее количество и способы представления у разных продуктов различны. Чем гибче инструмент, тем проще настроить компилятор и загрузчик и тем меньше времени теряет разработчик на манипуляции с откомпилированной программой.
Мы устанавливали окружение для своего тестового проекта, отменяя некоторые типы предупреждений, выбирая совместимость с ANSI и задавая выходную директорию для компилятора. Для получения оценки "удовлетворительно" продукт должен иметь довольно тонкую настройку компилятора и загрузчика, поддерживать полный спектр целевых платформ и иметь разумные предустановки опций по умолчанию. Компилятор также должен содержать опцию совместимости со стандартом ANSI. Мы начисляли дополнительные баллы продуктам с более развитым пользовательским интерфейсом, обеспечивающим быстрый и удобный обзор текущей настройки, описание и сохранение конфигураций, выбор базовой библиотеки классов индивидуально для каждого проекта. Дополнительные баллы полагались и за поддержку MFC. Оценка снижалась за выдачу компилятором или загрузчиком неадекватной диагностики или за неполную поддержку целевых платформ Windows.
Генерация кода C++
Продукты должны были соответствовать требованию автоматической генерации программного макета, исключающей необходимость ручного кодирования компонентов пользовательского интерфейса для среды Windows.
Тест начинался с выбора компонентов, необходимых для нашего приложения: панели инструментов, меню, диалоговых окон. Затем мы модифицировали пользовательский интерфейс приложения и оценивали, насколько хорошо система справится с внесением изменений.
Продукту полагалось, как минимум, построить полный программный макет, реализующий пользовательский интерфейс приложения, и обеспечить передачу сообщений между компонентами пользовательского интерфейса и функциями их обработки. Дополнительные очки присуждались за дружественность инструментальной среды по отношению к разработчику, ее устойчивость, наличие подсказок для каждой опции или действия. Генераторы кода, автоматически отрабатывающие изменения, внесенные в определение пользовательского интерфейса, или обеспечивающие наиболее полный контроль за его внешними атрибутами (цвет, размер и т.п.), также получали дополнительные очки.
Оценка снижалась за ограниченность средств генерации, за отсутствие поддержки платформно-специфических механизмов (OLE, ODBC).
Управление проектом
Поскольку разработчикам часто приходится вести одновременно несколько проектов (с разными требованиями и ограничениями), то контроль версий имеет для них первостепенное значение. Хорошо организованный инструмент снимает необходимость ручного отслеживания параметров и требований каждого проекта.
Удовлетворительную оценку получал продукт с базовым редактором проектов, который позволяет задать множество входящих в состав проекта файлов, его целевую платформу и допускает последующие модификации. Кроме того, редактор должен был обеспечить визуальное отображение файлов и связей между ними, просмотр исходного кода с ориентацией на структуру классов. Оценка повышалась при условии, если поддерживается система контроля версий или если система самостоятельно находит зависимости в программе и имеет навигатор исходного кода.
Инструменты анализа приложений
Нет смысла делать приложение, которым не будут пользоваться. Если система медлительна, неэстетична или чересчур сложна, пользователи начнут отказываться от нее.
Поэтому каждый из рассмотренных продуктов предоставляет ряд инструментов для анализа свойств и поведения создаваемого приложения. Они вычисляют статистику компиляции и количество выполнений данного фрагмента кода, исследуют требования по памяти, распечатывают различия между заданными файлами или проектами. Как минимум, требовалось наличие достаточного количества вспомогательных инструментов, запускаемых из среды IDE. Оценка снижалась, если их общее число невелико или если их полезность вызывает сомнения.
Отладка
Попробуйте на ближайшей вечеринке заговорить об отладчиках - ваши собеседники тут же начнут зевать. Отладчики, спору нет, - не самая интересная вещь на свете, но иногда это единственное, что может спасти положение. Отладчики - одна из немногих констант анализируемых IDE. Тем не менее они различаются по разнообразию возможностей, степени полезности и реализации.
Необходимые условия для получения удовлетворительной оценки - средства установки и снятия точек прерывания, пошаговое выполнение программ. Оценка повышалась, если можно было не только просматривать, но и устанавливать значения переменных, если предоставлялась информация о затратах времени и памяти на выполнение объектов класса, если при пошаговом выполнении можно было обходить функции, отслеживать выполнение потоков, переключаться между ними. Дополнительные баллы давались за средства отладки компонент ActiveX, библиотек DLL, за наличие каких-либо уникальных возможностей.
Совместимость с Windows
С приходом Windows 95 потребность в 32-разрядных приложениях становится уже не исключением, а нормой. Назрела необходимость гладкой перекомпиляции 16-разрядных приложений в 32-разрядный формат. Для получения удовлетворительной оценки продукт должен обеспечивать перекомпиляцию без внесения существенных изменений в исходный код приложения. Оценка повышалась, если нужно было лишь переустановить опцию целевой платформы, и снижалась, если возникали ошибки или если надо было переписывать значительные фрагменты исходного кода.
Производительность
Мы фиксировали время, затрачиваемое в сумме на компиляцию, загрузку и выполнение тестового приложения с включенными опциями оптимизации и брали среднее для Windows 95 и Windows NT. Оценки выставлялись следующим образом: менее 2 мин. 45 сек. - отлично; за каждую минуту сверх этого времени оценка снижалась на балл. Время свыше 6 мин. 45 сек. оценивалось как неприемлемое.
Поддержка и цена
Документация
Для получения оценки "удовлетворительно" документация должна была содержать описание всех ключевых функций продукта. Отличная оценка выставлялась при наличие интерактивной системы помощи и интерактивного учебника, руководства для быстрого старта, обзоров основных технологий. Отсутствие оглавления или сведений по какому-либо разделу, устаревшая информация, ошибки приводили к снижению оценки.
Политика в области поддержки
Необходимое требование для получения удовлетворительной оценки - наличие периода бесплатной поддержки и хотя бы одной альтернативы телефонной связи: CompuServe, узел Internet, факс, e-mail, частный узел BBS. Оценка повышалась за наличие бесплатного телефона, гарантийного срока возврата денег, доступность поддержки более 10 час. в день и в выходные.
Техническая поддержка
Оценка основывалась на качестве полученной поддержки при анонимных обращениях. Основные критерии - правильность ответов, время ожидания, вежливость. Оценка повышалась, если специалист давал дополнительные полезные советы, перезванивал и убеждался, что проблема решена. Оценка снижалась за неверные ответы или слишком долгое ожидание.
Цена
Оценка по этому критерию отражала цену продукта с учетом конкуренции и сектора рынка, на который ориентирован продукт. Ценность самого продукта, спектр его возможностей и производительность в расчет не брались.
Watcom C/C++ - МНОГОПЛАТФОРМЕННОСТЬ И ВЫСОКОЕ КАЧЕСТВО КОМПИЛЯЦИИ
Если говорить о переносимости, то Watcom C/C++ (Powersoft Corp.) - суперзвезда среди IDE для C++. Спектр целевых платформ включает DOS, DOS с 32-разрядным расширением, Windows, Windows NT, OS/2, а также ОС Netware.
Watcom всегда ценился за исключительно высокое качество компиляции, тщательность в деталях, всестороннюю глубокую инструментальную поддержку (отладка, профилирование и проч.).
Благодаря кросс-платформенности, тип платформы, на которой вы работаете, практически не имеет значения - компилятор можно запускать и из командной строки DOS, и из графической среды любой разновидности Windows или OS/2.
Watcom не следует канонам IDE - вместо тесно увязанной инструментальной среды вам предлагается набор индивидуально запускаемых инструментов, впрочем, весьма удобный в использовании.
Watcom не имеет собственных экспертных компонентов и средств автоматизации. При инициализации проекта выбирается только одна или несколько целевых платформ и типы результирующих файлов - EXE, оконный EXE, DLL, библиотека, help-файл. Отсутствие собственных средств автоматизации компенсируется включением в комплект поставки системы визуального программирования Visual Programmer 2.02 (Blue Sky Software). Visual Programmer позволяет графическими средствами описывать макет приложения с элементами функциональности и генерирует код на основе MFC. Visual Programmer можно применять интерактивно для постепенного уточнения структуры приложения и его перегенерации.
Watcom C/C++ включает в себя обширный набор дополнительных компонентов, отчасти лицензируемых у других фирм: MFC 2.5 для 16-разрядных и 3.0 для 32-разрядных программ, собственное 32-разрядное расширение DOS, OS/2 2.1 Toolkit, полные библиотеки API Windows 3.2 и Windows NT, NLM Software Developers Kit 4.0 (Novell), SOMObject"s Developer Toolkit для OS/2.
Некоторая раздробленность среды Watcom C/C++, немного причудливый интерфейс и не всегда адекватная помощь могут оттолкнуть тех, кто предпочитает стройность и продуманную интегрированность IDE типа Visual C++ или Borland C++. Более комфортно будут чувствовать себя те, кто намерен сам конструировать себе среду из имеющихся инструментальных компонентов.
Отмеченные недостатки ни в коей мере не умаляют достоинств компилятора C/C++, который был и остается серьезнейшим претендентом при выборе среды разработки на C++. Цена продукта - 350 долл., апгрейд для пользователей Visual C++, Borland C++ и Symantec C++ стоит 199 долл.Для тех, кто мыслит категориями UNIX
ДЛЯ ТЕХ, КТО МЫСЛИТ КАТЕГОРЯМИ UNIX
Продукт компании SunSoft Visual Workshop for C++ 2.1, предназначенный для среды UNIX, как и другие представленные в этом обзоре IDE, автоматизирует построение пользовательского графического интерфейса и содержит ряд вспомогательных инструментов.
В отличие от IDE для Windows, где для конфигурирования проекта предлагаются простые и наглядные графические средства, в Visual Workshhop настройка осуществляется при помощи Makefile. С одной стороны, это дает более гибкие и разнообразные возможности, но с другой - требует от разработчика хорошего знания довольно сложных команд компиляции и загрузки.
Sparcworks/Visual, среда построения графического пользовательского интерфейса, производит исключительно благоприятное впечатление. Она умеет, например, интеллектуально отслеживать связи (возможность взаимодействий) между виджетами, позволяет изменять определения виджетов. Для сконструированного нами интерфейса Sparcworks/Visual автоматически сгенерировал файлы исходного кода на C/C++ и файлы ресурсов XWindow. Эти файлы мы смогли затем модифицировать и слить с прикладным кодом, созданным вручную.
Несколько удивляет отсутствие собственного редактора исходного кода. Правда, Workshhop позволяет встраивать в себя любые EXE-файлы. Благодаря этому мы могли вызывать системный редактор непосредственно из Workshhop Manager.
Хороший отладчик для C++ необходим всегда, независимо от платформы. Visual Workshhop предоставляет все основные функции отладки в хорошем исполнении. Правда, мы сочли интерфейс настройки отладчика несколько сложноватым.
Бесспорны достоинства инструментов анализа производительности. Они позволяют выявлять узкие места в программе, фиксировать время выполнения отдельных циклов и потоков. Результаты исследований выдаются в виде обстоятельных печатных отчетов или в наглядной графической форме на экране.
Workshhop укомплектован базовыми средствами поддержки коллективных разработок, в том числе системой контроля версий, слиянием файлов и т. п. Правда, интерфейсы некоторых инструментов из этого класса недостаточно естественны.
В целом этот продукт вполне можно рекомендовать пользователям UNIX, несмотря на отдельные отмеченные здесь недостатки.