Введение Весь тот ажиотаж, который окружает язык программирования Java,
может создать впечатление, что C++ пора включать в список рискованных
инструментов. Однако, что бы ни ожидало его в будущем, пока этот язык
программирования остается лучшим средством доступа к самым передовым функциям
современных платформ Microsoft Windows, включая Windows 98 и Internet Explorer
4.0, и достижения максимальной производительности. Новая версия Microsoft Visual
C++ 6.0 Enterprise Edition (1299 $) наглядно иллюстрирует, почему C++, по всей
вероятности, будет продолжать играть важную роль в разработке корпоративных
приложений на основе Интернета и баз данных. Этот пакет предлагает целый ряд
новых функций, и мы настоятельно рекомендуем его пользователям Visual C++ 5.0.
Кроме того, в нем имеются беспрецедентные средства упрощения работы для тех, кто
только осваивает C++ и Microsoft Foundation Classes (MFC), а также значительные
усовершенствования, направленные на корпоративное применение.
Улучшенные мастера Сильными сторонами Visual C++
традиционно считались <мастера> и библиотека MFC. В новой версии стало
значительно проще использовать всю мощь MFC. Многие программисты начинают работу
над проектами C++ при помощи инструмента AppWizard. Он позволяет создать
<скелет> приложения, который по мере дальнейшей работы над проектом <обрастает
мясом>. В новой версии диапазон таких базовых проектов значительно расширился.
Например, можно строить прикладные программы с применением <контейнеров активных
документов> (Active Document Containers), исключающих архитектуру, основанную на
представлениях документов. Кроме того, в приложениях могут присутствовать другие
компоненты активных документов (например, из приложений Microsoft Office 97). Их
параметрами управляет новый класс MFC - COleClientItem.
При помощи нового AppWizard ничего не стоит написать приложение под браузер,
способное использовать функциональные возможности Internet Explorer 4 для
отображения веб-контента. В файлах ресурсов проекта теперь можно хранить Dynamic
HTML и другие ресурсы Windows, такие, как растровые карты, значки и курсоры, так
что в создаваемые программы можно закладывать свой собственный гипертекстовый
механизм. (Новый класс MFC CHtmlView позволяет создавать браузероподобные
приложения, инкапсулируя функции Internet Explorer.) Посредством AppWizard в
любом создаваемом приложении можно автоматически задействовать панели
инструментов ReBars, изменяющиеся в размерах и <прилипающие> к краям экрана.
Упрощенние работы Несмотря на великолепную исходную
позицию для создания приложений, обеспечиваемую мастером AppWizard, начинающим и
не очень опытным программистам трудно обращаться с непростым языком C++. Тот,
кто работает с Windows, должен научиться не только разбираться в дебрях самого
языка, но и хорошо ориентироваться в сотнях методов и функций Windows API и MFC.
Visual C++ 6 предлагает неоценимую помощь по преодолению этих трудностей.
Заимствованная из Office 97 технология IntelliSense станет, вероятно, самым
полезным инструментом каждого программиста на С++. Теперь достаточно набрать имя
объекта С++, и мастер IntelliSense выведет список всех методов для этого объекта
вместе с перезагружаемыми версиями одной и той же функции и всеми ее
параметрами. (IntelliSense перечисляет все методы, декларации, идентификаторы и
даже комментарии в контексте проекта.)
Мы нашли это средство чрезвычайно полезным; чтобы выбрать метод, даже не
нужно набирать его имя. К тому же, оно контекстно зависимо (в списке методов
присутствуют лишь те, которые связаны с каждым объектом) и расширяемо (точно так
же работает и с вашим собственным кодом). Кроме того, мастер IntelliSense
отображает связанные с методом текстовые подсказки, так что один член группы
разработчиков сможет помочь другим разобраться со специальными, введенными им
методами. Наконец, при подведении курсора к любому объекту или методу
автоматически всплывает окно с соответствующими параметрами.
Технология IntelliSense представляет собой реальный шаг в направлении
инструментов автоматизированного программирования, хотя отдельные формы
динамического отображения параметров уже давно практикуются в продуктах Optima++
компании Sybase и C++Builder компании Inprise. Опытным пользователям этот
инструмент не помешает, а тем, кто недостаточно знаком с MFC, окажет неоценимую
услугу.
Еще одним препятствием на пути к освоению С++ было отсутствие хорошего
браузера классов. Предыдущие версии ClassView далеки от идеала: чтобы
откорректировать отображения классов, методов или членов, как правило,
приходилось рекомпилировать проект. Теперь браузер ClassView усовершенствован в
нескольких направлениях. Во-первых, панель ClassView меняет свой облик по мере
набора, благодаря динамическому анализу текста. Во-вторых, теперь ClassView
подспудно управляет созданием операторов IDL для работы с объектами Component
Object Model (COM). Это гораздо эффективнее при работе с COM на низком уровне,
особенно с компонентами библиотеки Active Template Library (ATL) (которые не
допускают применения инструмента MFC ClassWizard).
В числе других усовершенствований среды разработки улучшенная система
предупреждений об ошибках программирования и усиленные средства макроязыка для
попутной записи и воспроизведения часто используемых последовательностей команд.
Несколько новых ключевых слов С++ помогут опытным разработчикам создавать
более быстродействующие программы. Ключевое слово _forceinline заставляет
компилятор последовательно кодировать заданную функцию, а ключевое слово _assume
определяет неизменные выражения, что помогает компилятору оптимизировать код.
Сам компилятор теперь поддерживает перезагрузку новых операторов с удалением
соответствующих старых. (Новый оператор может перезагружаться, как и в прежних
версиях, но теперь в случае ошибок размещения вызывается правильная версия
удаленного оператора.) Эти дополнения компилятора высокого уровня сочетаются со
следованием стандарту ANSI/ISO C++, включая поддержку всех классов библиотеки
Standard Library C++.
Результаты тестирования Все это хорошо, но как
насчет главного - производительности компилятора? Собственное быстродействие и
качество работы компилятора Visual C++ 6.0 улучшились. Мы испытывали продукт с
использованием подмножества тестов PC Magazine Labs для компиляторов, сравнивая
новый Visual C++ 6 с версией 5. Visual C++ 6 продемонстрировал умеренное
повышение производительности (примерно на 2,2%) по сравнению с Visual C++ 5 на
нескольких синтетических тестах с интенсивными вычислениями. (Важно отметить,
что Visual C++ обеспечивает новые виды оптимизации и для процессоров Pentium
Pro).
Мы оценивали и процесс компоновки, который в новой версии оптимизирован, но
ускорения не заметили. Однако в отдельных случаях, когда в исходный код вносится
единственное изменение, после чего приложение воссоздается заново, это время
сокращалось почти на 28% (что хорошо согласуется с утверждением Microsoft о
30%-м ускорении компоновки). Объясняется это главным образом оптимизацией
прекомпилированных файлов заголовков. Другое преимущество новой версии - более
компактные исполняемые файлы: EXE-файл программы, написанной в Visual C++ 5 и
рекомпилированной в Visual C++ 6, оказывается на 17% меньше.
Усовершенствования процесса отладки Visual C++ 6
содержит несколько реальных усовершенствований процесса отладки, наиболее
заметное среди которых - функция Edit and Continue. Теперь вместо традиционного
цикла редактирования - компиляции - линковки - отладки программист С++, подобно
разработчику на Visual Basic, может исправлять действующие исполняемые модули
прямо в процессе отладки. Мы нашли это усовершенствование чрезвычайно полезным -
оно значительно ускоряет процесс разработки приложений на С++. Но мы обнаружили,
что при более или менее крупных изменениях в коде функция Edit and Continue не
работает. В таких случаях программу приходится останавливать, заново компоновать
и запускать снова. В целом же данная технология - крупный шаг вперед.
Участникам сложных проектов помогут и несколько других функций, облегчающих
тестирование и отладку. Прежде всего, новый продукт поддерживает несколько
мониторов, так что компоновку можно осуществлять на одном экране, а отладку - на
другом. Это существенно облегчает выявление и преодоление проблем при
конструировании интерфейса. Кроме того, Visual C++ 6 проявляет больше интеллекта
при загрузке модулей DLL; теперь в окне модуля видно, какие DLL загружаются в
процессе отладки. (Например, таким образом можно определить, какой DLL вызывает
сбой программы.) Теперь можно помечать и откладывать загрузку DLL до тех пор,
пока они не потребуются в исполняемом коде - это еще одно преимущество,
облегчающее отладку крупных приложений. (Windows-приложения всегда загружали при
запуске все свои DLL, если в их программе не были предусмотрены средства
управления загрузкой и разрешения конфликтов.)
Отладка на низком уровне в Visual C++ 6.0 также ускорена - за счет введения
доступа к регистрам ММХ процессоров Pentium MMX. Шестнадцатиричные числа в
формате MASM (например, <4321h>) теперь можно применять во всех выражениях
отладчика, что означает заметное упрощение модификации содержимого регистров
посредством команд ассемблера. Отладчик ведет себя разумнее и при отображении
указателей (а также v-указателей внутри классов). Вместо трудных для восприятия
шестнадцатиричных адресов он старается использовать имена методов. Одна из
трудностей программирования с MFC заключается в неудобстве доступа к кодам
ошибок, получаемых через вызовы GetLastError(). Visual C++ 6.0 значительно
облегчает эту процедуру, отображая содержимое сообщений GetLastError() в
псевдорегистре с именем ERR, так что разработчик всегда может увидеть последнюю
ошибку в данном потоке своего приложения. Еще одна новая особенность MFC -
функция AfxCheckError(), позволяющая программно контролировать результаты
операций ActiveX/OLE.
Программистам стало легче видеть и содержимое вариантов типов данных. В
зависимости от типа данных в варианте (например, строка (BSTR) или типы числовых
данных), его содержание отображается и помечается надлежащим образом без
необходимости копаться в нем, как это было в прежних версиях. И еще одно
облегчение для программистов ActiveX: теперь можно читать идентификаторы GUID и
соответствующие им типы по именам, присвоенным системным реестром (если таковые
имеются). Подобные функции безусловно помогут шире распространить
программирование ActiveX/OLE.
Усовершенствования интерфейса Одно из традиционных
преимуществ Microsoft C++ для программирования Windows-приложений заключается в
том, что этот язык предоставляет доступ к самым последним и лучшим элементам
управления интерфейсом пользователя. Версия 6.0 продолжает эту традицию. Ее
новые классы MFC содержат новые компоненты из Windows 98 и Internet Explorer
4.0. Такие классы, как CDateTimeCtrl (новый элемент управления выбором
даты/времени), CMonthCalCtrl (новый элемент управления календарем) и
CPropertySheetEx (таблицы свойств в стиле Windows 98), гарантируют доступ к
самым последним усовершенствованиям пользовательского интерфейса. Кроме того,
новые классы MFC включают поддержку программирования для Интернета. Так, класс
CHttpServer теперь поддерживает запись данных на сервер, а класс
CInternetSession обладает улучшенной поддержкой программирования с
использованием cookies. Около двух дюжин классов MFC модернизированы, а многие
распространенные элементы пользовательского интерфейса, такие, как поля со
списком, индикаторы процессов и списки изображений, стали иначе выглядеть.
Новая среда программирования Visual C++ 6 сочетает простоту применения с
технологией автоматизации процессов IntelliSense, которая позволяет
программировать с помощью MFC, ATL или специальных методов, не набирая весь код
самостоятельно.
Поддержка Windows DNA Как и другие инструменты
семейства Visual Studio, Visual C++ 6 предлагает великолепную интеграцию с
компонентами серверного ПО Microsoft Back Office, в том числе Microsoft SQL
Server 6.5 (он входит в состав комплекта Developer Edition), Microsoft
Transaction Server и Microsoft Message Queue Server. Эти и другие серверные
технологии входят в архитектуру Windows Distributed interNet Application (DNA).
Их объекты представляют собой объекты COM/DCOM, и так как Visual C++ отлично
поддерживает программирование с использованием модели СОМ, его можно применять
для создания приложений, задействующих самые свежие и совершенные технологии
Microsoft. Для крупных организаций мастер кластеринга позволяет создавать код,
способный эффективно использовать многопроцессорные аппаратные платформы. Кроме
того, в распоряжении разработчиков есть модули Microsoft Management Console (MMC
- главное средство управления приложениями Back Office в составе Windows NT 4
Option Pack, которое перейдет во все системы администрирования будущей версии
Windows NT). Разработчик может написать спецификацию ММС для кода, который будет
функционировать с существующей консолью.
Новая поддержка ATL Даже те, кто поначалу не
планирует применять все эти технологии DNA, могут опереться на компоненты для
создания кодов многократного использования. Основой компонентного проектирования
в Visual C++ служит технология ActiveX, которая в свою очередь опирается на СОМ.
Visual C++ - предпочтительный инструмент создания самых компактных и эффективных
компонентов с применением ActiveX Template Library (ATL). Он позволяет создавать
компоненты ATL нескольких типов - от стандартных элементов веб-приложений до
серверных компонентов ATL и даже составных элементов управления (в которых
используются другие компоненты). ATL-программирование никогда не было простым
делом, однако версия 6 впервые делает его доступным для большинства
программистов на С++.
Сначала AppWizard предлагает широкий выбор элементов управления ATL, которые
могут быть файлами DLL, EXE и даже службами Windows NT. Затем к этим компонентам
добавляются конкретные объекты ATL, в качестве которых могут выступать элементы
управления для веба (полные или облегченные) или элементы Internet Explorer.
Наконец, можно добавить средства управления базами данных и даже воспользоваться
преимуществами новых приложений Microsoft Back Office, таких, как Microsoft
Transaction Server.
Дополненный инструмент ClassView автоматически обеспечивает все возможности
управления элементами классов, методами, обработчиками сообщений и точками
сопряжения. В предыдущих версиях Visual C++ главной трудностью программирования
с применением ATL была недоступность инструмента MFC ClassWizard (так как
элементы ATL не опираются на традиционные функции управления MFC). При
тестировании новой версии мы обнаружили, что программирование с применением ATL
столь эффективно обходит инструмент ClassWizard, используемый для MFC, что
старый инструмент нам не понадобился. ATL-программирование требует интенсивной
работы с СОМ. Однако инструмент ClassView автоматизирует написание интерфейсов
IDL и C++-прототипов для создания ATL-компонентов.
Благодаря новому набору ATL-функций, включая исчерпывающий каталог
веб-элементов и технологий Microsoft Back Office, программисты станут все чаще и
чаще обращаться к библиотеке ATL. Вместо того, чтобы применять ее исключительно
для простейших веб-элементов (для чего несколько лет назад и была создана ATL
1.0), разработчики будут рассматривать ATL как универсальную стратегию
компонентов для программирования в Windows.
Мощная поддержка Active Template Library в Visual C++ охватывает
разнообразные компоненты ATL, включая быстродействующие веб-элементы и
компоненты, использующие такие службы Microsoft Back Office, как Microsoft
Transaction Server.
Средства работы с базами данных Чем бы ни занималась
организация, важную часть ежедневных забот ее программистов, несомненно,
составляют базы данных. Visual C++ 6.0 предлагает способ доступа к разным типам
баз данных и технологий. Последним стандартом Microsoft стал OLE DB, и примеры
кодов Visual C++ 6.0 позволяют приступить к написанию проводников OLE DB,
приложив гораздо меньше усилий. Новый класс форм в MFC, называемый
COleDBRecordView, дает возможность просматривать записи базы данных OLE DB в
приложениях MFC.
Вкладка Database Explorer в Visual C++ продолжает оставаться мощнейшей
функцией, а с введением поддержки Oracle 8 круг разработчиков, использующих
продукт для создания и администрирования баз данных, расширится еще больше.
Помимо широкой поддержки отображения и моделирования баз данных SQL Server 6.5,
в него добавлены средства визуального составления запросов и написания и отладки
хранимых процедур. Неоценимую помощь оказывает поддержка отладки SQL-программ. В
процессе тестирования мы не встретили трудностей при написании и пошаговом
выполнении операторов SQL в среде Visual C++. Кроме того, программа выполняет
синтаксический разбор SQL. Опция построения схемы позволяет документировать
конструкцию базы данных, и, что еще важнее, этот документ можно применять для
создания и управления соответствующими таблицами и отображениями базы данных,
включая, где это возможно, объединения и триггеры.
С появлением поддержки баз данных Oracle среда Visual C++ 6 позволяет
программистам баз данных проектировать и манипулировать схемами баз данных,
включая дистанционную отладку SQL на сервере.
Средства разработки корпоративных приложений Кроме
коллективной разработки, Visual C++ 6 (и Visual Studio) в редакции Enterprise
Edition обеспечивает хранилище объектов, которым могут пользоваться все
разработчики организации. Это еще один способ извлечь преимущества из
компонентов на базе СОМ и средство многоуровневой разработки компонентов.
Разработчики на Visual C++ привыкли к браузеру объектов ClassView; новая
редакция Enterprise Edition содержит Microsoft Visual Modeler, полноценный
моделировщик компонентов, основанный на опыте известного поставщика
CASE-инструментов компании Rational Rose Software. Как и в случае с другими
инструментами моделирования, Modeler позволяет создавать иерархию классов и
добавлять операции и атрибуты; затем инструмент генерирует каркасный код С++.
Благодаря этой возможности, продукт хорошо вписывается в процесс технологичного
программирования: вы создаете и документируете иерархию классов и кодируете их
по отдельности. При тестировании мы убедились в возможности импортировать в
инструмент все классы MFC. Удобный Class Wizard облегчает добавление новых
классов, причем классы можно экспортировать в Microsoft Object Repository и
импортировать оттуда.
Еще один мощный инструмент, имеющийся в редакции Enterprise Edition, - Visual
Studio Analyzer, который позволяет визуализировать (и регистрировать) все
компоненты СОМ, исполняемые на данной машине. Поскольку сложность современных
многоуровневых систем непрерывно растет, - в особенности тех, в которых
реализованы процессы типа Microsoft Transaction Server и других серверов, в
комплексе обеспечивающих надежные транзакции, - их отладка быстро становится
чрезвычайно трудоемкой. Analyzer делает процесс отладки реального времени
сложных компонентов распределенных систем доступным для простых смертных.
Microsoft Visual C++ 6.0 Enterprise Edition включает интегрированный с
классами MFS инструмент Visual Modeling для создания и документирования классов
и получения других документов, необходимых в процессе анализа и проектирования.
Выводы Visual C++ 6, сочетающий передовые и простые
в применении средства с мощными дополнениями для корпоративного
программирования, неизбежно станет обязательным апгрейдом для пользователей
предыдущих версий. Он доводит компиляторы и инструменты С++ до совершенства и
делает этот язык доступным для более широкого круга программистов и организаций.
Пока существует операционная система Windows, такие инструменты, как Visual C++
6, будут обеспечивать самый быстродействующий код и самый широкий доступ к ее
передовым функциям. Так что в обозримом будущем роль С++ вряд ли уменьшится.
|