Win95: “Программа будет закрыта... обращайтесь к разработчику”
Петзолд Ч. Программирование для Windows 95. С-Пб., “BHV - Санкт-Петербург”, 1997. - В двух томах: Т. I - 752 с., Т. II - 350 с.
Петербургское издательство “BHV” выпустило в свет несколько необычную книгу. Актуальность появления этого труда на первый взгляд может вызвать сомнения или по крайней мере дискуссию, тему которой можно сформулировать, скажем, так: “На каком языке писать программы для Win95?”. Более того, некоторые программисты, освоившие хотя бы один из современных языков визуального программирования (Visual Basic, VC++, Delphi, Power Builder или аналогичный), наверняка усмехнутся, узнав концепцию автора: ведь он предлагает читателю спуститься на несколько ступенек вниз и освоить классическое программирование для Windows 95 не на визуальном языке или хотя бы Cи++, а на обычном (даже не объектно-ориентированном) языке Си в сочетании, конечно, с базовыми функциями API. А ведь известно, что программирование на этом языке для Windows весьма трудоемко, требует высокой профессиональной подготовки и в последнее время, в связи с появлением и развитием инструментальных систем типа RAD (Rapid Advanced Development), предназначенных для быстрой разработки приложений на основе объектно-ориентированного программирования в визуальных средах, разработчиками приложений, как правило, не используется. В самом деле, зачем писать довольно сложную и громоздкую программу на Си для организации, например, оконного приложения, если в визуальной инструментальной системе (скажем, Delphi) достаточно двух-трех движений и нажатий кнопки мыши, чтобы открыть новое окно или поместить в него сложный (например, какой-нибудь красивый, многофункциональный, эффектно ниспадающий календарь лет эдак на сто) или совсем простой (обычную кнопку “Стоп”) компонент. Правда, потом, быть может, придется заново определить свойства этих компонентов, написать несколько (иногда меньше, иногда больше) строк кода, например, для обработки события, вставить этот код в соответствующий метод, проделать еще несколько манипуляций в инструментальной среде - и программа (или ее часть), работающая в Win95, готова! При этом скорость создания программ на визуальном языке и эффектность оформления производят, как говорится, неизгладимое впечатление не только на дилетантов-пользователей, но даже и на опытных программистов-профессионалов, до сих пор творящих в старой доброй среде DOS. Однако профессионалы, создающие информационные системы или иные нетривиальные приложения в ОС Win95, знают, что внешний эффект в большинстве случаев обманчив. Для того чтобы созданная программа заработала на должном функциональном уровне без сбоев, без непонятных пользователю, возникающих чуть ли не при каждом нажатии клавиши или мыши сообщений (которыми, как известно, “снизу доверху” наполнена Windows), разработчик должен затратить немало сил и времени на написание надежного кода независимо от инструментальной среды, в которой ведется разработка. За примерами далеко ходить не нужно: чего стоило многим пользователям (да и программистам) постоянно возникавшее в Windows 3.1x сообщение “General protection fault”. В Win95 количество подобных сообщений стало меньше, но при работе того или иного приложения (в том числе и разработанных фирмой Microsoft) время от времени все же появляется малопонятное (думаю, многим) сообщение типа “Access violation...”, в котором затем дается адрес ячейки с ее содержимым, или еще более грозное на русском: “Программа выполнила недопустимую операцию и будет закрыта” - и далее совсем сбивающее с толку даже самого бывалого и хладнокровного: “Обращайтесь к разработчику...”. Что это за операция такая, приходится только гадать, и где проживает этот самый разработчик - тоже. Так вот, с тем чтобы не приходилось пользователю программы-приложения ломать голову, как “обратиться к разработчику” и что за этим последует, или по крайней мере не столь часто задумываться над подобными сообщениями, и необходимы доскональные знания нижнего уровня Win95, которыми наполнена двухтомная монография Ч. Петзолда.
Автор прежде всего стремится дать читателю основы разработки приложений для Win95, чему и посвящен внушительный первый том. Этот том представлен тремя частями, включая введение. В нем подробно рассматриваются аспекты программирования при работе с клавиатурой, мышью и таймером.
Во втором томе, состоящем из двух частей, анализируются многозадачность и многопоточность, даются подробные сведения, как управлять памятью, файловым вводом-выводом и принтером. Отдельная часть посвящена таким важным темам, как концепции DDE и OLE. К сожалению, материал по разработке OLE-приложений дан на уровне введения, но все же позволяет понять основные принципы действия этого нетривиального механизма.
Как говорилось выше, книга учит программированию приложений на языке Си для Win95 на нижнем уровне. Однако подробный анализ основных частей, компонентов этой системы, их взаимосвязей, сообщений и возникающих событий с четкими рекомендациями и многочисленными авторскими советами по их использованию позволяет воспользоваться ими при разработке Windows-программ профессионалу, обычно работающему на другом языке, скажем, на Object Pascal в среде Delphi. Автор считает, что нужно использовать опыт построения популярных программ для Windows, настоятельно рекомендует читателю их анализировать, например, при изучении принципов использования клавиатуры (с. 270) и, конечно же, советует не ограничиваться приведенными в его труде сведениями и при разработке приложений обращаться к современным визуальным инструментальным средам.
Для иллюстрации непростых аспектов, рассматриваемых в двухтомнике, приводится много исходных текстов примеров программ. Часто для более глубокого понимания того или иного нетривиального вопроса требуется скомпилировать и понаблюдать в действии соответствующую программу или ее фрагмент. Вот здесь читателю и окажет неоценимую помощь дискета с “исходниками”, распространяемая (правда, не всегда и не везде) вместе с книгой. Кстати, некоторые программы и фрагменты могут пригодиться читателю в собственных разработках. В качестве компилятора автор предлагает использовать Microsoft Visual C++ версии 4.0.
Из недостатков, кроме традиционных ошибок, связанных с переводом и касающихся главным образом терминологии, можно отметить отсутствие информации по ряду важных для программиста-профессионала аспектов, например по вводу-выводу данных через последовательный порт, созданию виртуальных устройств VxD и т. п.
Подробно составленное оглавление, наличие предметного указателя и широкий охват тем позволяют использовать этот труд не только как руководство, но и как справочник программиста-профессионала.
В конечном счете качество коммерческой программы во многом определяется профессиональным уровнем разработчика и трудозатратами. Повышению квалификации специалиста, желающего создавать хорошие конкурентоспособные программы, как раз и способствует книга Ч. Петзолда.
Александр Чубуков