Как водится, темпы развития программной индустрии намного обгоняют темпы сопутствующей сферы infoware. Но данная книга Тэда Фейсона (издательство "Диалектика", 1996 г.), описывающая последнюю версию компилятора Borland C++, работающего в среде Windows, с возможностью выбора в качестве целевой платформы как DOS (16-разрядные приложения), так Windows 3.x и Win32 (хотя и без конкретизации Windows 95 или Windows NT), "поспела" как раз к сроку из-за некоторой задержки с выходом принципиально новой, полностью 32-разрядной версии Borland C++ 5.0. Можно предположить, что в силу большого количества не самых современных персональных компьютеров в России версия BC++ 4.5 будет еще долго популярной в нашей стране.

 

Эта книга рассчитана на подготовленного пользователя. К счастью, она не представляет собой примитивную мешанину описаний интерфейсной оболочки, вызовов API-функций Windows и основ программирования на Си.

 

В 1 - 5 главах рассматривается стандарт Си++ версии 2.1, расширенный фирмой Borland. Здесь можно найти практически все  -  начиная от полного, хотя и неформального описания синтаксиса языка и кончая специфичными именно для Borland-компилятора ключевыми словами и конструкциями.

 

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

 

Помимо примеров, большинство понятий сопровождается различными схемами размещения объектов в памяти, картинками иерархических деревьев и даже текстом генерируемого ассемблерного кода для различных языковых конструкций. Это, правда, не всегда нравится профессионалам, так как делает описание машинно-зависимым. Если учесть, что книга как раз и посвящена конкретному компилятору, то такие ассемблерные "раскладки" могут весьма помочь в ситуациях, требующих, например, особой оптимизации.

 

6-я глава посвящена обработке исключений. Ключевые слова try, catch и throw, к счастью, включены в новый стандарт языка Си++, поэтому их грамотному использованию отведено около 30 страниц, в том числе и обработке ошибок в OWL 2.5.

 

На следующих 80 страницах приводится подробное описание потоков и их реализации в виде иерархии классов, причем совместимой со стандартом AT&T 3.0.

 

В 7-й главе рассматривается библиотека стандартных классов, порожденных от базового типа Object. Она содержит описание всех контейнеров, позволяющих организовывать из объектов-наследников Object самые разные структуры  -  массивы, списки, двоичные деревья, хэш-таблички, множества и т. д.

 

Однако этот подход страдает ограниченностью из-за того, что необходимо приводить все свои объекты к Object, поэтому 8-я глава описывает более прогрессивный подход, придуманный Borland. Идея его очевидна  -  теперь вместо Object-контейнеров используются шаблоны аналогичных структур, не привязанных к конкретным типам. При этом возникает ряд ограничений, например, нельзя использовать структуры b-деревьев, но векторы, массивы, различные списки могут удовлетворить подавляющее большинство запросов.

 

Наконец, вторая, меньшая часть книги посвящена непосредственно написанию программ для Windows с использованием OWL 2.5. Здесь степень подробности снижается, рассматриваются в основном базовые принципы создания "заготовок" программ, а также реализация многооконного MDI-интерфейса. Интересно, что отдельная глава посвящена такой проблеме, как создание нестандартных списков. Например, многоколоночных или состоящих из строчек текста и пиктограмм.

 

Последняя, 13-я глава посвящена разработке OLE-приложений. Написана она настолько естественным языком, что если программист, прочитавший ее, так и не поймет, что же такое OLE (версия 2.0), то он может сразу бросать свою работу и переквалифицироваться, например, в компьютерного обозревателя.

 

Подход фирмы Borland к идеологии OLE, отличающийся от подхода Microsoft, реализованного в ее библиотеке классов MFC, заключается в том, что если MFC требует указания поддержки OLE непосредственно при создании файла проекта, то Object Components Framework, новая библиотека Borland, предназначена конкретно для работы с OLE и позволяет встроить ее поддержку на любом этапе разработки. Кроме того, Borland вычленила ряд глобальных и наиболее часто используемых интерфейсов и дала программистам возможность создавать OLE-приложения на более глобальном уровне. Само ядро этой идеологии  -  DLL BOCOLE, а оболочка  -  OCF. Интересно, что использование библиотеки OCF не требует подключения OWL, поэтому ее можно использовать даже в Microsoft Visual C++!

 

Хотя OLE посвящена и не очень большая глава, но, внимательно прочитав ее, можно сразу начать писать небольшие OLE-приложения, постепенно совершенствуясь и набивая руку.

 

Конечно, эта книга рассчитана в первую очередь на профессионалов, прилично знающих С++ и умеющих программировать под Windows. Примеры подчас занимают даже больше места, чем сам текст, и это безусловное преимущество книги.

 

Кроме того, в ней часто встречаются описания различных достаточно тонких нюансов программирования на С++, таких, как приватные конструкторы, вложенные шаблонные классы, совместное использование виртуальных и невиртуальных классов при множественном наследовании, перегруженные дружественные операторы, обработка исключений в конструкторе и т. п.

 

Правда, язык перевода иногда вызывает легкое удивление. Например, как вам нравится такое название раздела: "Как OWL сливает меню"...

 

Общий смысл от этого, к счастью, не теряется.

 

Итак, эта книга представляет для настоящего профессионала весьма приятное исключение из общего потока, так что постарайтесь его обязательно обработать!

 

Сергей Бобровский

Версия для печати