На главную страницу AlgoNet В сотрудничестве с ZDNet
АРХИВ СТАТЕЙ 1999-1-20 на главную / новости от 1999-1-20
AlgoNet.ru
поиск

 

Место для Вашей рекламы!

 

Все новости от 20 января 1999 г.

Самая мощная версия C++ за всю историю языка

Введение
Весь тот ажиотаж, который окружает язык программирования 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, будут обеспечивать самый быстродействующий код и самый широкий доступ к ее передовым функциям. Так что в обозримом будущем роль С++ вряд ли уменьшится.

Microsoft Visual C++ 6.0 Enterprise Edition. Цена по каталогу — 1299 $ (апгрейд — 759 $). Microsoft Corp., Redmond, WA; 800-426-9400; msdn.microsoft.com/visualc.
Обсуждение и комментарии

Artem - yangeolsakha.ru
8 Mar 2000 9:17 AM
Заходите на http://www.mjk.msk.ru/~dron/
ьам обсуждены в практическом приенении многие аспекты данной статьи например Visual Modeler и есть один шаг с практическим описание работы.
 

Алла
22 Mar 2007 11:23 PM
Человека, который сравнивает Java с С++, иначе как дилетантом назвать нельзя.
 

 

← декабрь 1998 14  15  18  19  20  21  22  25  26 февраль 1999 →
Реклама!
 

 

Место для Вашей рекламы!