РЕЦЕНЗИИ
Король В. Н. Visual Basic 6.0, Visual Basic for Applications 6.0. Язык программирования. Справочник с примерами. Издание второе, исправленное. М.: КУДИЦ-ОБРАЗ, 2000. - 448 с.
Эта книга - действительно очень полезное пособие для тех, кто занимается разработкой в среде как автономного Visual Basic, так и Visual Basic for Applications, входящего, в частности, в состав офисных приложений Microsoft. Автор сознательно ограничил свою задачу созданием систематизированного справочника по самому языку программирования, выведя за рамки обсуждения многочисленные вопросы работы в среде VB, создания визуального интерфейса и пр.
Основной объем книги занимает последовательное (в алфавитном порядке) описание всех элементов языка, а также довольно подробный рассказ об объектной модели FileSystemObject. Конечно, эту информацию можно найти в электронной справке, но кроме сугубо официальных сведений, имеющихся в документации, автор приводит свои собственные конкретные примеры, рекомендации и маленькие хитрости программиста, а также поправки к справочной системе, которая не лишена ошибок.
Изучение книги будет полезным и для опытных VB/VBA-программистов - они наверняка найдут в ней функции, о существовании которых раньше не подозревали. Безусловный интерес представляют также разделы, посвященные группированию элементов языка по функциональному назначению, общим принципам написания VBA-приложений, а также примеры полезных программ.
Однако, рекомендуя книгу VB/VBA-разработчикам, следует сделать несколько важных замечаний.
Автор, безусловно, прав, говоря о том, что приведенные в книге сведения годятся как для VBA-, так и для VB-программистов. Однако было бы крайне полезно более четко рассмотреть структуру этого инструмента, чтобы читатели лучше поняли, о какой его части ведется рассказ. К сожалению, введение под названием “Что такое Visual Basic” не столько кратко, сколько весьма запутанно отвечает на данный вопрос.
А на самом деле это можно сделать довольно просто, внимательно посмотрев на содержимое используемых компонентов в окнах Object Browser и References. Так, в среде автономного Visual Basic видно, что эта среда использует три обязательные библиотеки - VBA, VB (встроенные объекты и процедуры) и VBRUN (пополнение к VB). А среда программирования в офисном приложении включает только библиотеку VBA плюс библиотеки объектов данного приложения. Соответственно в книге речь идет только об элементах, включенных в общую библиотеку VBA.
Тут было бы также полезно немного сказать о принципах расширения функций среды программирования за счет подключения дополнительных библиотек объектов. Это важно хотя бы для того, чтобы читатели поняли, например, что объект Printer является встроенным в VB и не может быть подключен к VBA, а объект ADO доступен для обеих систем.
Систематическое изложение элементов языка наглядно демонстрирует явную функциональную перегруженность VB/VBA, наличие большого числа дублирующих функций и конструкций, а также путаницу, создаваемую легкомысленной идеей о допущении неявного преобразования данных. Помимо того, что все это усложняет описание и изучение языка, появляется риск снижения надежности создаваемых программ (например, два альтернативных варианта реализации одного алгоритма могут приводить к разным результатам).
Понимание многих функций языка VB требует более детального изучения некоторых основ реализации данной системы. Иначе описание, выхваченное из контекста общей проблемы, может просто ввести пользователя в заблуждение. В качестве такого примера можно привести большую группу функций обработки строковых переменных, применение которых требует хорошего понимания принципов кодировки ANSI и Unicode. В книге по этому вопросу дается фактически перевод весьма двусмысленных фрагментов оригинальной документации. (По этому вопросу рекомендую посмотреть статью “Особенности работы со строковыми переменными”, опубликованную по адресу: www.microsoft.ru/msdn/library/kolesov.)
К сожалению, исправляя погрешности исходной документации, в ряде случае автор в своих комментариях дает весьма сомнительные рекомендации, а иногда и просто допускает ошибки. Например, его утверждение о том, что VB/VBA не использует опцию “При вводе двух цифр года использовать интервал столетия”, является неверным. Трудно также согласиться с автором в том, что скорость обработки многомерного массива зависит от порядка использования его индексов.
И все же, несмотря на отмеченные недостатки, хочется еще раз порекомендовать VB/VBA-разработчикам внимательно изучить книгу, а автору пожелать поскорее подготовить ее следующее издание.