Book_cover Александр Силонов

Рецензия на книгу:
А. Павлов. CGI-программирование: учебный курс. - СПб.: Питер, 2000. -- 416 с.: ил.

Несмотря на участившиеся нотки разочарования и скепсиса в публикациях по поводу развития электронной коммерции и Интернет-экономики, эти отрасли продолжают интенсивно развиваться, а спрос на квалифицированных Web-дизайнеров и программистов остается высоким. При этом становится все более очевидно, что перспективные Web-проекты немыслимы без применения программных технологий, способных превратить сайт в высокоинтеллектуальное приложение. Одна из таких технологий - CGI (Common Gateway Interface, общий шлюзовый интерфейс). Именно ей посвящен учебник Алексея Павлова, выпущенный издательством "Питер" в 2000 г. в серии "Учебный курс". Автор справедливо жалуется на недостаток русскоязычной литературы на тему CGI и делает попытку исправить этот пробел.

Книга предназначена для Web-мастеров, обладающих навыками разработок на HTML и программирования (желательно на C/C++, а также JavaScript) и желающих научиться создавать полнофункциональные гибкие Web-приложения.

Как и большинство пособий из серии "Учебный курс", данная книга разбита на два десятка глав-уроков. По замыслу автора, первая часть курса (семь начальных "уроков") посвящена освоению теоретических и практических основ, необходимых для CGI-программирования. Здесь с помощью схем поясняется сущность процессов, происходящих между Web-сервером и клиентом при использовании механизма CGI, дается краткое введение в один из основных инструментов CGI-программирования -- язык Perl, рассказывается об отладке CGI-сценариев и использовании в них параметров и переменных среды CGI. В первой части описана также работа с формами, входящими в состав HTML-документов, и с графикой, даны относительно простые примеры создания наиболее распространенных Web-приложений -- протоколов и счетчиков посещений сайта, гостевых книг, систем опроса посетителей.

Вторая часть курса посвящена подробному разбору решения этих же и более сложных задач. Читатель учится управлять доступом к серверу, конфигурировать сервер, создавать системы электронной почты на базе SMTP и POP3, чаты, поисковые системы, приложения, работающие с СУБД, FTP-клиенты. В отдельных главах анализируются вопросы обеспечения безопасности, оптимизации работы сайтов, использования языков Shell и C для создания CGI-сценариев и т. п. Таким образом, оказываются охваченными наиболее важные и часто встречающиеся проблемы применения технологии CGI.

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

Чтобы избежать сухости и наукообразия в подаче довольно непростого материала, Алексей Павлов (по примеру многих западных авторов) прибегает к неформальному, "демократичному" стилю изложения. Вообще это неплохой прием, но в данном случае автору (да и редактору) зачастую изменяет чувство меры, так что вместо упрощения получается развязная болтливость (иногда на уровне маргинальных участников конференций Fido), не помогающая восприятию и даже уводящая от сути. Речь идет о таких, например, пассажах: "можете не забивать себе голову всей этой ерундой", "занимаясь перекачкой из Интернета всякой (извиняюсь) %*&#@, вы, возможно, и не задавались некоторыми вопросами, а зря...", "у некоторых тупых юзеров не хватает ума, чтобы сменить кодировку" и т. п.

Вообще из-за обилия деталей, характерных для устной речи, местами создается впечатление, что книга представляет собой расшифровку записи лекции (недаром главы названы уроками!) или даже беседы. Структура пособия несколько хаотична -- вперемежку излагаются достаточно общие концептуальные вещи и подробности выполнения конкретных практических задач. В главе, посвященной введению в язык Perl, автор не утруждает себя и читателя строгим описанием синтаксиса, а приводя таблицы операторов, правил и т. п., признается, что "набросал их по памяти" или "привел некоторые функции". При освоении некоторых тем читателю, возможно, будет недоставать логического контекста, многое придется постигать на основе только примеров, причем не всегда досконально поясненных. Зачастую автор сообщает, что для понимания того или иного аспекта необходимо ознакомиться с дополнительными источниками, но не приводит ссылок на такие источники.

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

На случай, если автор готовит второе издание этого весьма неплохого пособия (или новую книгу), хочется посоветовать ему четче структурировать материал, более строго подходить к формальным описаниям рассматриваемых объектов, приводить ссылки на источники, необходимые для понимания, но выходящие за рамки книги, а также (хотя, разумеется, это дело вкуса!) отказаться от слишком ощутимого высокомерного взгляда "крутого юниксоида" на "жалких ламеров" и не злоупотреблять профессиональным жаргоном, не очень уместным для печатного учебного пособия.

Напоследок отметим, что, подобно многим недорогим пособиям, издаваемым "Питером", книга не комплектуется компакт-диском с листингами, зато эти листинги можно найти на сайте издательства (http://www.piter-press.ru).