ЛИТЕРАТУРА / КНИГИ

Искусство программирования


Как и другие книги Кнута, «Искусство программирования» отмечена его «фирменным знаком»: за каждую ошибку, найденную в тексте, автор выплачивает один шестнадцатеричный доллар, то есть $2,56 (0x100 центов, в системе счисления по основанию 16). Другой отличительной особенностью книги является обилие упражнений для самостоятельного выполнения, разной степени сложности, начиная от простых задачек «для разогрева» и заканчивая открытыми проблемами. Сложность каждого упражнения оценена по числовой шкале от 0 до 50. Так, в ранних изданиях числом 50 была отмечена Великая теорема Ферма, но в третьем издании эта оценка «девальвировала» до 45, так как к этому моменту её доказательство уже перестало быть открытой проблемой.

Сводка условных обозначений для третьего тома, 1978 год «Сортировка и поиск» (слева — оценка, справа — краткое объяснение)

  • Чёрный треугольник — Рекомендуется
  • М — С математическим уклоном
  • ВМ — Требует знания «высшей математики»
  • 00 — Требует немедленного ответа
  • 10 — Простое (на 1 минуту)
  • 20 — Средней трудности (на 15 мин)
  • 30 — Повышенной трудности
  • 40 — Для «матпрактикума»
  • 50 — Исследовательская проблема

Содержание

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

  • Том 1. Основные алгоритмы.
    • Глава 1. Основные понятия.
    • Глава 2. Информационные структуры.
  • Том 2. Получисленные алгоритмы.
    • Глава 3. Случайные числа.
    • Глава 4. Арифметика.
  • Том 3. Сортировка и поиск.
    • Глава 5. Сортировка.
    • Глава 6. Поиск.
  • Том 4. Комбинаторные алгоритмы.
    • Глава 7. Комбинаторный поиск.

Фактически эта схема была реализована вплоть до третьего тома включительно.

В настоящий момент издан том 4А, который содержит первые разделы 7 главы. Новые разделы планируется первоначально издавать отдельными выпусками (приблизительно по 128 страниц), ориентировочно по два выпуска в год (перед выходом тома 4А подобным образом были изданы выпуски 0, 1, 2, 3 и 4).

Машинно-ориентированный язык примеров

Примеры программ, приведённые в книге, используют «MIX-ассемблер», предназначенный для работы на гипотетическом MIX-компьютере. В третьем издании морально устаревший MIX был заменён на MMIX, имеющий полноценную RISC-архитектуру. Существует программное обеспечение, обеспечивающее эмуляцию (M)MIX-машины на стандартных IBM-совместимых компьютерах. GNU Compiler Collection имеет возможность компиляции C/C++ кода на целевую архитектуру MMIX.

Многих читателей отталкивает факт использования языка низкого уровня, но Кнут считает свой выбор оправданным, так как привязка к архитектуре необходима для того, чтобы можно было точно судить о таких характеристиках алгоритма, как скорость, потребление памяти, и т. д. В результате такого выбора, однако, целевая аудитория сильно сужается. Кроме того, ограничивается область её применения в качестве «книги рецептов» для программистов-практиков, многие из которых не знают ассемблера, а если и знают, то не испытывают желания переводить низкоуровневые алгоритмы из книги на языки высокого уровня. Многие практические руководства, в которых тот же материал излагается более популярно, выходят именно по этой причине.

Критика

Основной чертой монографии Кнута, выгодно отличающей её от других книг, посвящённых программированию, является исключительно высоко поднятая планка качества материала и академичности изложения, а также глубина анализа рассматриваемых вопросов. Благодаря этому она стала настоящим бестселлером и настольной книгой каждого профессионального программиста2011. Журнал American Scientist включил «Искусство программирования» в список 12 лучших физико-математических монографий XX-го столетия вместе с работами Дирака по квантовой механике, Эйнштейна по теории относительности, Рассела и Уайтхеда по основаниям математики и немногочисленными другими.

Обложка третьего издания первого тома книги содержит цитату Билла Гейтса: «Если вы считаете себя действительно хорошим программистом…, прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определённо следует отправить мне резюме». Впрочем, фольклор также приписывает эти слова Стиву Джобсу.

Издания

Оригинальные

Третье (текущее)

В порядке возрастания номеров томов:

  • Volume 1: Fundamental Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xx+650pp. ISBN 0-201-89683-4
  • Volume 1, Fascicle 1: MMIX — A RISC Computer for the New Millennium. (Addison-Wesley, February 14, 2005) ISBN 0-201-85392-2 (will be in the fourth edition of volume 1)
  • Volume 2: Seminumerical Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. ISBN 0-201-89684-2
  • Volume 3: Sorting and Searching. Second Edition (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout. ISBN 0-201-89685-0
  • Volume 4A: Combinatorial Algorithms, Part 1 (Upper Saddle River, New Jersey: Addison-Wesley, 2011), xvi+883pp. ISBN 0-201-03804-8

Предыдущие

По дате публикации:

  • Volume 1, first edition, 1968. 634pp. ISBN 0-201-03801-3.
  • Volume 2, first edition, 1969, xi+624pp, ISBN 0-201-03802-1.
  • Volume 3, first edition, 1973, xi+723pp+centerfold, ISBN 0-201-03803-X
  • Volume 1, second edition, 1973, xiii+634pp, ISBN 0-201-03809-9.
  • Volume 2, second edition, 1981, xiii+ 688pp. ISBN 0-201-03822-6.
  • Volume 4, Fascicle 2: Generating All Tuples and Permutations, (Addison-Wesley, February 14, 2005) v+127pp, ISBN 0-201-85393-0
  • Volume 4, Fascicle 3: Generating All Combinations and Partitions. (Addison-Wesley, July 26, 2005) vi+150pp, ISBN 0-201-85394-9
  • Volume 4, Fascicle 4: Generating all Trees — History of Combinatorial Generation, (Addison-Wesley, February 6, 2006) vi+120pp, ISBN 0-321-33570-8
  • Volume 4, Fascicle 0: Introduction to Combinatorial Algorithms and Boolean Functions, (Addison-Wesley Professional, April 28, 2008) vi+240pp, ISBN 0-321-53496-4
  • Volume 4, Fascicle 1: Bitwise tricks & techniques; Binary Decision Diagrams (Addison-Wesley Professional, March 27, 2009) viii+260pp, ISBN 0-321-58050-8

Русский перевод

  • Дональд Кнут, 3-е изд, М., «Вильямс», 2006
  • Дональд Кнут, М., «Вильямс», 2006
  • Дональд Кнут, 3-е изд, М., «Вильямс», 2007
  • Дональд Кнут, 2-е изд, 2007, М., «Вильямс»
  • Дональд Кнут, М., «Вильямс», 2013

 


Комментарии

Добавить комментарий
Комментарий
Отправить