Лу Гринзоу. Философия программирования для Windows 95/NT. Пер. с англ. Я. Межерицкого. Спб., Символ Плюс, 1997.  -  640 с.

 

Компьютерное издательство “Символ Плюс” порадовало читателей, тяготеющих к творчеству на компьютере, незаурядной книгой. Философские проблемы современного программирования и интересно рассказанные комические и трагические случаи из жизни программиста и знаменитых компьютерных фирм перемежаются в ней с прозой листингов программ и множеством практических советов по разработке Windows-приложений. Ее автор Лу Гринзоу известен как специалист в области программирования для Windows, за его плечами солидный опыт работы в ведущих компьютерных периодических изданиях, в том числе PC Week, Dr. Dobbs Journal и др.

 

Книга состоит из 16 глав, объединенных в четыре части: “Основы”, “Практика”, “Великий перевал” и “Ресурсы”. Достаточно подробно составленное оглавление и предметный указатель (почему-то названный “алфавитным указателем”) позволяют использовать ее в качестве справочника. Три приложения включают листинги довольно объемной программы MegaZero, написанной на С++, “Конспект программистских небылиц” и необычное предложение в виде макета оригинальной библиотеки Win32u, содержащей интерфейсные функции. По замыслу автора, такая библиотека должна решить проблему несовместимости поведения функций Win32 API на трех 32-разрядных платформах: Win32s, Windows 95 и Windows NT. Для практического использования рассматриваемых в издании программ требуется знание языка Си++ и библиотеки MFC.

 

Интересно, что автор не ограничивается анализом опыта работы с одним компилятором. Он дает замечания, рекомендации, прослеживает тенденции развития инструментальных средств, библиотек функций (MFC, OWL, VCL) и профессионально критикует ведущие в этой области фирмы  -  Microsoft и Borland. С учетом сложности и громоздкости современных инструментальных пакетов, позволяющих программировать под Win95/NT, это непростая задача, требующая больших усилий и временных затрат. Л. Гринзоу в изобилии снабжает читателя советами, рекомендациями и инструкциями. Инструкции весьма детальны  -  например, по работе с компилятором Visual C++, к сожалению (на сегодняшний день), устаревшей версии. Однако следует иметь в виду: прогресс в компьютерной области столь заметен, что написать (а затем и перевести на другой язык) хорошую солидного объема книгу и при этом представить должным образом в ней новейшие программы практически невозможно.

 

Весьма ценно, на мой взгляд, и то, что автор предоставляет не только информативный материал, но и результаты своих исследований программного обеспечения в Win95.

 

В заключение Гринзоу анализирует более десятка программ и систем, таких, как Windows NT и Device Driver Kit фирмы Microsoft, Orpheus фирмы TurboPower и др. В результате читатель получает рекомендации по выбору программы или инструментального пакета. Небезынтересна глава, в которой дан подобранный и проаннотированный автором список дополнительной литературы.

 

Для обладателей 16-разрядных программ собственной разработки будут полезны предлагаемые Л. Гринзоу способы переноса их кода в среду Windows 95. Проводя сравнение между 16- и 32-разрядными операционными средами, автор замечает, что 16-разрядный процесс не может создавать новые потоки. И наоборот, ряд функций Win32, поддерживающих диалоговые и другие компоненты, обладает такой возможностью: они создают новые потоки от имени вызвавшего их приложения. В этом заключается одна из причин обратной несовместимости Win95 с Windows 3.xx.

 

В книге много любопытных идей, проиллюстрированных на уровне листингов программ и их фрагментов. Так, в отдельной главе анализируются свойства длинных имен файлов. Автор в деталях рассматривает процедуру работы приложения с такими именами (это может оказать помощь при разработке программ) и предлагает включать параметры командной строки в длинные имена файлов, используя функцию Win32 API GetCommandLine(). Эта функция возвращает указатель на всю командную строку в “необработанном” виде.

 

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

 

Недостатки этой книги в основном относятся к переводу, который местами напоминает небрежно сработанный подстрочник, а временами кажется, что за перевод взялся мастер детективного жанра: здесь с удивлением и, к сожалению, без труда на одной странице (например, 359) можно обнаружить такие перлы, как “ковыряние исходного кода MFC”, “копание в исходных текстах” и, наконец, “махинации со внутренностями такой библиотеки, как MFC или OWL”. Можно биться над разгадкой, что же такое “замкнутость” и “замкнутая” программа, созданию и оригинальному использованию которой целиком посвящена глава 11. Поломав голову и просмотрев (к счастью, не переведенные) листинги фрагментов такой программы, приходишь к выводу, что речь, очевидно, идет об известном методе зацикливания программы. Зацикливание программы автор предлагает с несколько необычной целью  -  для защиты (от любопытного ока в перерывах между работой) информации в громоздких (с длительной перезагрузкой) Windows-приложениях.

 

К книге, насыщенной примерами интересных программ, не прилагается дискета или CD-ROM. Взамен читателю предложено заглянуть на Web-сервер по адресу: http://www/symbol/ ru/russian/library/prof_prog, где к каждой главе можно подобрать исходные тексты полезных программ. Думается, что эти программы, проверенные с помощью компилятора Microsoft Visual C++, вместе с подробными комментариями, которыми наполнено издание, могут помочь в разработке хороших 32-разрядных приложений для Windows 95/NT.

 

Александр Чубуков

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