Думаю, каждый может с уверенностью назвать книгу, которую больше всего любит. Кто-то скажет, что это "Унесенные ветром", кто-то (в т. ч. и ваш покорный слуга) назовет любимой книгой "Властелин колец", а кто-то вспомнит "Основы дифференциального и интегрального исчисления" Г. М. Фихтенгольца. Хотя, вопрос о любимых книгах довольно тривиален. Лично мне нравится формулировка, когда-то предлагавшаяся редакцией журнала "Искатель" публиковавшимся в нем авторам: "Десять книг, изменивших Ваш внутренний мир". Какие только книги не фигурировали в ответах...
С предложением назвать наиболее полезную книгу дело обстоит гораздо сложнее - далеко не каждый в состоянии сделать однозначный выбор. Можно, например, вспомнить букварь или Большую Советскую Энциклопедию (как вариант - "Британику"). Но для программистов, как мне кажется, такой книгой можно считать знаменитый труд Дональда Кнута "The Art Of Computer Programming" (в русском переводе его чаще всего печатают под названием "Искусство программирования"). Именно о нем я хочу сегодня вам напомнить.
"Искусство программирования" Дональда Кнута - одно из самых выверенных и точных пособий по программированию, какое только можно найти. Именно поэтому лучше использовать именно его для изучения алгоритмов и структур данных. Ходят даже слухи (или шутки) о том, что каждый кусок кода Дональд Кнут лично тестировал на университетском компьютере, покупая машинное время за собственные деньги. Во что это ему обошлось в далеком 1972 году, когда вышло в свет первое издание "Искусства программирования", даже страшно подумать. Кроме того, эти расходы на поиск ошибок - далеко не единственные из тех, что понес автор. В предисловии он обещает заплатить $2.56 каждому, кто найдет хоть одну ошибку или опечатку. Правда, издатели русского перевода тут же поясняют, что это относится только к оригинальному, англоязычному, изданию книги.
Нередко прикладные программисты предпочитают Кнуту книги "Фундаментальные алгоритмы на C" и "Фундаментальные алгоритмы на C++" Роберта Седжвика или "Фундаментальные алгоритмы и структуры данных в Delphi" Джулиана Бакнелла, благо, русские переводы этих книг имеются. Эти пособия тоже, безусловно, весьма достойны и заслуживают отдельного рассказа о них в рубрике "Книжная полка", однако, по сути, они представляют собой конспективное переложение "Искусства программирования" на один конкретный язык (в данном случае C, C++ и Delphi, хотя я видел аналогичные книги для программистов на Visual Basic, C# и Fortran). В упомянутых мною книгах сильно сокращено количество чисто математического материала, за счет чего все они - однотомники, против трех томов Кнута. Но чем хорошо изложение Дональда Кнута - оно старается абстрагироваться от конкретного языка программирования, для чего автор использует специальный Assembler MIX. На момент написания книги это был совершенно абстрактный язык, да и сейчас процессора с архитектурой, соответствующей командам Assembler MIX, конечно же, не существует, зато есть трансляторы с Assembler MIX на Ассемблеры платформ i386, PowerPC, SPARC и др. На мой взгляд, автор не зря выбрал именно язык Ассемблера - разбор примеров на нем позволяет не отвлекаться на оптимизацию, в сторону которой так часто тянет любителей C/C++, а вникать в саму алгоритмическую суть программы. Кроме того, по замыслу автора, пример все равно придется переделывать на существующий язык для одной конкретной платформы, поэтому каждый переведенный таким образом пример способствует еще лучшему пониманию материала. А примеров в книге вполне достаточно!
Однозначно можно порекомендовать Кнута тем, кто занимается олимпиадным программированием. Знание математики, изложенной в труде Кнута, а также подробный рассказ о большинстве мыслимых и немыслимых классов алгоритмов является необходимым условием успешных выступлений на различных соревнованиях (в том числе и на нашем отечественном первенстве по спортивному программированию Test-The-Best). Именно в этой сфере особенно ярко проявляются преимущества оригинала (т. е. "Искусства программирования") перед "переводами" (т.е. книгами Седжвика и Бакнелла).
Один мой знакомый, очень квалифицированный программист, уже давно уехавший "за бугор" на работу в IBM, как-то сказал: "Кнут - это книга, которая должна лежать на полке каждого программиста". Не могу с ним не согласиться. "Искусство программирования" Дональда Кнута - книга, ставшая поистине легендарной в силу многих причин. Основная - это, конечно же, объем охваченного материала и качество его изложения. Поэтому если вы решили серьезно заниматься программированием или уже занимаетесь - не важно, системным, прикладным или олимпиадным, - и на вашей книжной полке нет трех белых корешков с надписью "Дональд Кнут. Искусство программирования. Том i-й", то спешите скорее в магазин и покупайте!
Лично я рекомендую приобрести эту книгу в моем любимом книжном магазине "Книга XXI век" (Минск, пр. Независимости, 92 - м. "Московская"). Цены там вполне приемлемые, а продавцы хорошо разбираются в том, что продают.
Что ж, на сегодня все, до новых встреч на страницах "КВ". Пишите на форуме, какие книги вы хотели бы увидеть на "Книжной полке"!
Вадим СТАНКЕВИЧ
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Горячие темы