РЕЦЕНЗИИ
Керниган Б. У., Пайк Р. Практика программирования. Пер. с англ. М.: Издательский дом "Вильямс", 2004. - 288 с.
ИД "Вильямс" (www.williamspub-lishing.com) выпустил в свет очередную книгу из серии "Программирование для профессионалов" известного компьютерного издательства Addison-Wesley. Это уже восьмое (дополненное и исправленное) издание, что само по себе говорит о постоянном интересе к данному неординарному труду со стороны становящегося все более многочисленным сообщества программистов, к которому принадлежат и российские разработчики.
Ценность книги состоит прежде всего в том, что в ней отражен и, главное, обобщен долголетний многосторонний опыт создания ПО на разных языках высокого уровня (прежде всего Си, C++, Java, Awk, Perl) и в разных средах (Unix, Linux, MS Windows, Mac). Ее авторы - классики в области программирования, чьи труды не пылятся на полках, а всегда под рукой, причем не только у начинающих программистов, но и у профессионалов. Они лично выполнили верификацию программного кода для русскоязычного издания, что свидетельствует об их отношении к россиянам-программистам как достойным коллегам.
По сравнению с распухшими томами многочисленных трудов по программированию эта книга при своем скромном объеме (около 300 стр.) обладает исключительной информационной насыщенностью, отличаясь вместе с тем ясностью и доходчивостью изложения материала, базирующегося на многолетнем опыте авторов.
К сожалению, с переводом не повезло: переводчик, взваливший на свои плечи еще и функции редактора, испытывает проблемы не только с пониманием текста, с компьютерной терминологией, но и с русским языком. Здесь можно обнаружить такие "перлы", как, например, "отдельные слова, разделенные пустым пространством" (с. 91), или "Слово "bug" ("клоп"), употребляемое в программировании..." (с. 139) и т. п. Дословный перевод и, видимо, слабое понимание смысла того, о чем идет речь, и приводит к появлению "клопов" и "пустого пространства" между словами.
Необходимым условием для изучения этой интересной нестандартной книги является опыт программирования на Си, C++ или Java. Большая часть примеров относится к операционным системам Unix и Linux, но и программисты, работающие в средах Windows и Macintosh, также смогут найти для себя немало интересного.
Издание включает предисловие, эпилог, предметный указатель и состоит из девяти глав, которые имеют исключительно практическую направленность. В конце каждой главы приводится список литературы.
Первая глава посвящена важной теме - стилю написания кода. В ней наглядно показано, что на отладку и сопровождение хорошо написанной программы тратится гораздо меньше сил и времени, а главное, она более стабильна и надежна в работе по сравнению с той, в которой стилю представления кода не уделено должного внимания. Во второй главе дается краткий обзор основных алгоритмов и структур данных, имеющихся, как правило, во всех программах, после чего (гл. 3) авторы переходят к сравнительному анализу архитектуры и быстродействия нескольких вариантов программы, которая написана на разных языках и в которой построен алгоритм, реализующий цепи Маркова.
В четвертой главе рассматриваются проблемы, требующие решения при разработке программы: выбор оптимального интерфейса, инкапсуляция данных, управление ресурсами, обработка возникающих при функционировании программы ошибок.
Искусству отладки простых и сложных программ посвящена пятая глава, а их последующему тестированию - следующая, шестая.
О том, как оптимизировать функционирование программы и эффективно организовать ресурсы при ее работе, рассказывается в седьмой главе, а в восьмой исследуются вопросы переносимости кода на новую аппаратную или программную платформу и даже в иную языковую среду. О механизмах, используемых при программировании, - регулярных выражениях, интерпретаторах, компиляторах и т. п. - идет речь в заключительной главе.
Множество оригинальных примеров в виде текстов и фрагментов программного кода, используемых в качестве иллюстративного материала, их толковые описания и комментарии помогают читателю не только разобраться в многочисленных обсуждаемых нетривиальных проблемах, но и существенно пополнить личную "копилку мудрости", с тем чтобы в своей практике иметь возможность обоснованно выбирать оптимальную архитектуру программы, оптимизировать ее быстродействие, с учетом действующих стандартов добиваться надежной и стабильной работы, а в дальнейшем при необходимости выполнять ее доработку и сопровождение.
"Практика программирования" ориентирована на широкий круг читателей, имеющих дело с разработкой ПО на разных языках и с различными ОС, в первую очередь на профессионалов, не желающих останавливаться на достигнутом, и руководителей подразделений по разработке ПО. Она может быть полезна преподавателям и студентам соответствующих специальностей, начинающим и прикладным программистам.