Интересно, читают ли рецензии на книги в издательствах, которые эти книги издают? Если нет, то почему, а если да, то какие именно  -  все или только хорошие? Право же, мне очень хочется понять, почему в некоторых книгах повторяются одни и те же ошибки.

      

Недавно я писал отзыв о книге "Visual C++. Книга для программистов" (PC Week/RE, № 6/97, с. 56). В нем я посетовал на то, что у нас мало издается книг о работе с Microsoft Visual C++ 4.0. И вот мне в руки попадается русский перевод книги Дэвида Круглински, выпущенный "Русской редакцией"*. Как написано в аннотации, это  -  настоящий учебник по программированию на Visual C++ с использованием библиотеки классов MFC. Действительно, лучшего руководства по работе с Visual C++, будь то версия 1.5 или 4.0, мне не встречалось (я имею в виду оригинальные издания Microsoft Press), потому что ее автор  один из разработчиков Visual C++. Конечно же я с интересом прочел русский перевод.

      

Это издание по праву может считаться не просто учебником, но и энциклопедией по Visual C++ 4.0, ведь в нем собрано все  -  от описания студии разработчика (Microsoft Developer Studio) до основных приемов создания различных типов приложений с использованием библиотеки классов MFC. Здесь можно найти ответ практически на любой вопрос  -  в книге 29 глав и 3 приложения, богато иллюстрированных рисунками и текстами программ, причем значительная ее часть посвящена OLE, и, самое главное,  -  к книге прилагается компакт-диск с исходными текстами и программами, приведенными в отдельных главах. Хочется отметить, что это издание  -  одно из немногих российских изданий, к которому действительно прилагается компакт-диск. В общем, не книга, а клад для программиста, и все было бы хорошо, если бы не+

      

Да-да, я об ошибках. Почему-то переводные книги по программированию, изданные "Русской редакцией", местами похожи друг на друга, как близнецы-братья: фразы, словосочетания... Понятно, что переводчики пользуются словарем, который принят в редакции, но почему этот словарь содержит такие странные термины? Еще в отзыве о книге "Windows для профессионалов" (PC Week/RE, № 10/96, с. 8), тоже изданной в "Русской редакции", я с недоумением говорил о всяческих "кучах", "жуках" и т. д. и т. п. Открыв книгу "Основы Visual C++", я снова увидел старых знакомых, к которым добавились новые. Именно поэтому я и начал свою статью с вопроса, который кому-то может показаться риторическим.

      

Понятно, что для некоторых оригинальных терминов иногда очень трудно найти соответствующий эквивалент, но ведь можно и постараться. А то получается так: открываешь титульный лист и читаешь подзаголовок "Стандарты программирования с использованием библиотеки классов MFC". В "Толковом словаре русского языка" С. И. Ожегова стандарт определяется как образец, которому должно соответствовать какое-либо изделие. Очевидно, что переводя таким образом подзаголовок оригинала "Standard reference for programming with Microsoft Visual C++ version 4", переводчик хотел выразить свое отношение к книге как к своду законов для программиста; но согласитесь, что перевод не совсем правильный, к тому же программирование  -  процесс творческий, хотя и использующий в ряде случаев стандартные приемы.

      

Чем дальше, тем интереснее. "Старые знакомые" появляются уже в оглавлении: в главе 9 я увидел название раздела, начало которого может порадовать тех немногих, я надеюсь, противников Windows, которые еще остались,  "Куча Windows и семейство функций GlobalAlloc". Представьте себе, где-нибудь на пустыре лежит такая большая куча Windows+ Следующий раздел имеет похожее название  "Куча библиотеки С периода выполнения+" В общем, без куч программисту никак не обойтись.

      

Или, например, приложение Б имеет название "Функции карт сообщений в MFC". В принципе это почти дословный перевод оригинала  -  "Message Map Functions+", хотя не совсем удачный, потому что в приложении описываются Windows-сообщения и прототипы функций, которые этим сообщениям соответствуют и обрабатывают их, но об этом можно узнать только в четвертой главе.

      

У меня создалось впечатление, что при переводе одним из правил было: "Хочу  -  перевожу, а не хочу  -  не перевожу или перевожу, как хочу", иначе чем объяснить, что Web-узел (site) корпорации Microsoft называется калькой "сайт", а в главе 8 при описании характеристик OLE-контейнера для того же термина дан перевод  -  "поле". Или другой пример: в главе 4 в разделе, посвященном сообщению WM_NCDESTROY, сказано: "Обязательно используйте эту функцию базового класса" (имеется в виду функция OnNcDestroy), хотя в оригинале предупреждают о том, что если приложение обрабатывает это сообщение, то в производной функции надо не забыть вызвать функцию базового класса.

      

И такие "ляпы" в книге можно встретить не один раз. Понятие COM (Component Object Model) почему-то переводится как "модель многокомпонентных объектов", а не "модель составных объектов" (пусть кто-нибудь покажет мне, где в английском названии есть что-то про "много"!). Ну а если переводчик встречает фразу "it probably indicates a bug in your program", то в переводе без "жучка" не обойдется, и эта фраза будет переведена как "скорее всего, в вашей программе "сидит жучок"".

      

Конечно, не все так плохо, как кажется. Во-первых, ошибки чаще встречаются в первых главах (наверное, переводчики потом все же "вчитались" в текст), а во-вторых, в книге при переводе были найдены и отмечены ошибки оригинала, о чем свидетельствуют сноски в некоторых разделах. Но, исправляя чужие ошибки, издатели умудрились добавить свои: на стр. 63 вместо строки pDC->SelectObject(&newPen) появилась строка pDC->SelectStockObject(&newPen), а на стр. 154 перепутано назначение полей "Каталог таблиц страниц" и "Таблица страниц" в рисунке 9-2.

      

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

      

По-моему, это все  -  отговорки. Книга, как осетрина, не бывает "второй свежести", она должна быть только хорошей и никакой другой.

      

* Дэвид Дж. Круглински. Основы Visual C++. Стандарты программирования с использованием библиотеки классов MFC/Пер. с англ.  -  М.: Издательский отдел "Русская редакция" ТОО "Channel Trading Ltd.", 1997.  -  696 с., ил.

      

Алексей Роговцев

      

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