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


«Искусство программирования» (англ. The Art of Computer Programming[1]) — фундаментальная монография известного американского математика и специалиста в области компьютерных наук Дональда Кнута, посвящённая рассмотрению и анализу важнейших алгоритмов, используемых в информатике. В 1999 году книга была признана одной из двенадцати лучших физико-математических монографий столетия[2].

Проект написания книги был начат автором в 1962 году. Изначально планировалось выпустить её одним томом, но объём материала оказался столь большим, что количество томов было увеличено до семи. Первые три тома были изданы достаточно быстро: том 1 — в 1968 году, том 2 — в 1969 году, том 3 — в 1973 году. После этого последовал перерыв до февраля 2005 года, в котором автор опубликовал первую часть четвёртого тома. Было принято решение выпускать остальные части четвёртого тома приблизительно по две в год отдельными выпусками, после чего официально издать весь четвёртый том. На протяжении 2005—2009 годов были изданы выпуски 0, 1, 2, 3 и 4, а в 2011 году был выпущен том 4А, в который вошла информация из этих выпусков. Также в 2005 году был выпущен выпуск 1 «MMIX — RISC-компьютер для нового тысячелетия», информация из которого войдёт в новое, четвёртое издание первого тома. Были изданы выпуск 6 (в 2015 году) и выпуск 5 (в 2017 году), представляющие собой части тома 4B. Сам том 4B вышел в 2022 году.

Поскольку Кнут всегда считал «Искусство программирования» основным проектом своей жизни, в 1993 году он вышел на пенсию с намерением полностью сконцентрироваться на написании недостающих частей и приведении в порядок существующих[3]. Он полагал, что на завершение работы потребуется 20 лет[4].

В качестве признанного эксперта по созданию компиляторов, в 1962 году Кнут начал писать книгу по их проектированию. Вскоре он осознал, что охват материала должен быть намного шире. В июне 1965 года он закончил написание первой версии того, что он изначально хотел издать одной книгой из двенадцати разделов. Объём рукописного текста составил 3000 страниц. По расчётам Кнута, этот объём должен был уместиться на 600 страницах печатного текста, но, как сообщил ему его издатель, реальный объём составил бы 2000 страниц. В связи с этим структура книги была пересмотрена в пользу нескольких томов, по 1—2 раздела каждый. С тех пор, в связи с постоянным ростом материала, было решено, что четвёртый том также будет разбит на отдельные книги: 4A, 4B, 4C, а возможно, и 4D. Но и это разделение, по-видимому, не будет окончательным, так как разделы 7.1 и 7.2.1 уже в сумме занимают более 650 страниц.