РЕЦЕНЗИИ

     Теория и практика, философия и искусство программирования для профессионалов

 

Реймонд Э. Искусство программирования для Unix. Пер. с англ. М.: Издательский дом "Вильямс", 2005. - 544 с.

Сегодня в компьютерном мире все больше внимания уделяется операционным системам (ОС) из клона Unix. Книги на эту тему не залеживаются на полках и прилавках. Однако один из сложнейших и в то же время интереснейших сегментов в этом мире - программирование - практически не попадает в поле зрения издателей (во всяком случае в сравнении с многочисленными публикациями, предназначенными для пользователей и администраторов). Может быть, как раз здесь нужно искать объяснение тому, что программирование в среде этой мощной и популярной ОС доступно далеко не каждому, в том числе и профессионалу, знающему и набравшемуся опыта в создании приложений, скажем, под Windows.

Книга Эрика Реймонда как раз и передает знания и опыт, накопленные за многие годы не только автором, но и целым поколением его коллег. Она необычна в том плане, что автор сосредотачивает внимание читателя на аспектах, которые в этой области обычно не принято затрагивать, - философских, исторических и культурных, полагая, что именно их осознание приводит к повышению качества проектируемого ПО.

Особая значимость этого труда состоит в том, что в него внесен персональный вклад тринадцати пионеров, в свое время осваивавших мир Unix, в том числе Кена Томпсона, считающегося создателем этой ОС. Автор подчеркивает, что он с самого начала не планировал работать над своим трудом в одиночку. Поэтому читатель найдет в книге комментарии и высказывания людей, зарекомендовавших себя как высокопрофессиональные Unix-разработчики, с которыми велись дискуссии в ходе ее написания. Таким образом, здесь фактически предпринята попытка отразить опыт Unix-сообщества.

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

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

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

Первая часть посвящена философским и историческим аспектам. Автор рассказывает об эволюционном пути развития, пройденном за многие годы этой популярной ОС, приводит множество исторических фактов, подробностей, которые сами по себе, быть может, и не играют большой роли, но собранные вместе становятся, по мнению автора, весьма значимыми.

В "Проектировании" читатель найдет более определенные и содержательные рекомендации по разработке приложений.

В третьей части очень кратко рассматриваются особенности языков и инструментария Unix-программиста: Си/C++, Emacs, Shell, Perl, Python и др.

Наконец, в четвертой части анализируются вопросы переносимости программ на другие платформы и следования стандартам, документирования разработок и лицензирования открытого кода; обсуждаются перспективы развития этой системы.

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

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