Рецензия

Андрей Колесов

Биллиг В. А., Дехтярь М. И., VBA и Office 97. Офисное программирование. - М., Издательский отдел “Русская редакция” ТОО “Channel Trading Ltd.”, 1998. - 720 с.

Скажу сразу: это очень полезная книга, можно не сомневаться, что придется печатать дополнительный тираж. Она является уже вторым изданием “Русской редакции” на тему программирования в Office 97 (см. PC Week/RE, № 12/98, с. 61), но если пользователь спросит, какую книгу купить, то следует однозначно ответить - обе. Причем человеку, впервые столкнувшемуся с программированием на VBA, лучше начать чтение со второй.

Книга состоит из трех частей: “Объекты Office 97” и “VBA”, “Ядро VBA”, “Офисное программирование”. В первой части рассказывается об основных объектах - Word, Excel, Access, PowerPoint, Assistant и др. Вторая знакомит с основами и деталями программирования на VBA - созданием проектов и организацией их интерфейсов, разработкой на VBA собственных классов, динамических типов данных и т. д. В третьей части даются практические примеры создания различных офисных приложений.

На мой взгляд, было бы целесообразнее поменять местами первые две части: очевидно, что сначала нужно познакомиться с программными конструкциями, а уже потом демонстрировать с их помощью работу с различными объектами. В качестве замечания можно также указать на характерное для изданий отечественных авторов отсутствие предметного указателя.

Однако, дав такую краткую оценку книги, хотелось бы более подробно остановиться на более общих вопросах учебно-методической литературы по довольно новой теме - “разработка приложений в среде Office 97”. Это представляется тем более актуальным, что рецензируемая книга - первое издание на данную тему отечественных авторов.    

Как объять необъятное

Дело в том, что современные инструменты программирования (и VBA не исключение) являются чрезвычайно многофункциональными системами и некое единое, всеобъемлющее их описание представляется задачей просто нереальной. В США этот вопрос решен, поскольку на рынке всегда присутствует огромное число книг (например, по VB постоянно имеется в продаже несколько десятков), появляющихся практически одновременно с выходом самого продукта, не говоря уже о массовом потоке статей в периодических изданиях.

У нас такой литературы существенно меньше, и поэтому с особой остротой стоит вопрос о четком позиционировании книги, которое дало бы читателям ясное представление, какие вопросы остались за пределами внимания авторов этого издания. Что касается VBA, здесь градация книг по принципу “для начинающих” или “для профессионалов” не очень подходит. Сама технология разработки на основе Office компонентов достаточно нова, а с языком Visual Basic многие профессионалы раньше не были знакомы. Новички в программировании при работе с этим инструментом также должны сразу брать быка за рога - объекты, методы, свойства, элементы управления, ActiveX и пр. В данном случае представляемая книга будет полезна и профессиональным разработчикам, и системным администраторам, и опытным пользователям, желающим автоматизировать операции в Office.

Однако как раз с точки зрения общего представления VBA в книге заметен ряд методических упущений, мешающих читателям получить законченную целостную картину комплекса VB - VBA - Office.

Сконцентрировавшись вслед за авторами на вопросе “офисного программирования”, читатели могут упустить из виду тот важный факт, что VBA является автономным компонентом, входящим в состав Office 97 (см. PC Week/RE, № 25/97, с. 33). Это значит, что существуют VBA и технология его применения на основе некоторой модели объектов и имеются приложения Office 97 как конкретный набор иерархии объектов, на примере применения которого и построена книга. Очень важно, что эти объекты доступны всем инструментальным средствам, поддерживающим модель COM/ActiveX (VB, VC++, Delphi и пр.).

Говоря о VBA, авторы не обратили внимания читателей на то, что речь идет о его версии 5.0. В результате VBA производит впечатление какого-то огромного средства, появившегося вдруг, каким-то чудодейственным образом. В то же время VBA 5.0 представляет собой знаковое явление: он ознаменовал слияние внутренних средств программирования офисных приложений, присутствовавших еще в Office 6.0, и Visual Basic, имеющего еще более длинную историю.

В этом плане следовало акцентировать внимание на том факте, что VBA является лишь специфической редакцией семейства VB. Нужно подчеркнуть, что это вообще не программный продукт, а некоторое обобщенное название вариантов VB, используемых как средство внутреннего программирования отдельных приложений (хотя ему доступны и внешние объекты), в котором объекты данной программы определены как внутренние. Именно поэтому в американской литературе вообще избегают использования термина VBA и предпочитают название “VB для Office 97”. Более того, даже в Office 97 пользователи имеют дело фактически с несколькими вариантами VBA для каждого приложения.

При таком акценте читатель мог бы составить более четкое представление о своем развитии в качестве разработчика.

Пространственно-временное позиционирование VBA имеет важное практическое значение. Это хотелось бы проиллюстрировать на таком примере из книги (с. 219): “Познакомившись с динамическими массивами в VBA, мы поразились наличию в Бейсике столь мощного средства, отсутствующего, например, в Си++ и Паскале... динамические массивы появились в VC++ и Delphi. Теперь они есть и в VBA, но удивительно то, что документация не отражает всех их возможностей”.

На самом же деле динамические массивы появились в Бейсике еще в середине 80-х годов. И документация по VB слабо освещает эти возможности совсем неслучайно. При всей своей новизне VB во многом основывается на фундаменте его DOS’овского предшественника - QuickBasic. Документация и новые книги по VB посвящены главным образом великому множеству новшеств системы и часто имеют прямые ссылки по многим вопросам к литературе “тех времен”.    

Пора избавляться от комплексов

Не очень приятное впечатление оставляет регулярное упоминание в книге понятия “большие языки типа Си или Паскаля”. Хотя авторы таким образом показывают, что VBA имеет их функциональные возможности, у читателя может появиться ощущение некоторой неполноценности VBA (а может быть, даже и собственной). Такой подход тем более неверен, что часто в качестве новшеств VBA указываются средства, давно в VB существующие. Впрочем, это весьма характерная реакция профессионалов, имеющих опыт работы с “большими языками”, но лишь сейчас обнаруживших, что VB - это совсем не тот примитивный язык начала 80-х годов.

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

При этом важно подчеркнуть, что функциональность VBA определяется не характеристиками языка Бейсик, а позиционированием системы с точки зрения ее создателя - Microsoft. В этом плане сравнение VBA с абстрактными языками (Си, Паскаль), вообще, не совсем корректно - было бы правильнее говорить о таких же законченных инструментах, например VC++ и Delphi.    

VB как язык программирования

При знакомстве с книгой создается впечатление, что, будучи сильными методистами и знатоками “больших языков”, авторы не очень четко расставили акценты при описании VB как языка программирования. Порой много внимания уделяется второстепенным вопросам, в том числе явным рудиментам языка, и в то же время не упомянут ряд интересных для программиста тем. Например, жаль, что хотя бы очень кратко не обозначены возможности использования Win32 API.

Следовало бы особое внимание уделить демонстрации профессионального стиля программирования. В последнее время в американской литературе превалирует использование довольно примитивных линейных фрагментов повторяющегося кода вместо более компактного и наглядного использования циклов, выделения общих фрагментов в виде подпрограмм и пр. К сожалению, эта тенденция заметна и в примерах рецензируемой книги. К тому же в ней не всегда четко выдержано внешнее оформление листингов примеров (выделение структуры программы, использование названий переменных). Не менее странным выглядит и высказывание авторов о том, что “комментарии [в тексте программы]... необходимы как признак "хорошего тона"”.

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

Телефон издательства “Русская редакция”: (095) 145-4519, E-mail: rusedit@online.ru.

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