Уметност рачунарског програмирања (енгл. The Art of Computer Programming; скраћено TAOCP) свеобухватна је вишетомна монографија коју је написао рачунарски научник Доналд Кнут, а која представља програмирање алгоритама и њихову анализу. Закључно са 2025. годином, састоји се од објављених томова 1, 2, 3, 4А и 4Б, док се у будућности очекује још издања. Томови 1–5 су намењени да представе централно језгро рачунарског програмирања за секвенцијалне машине, док су теме томова 6 и 7 важне, али специјализованије.

Када је Кнут започео пројекат 1962. године, првобитно га је замислио као једну књигу са дванаест поглавља. Прва три тома, од онога што се тада очекивало да буде комплет од седам томова, објављена су 1968, 1969. и 1973. године. Рад на 4. тому почео је озбиљно 1973. године, али је обустављен 1977. ради рада на слогу (енгл. typesetting), подстакнут другим издањем 2. тома. Писање коначне верзије Тома 4А почело је ручно 2001. године, а прва онлајн пре-фасцикла (енгл. pre-fascicle), 2А, појавила се касније исте године. Први објављени део Тома 4 појавио се у меком повезу као Фасцикла 2 (енгл. Fascicle 2) 2005. године. Тврдокоричени Том 4А, који комбинује Том 4, Фасцикле 0–4, објављен је 2011. године. Том 4, Фасцикла 6 („Задовољивост”; енгл. Satisfiability) објављен је у децембру 2015; Том 4, Фасцикла 5 („Математичке припреме Redux; Бектрекинг; Плешуће везе”) објављен је у новембру 2019.

Том 4Б састоји се од материјала развијеног из фасцикли 5 и 6. Рукопис је послат издавачу 1. августа 2022, а том је објављен у септембру 2022. године. Фасцикла 7 („Задовољење ограничења”; енгл. Constraint Satisfaction), планирана за Том 4Ц, била је тема Кнутовог говора 3. августа 2022. и објављена је 5. фебруара 2025. године.

Историја мини|десно|200px|Доналд Кнут 2005. године

Након што је освојио стипендију на Вестингхаусовом такмичењу талената (енгл. Westinghouse Talent Search), Кнут је уписао Технолошки институт Кејс (сада Универзитет Кејс Вестерн Ризерв), где је његов успех био толико изузетан да је наставно веће гласало да му додели магистарску диплому одмах по завршетку основних студија. Током летњих распуста, Кнута је ангажовала Корпорација Бароуз да пише компајлере, при чему је зарађивао више током летњих месеци него редовни професори за целу годину. Такви подвизи учинили су Кнута темом разговора на одсеку за математику, који је укључивао и Ричарда С. Варгу.

У јануару 1962. године, док је био постдипломац на одсеку за математику на Калтеху, Кнуту је приступио Адисон-Весли са предлогом да напише књигу о дизајну компајлера, а он је предложио шире истраживање. Истог дана саставио је листу од дванаест наслова поглавља. У лето 1962. радио је на FORTRAN компајлеру за UNIVAC, сматрајући да је „продао душу ђаволу” развијајући FORTRAN компајлер након развоја ALGOL-а са Бароузом. Остао је консултант за Бароуз у периоду од 1960. до 1968. године, док је писао Том 1 „Основни алгоритми”.

Током овог времена такође је развио математичку анализу линеарног адресирања, што га је убедило да материјал представи квантитативним приступом. Након што је докторирао у јуну 1963. године, почео је да ради на свом рукопису, чији је први нацрт завршио у јуну 1965. године, на 3.000 ручно писаних страница. Претпостављао је да ће око пет ручно писаних страница одговарати једној штампаној страници, али му је издавач рекао да заправо око 1½ ручно писане странице одговара једној штампаној. То је значило да има приближно 2.000 штампаних страница материјала, што се блиско поклапа са величином прва три објављена тома.

Први том „Уметности рачунарског програмирања”, „Основни алгоритми”, завршен је за пет година, између 1963. и 1968, док је Кнут радио и на Калтеху и за Бароуз.

Кнутова посвета у 1. тому гласи:

Ова серија књига је с љубављу посвећенарачунару Тип 650 који је некада био инсталиран наТехнолошком институту Кејс,у знак сећања на многе пријатне вечери.Посвета је била мало другачије срочена у првом издању.

У предговору, он се захваљује прво својој супрузи Џил, затим Бароузу за коришћење рачунара B220 и B5500 за тестирање већине програма, као и Калтеху, Националној научној фондацији и Канцеларији за поморска истраживања.

Одељак 2.5 „Основних алгоритама” бави се динамичком алокацијом меморије. Делови овога се користе у Бароузовом приступу управљању меморијом. Кнут тврди да је аутор методе „граничних ознака” (енгл. boundary-tag): „метода ’граничних ознака’, представљена у Одељку 2.5, дизајнирана је од стране аутора 1962. године за употребу у контролном програму за рачунар B5000.”

Кнут је добио подршку од Ричарда С. Варге, који је био научни саветник издавача. Варга је био у посети Олги Тауски-Тод и Џону Тоду на Калтеху. Уз Варгину ентузијастичну препоруку, издавач је прихватио Кнутове проширене планове. У својој проширеној верзији, књига би била објављена у седам томова, сваки са само једним или два поглавља. Због раста Поглавља 7, које је имало мање од 100 страница у рукопису из 1965. године (према Тому 4А, стр. vi), план за Том 4 се од тада проширио на томове 4А, 4Б, 4Ц, 4Д и могуће још.

Године 1976. Кнут је припремио друго издање Тома 2, које је захтевало поновно слагање, али стил слова коришћен у првом издању (звани врући слог) више није био лако доступан. Године 1977. одлучио је да потроши неко време стварајући нешто погодније. Осам година касније, вратио се са системом TEX, који се тренутно користи за све томове.

Још једна карактеристика томова је варијација у тежини вежби, укључујући нумеричку оцену која варира од 0 до 50, где је 0 тривијално, а 50 отворено питање у савременом истраживању.

Награда за проналажење грешака Понуда Кнутовог наградног чека вредног „један хексадецимални долар” (100HEX центи основе 16, што је у децималном систему 2,56 $) за сваку пронађену грешку, као и исправка тих грешака у наредним штампаним издањима, допринели су високо полираној и још увек ауторитативној природи дела, дуго након првог објављивања.

Асемблерски језик у књизи Сви примери у књигама користе хипотетички језик назван „MIX асемблерски језик” (MIXAL), који ради на „митском рачунару званом MIX”. Тренутно се MIX рачунар замењује MMIX рачунаром, који је RISC верзија. Прелазак са MIX-а на MMIX био је велики текући пројекат за који је Кнут тражио помоћ волонтера. Софтвер као што је GNU MDK постоји да обезбеди емулацију MIX архитектуре. Кнут сматра да је употреба асемблерског језика неопходна како би се проценили брзина и меморијска употреба алгоритама.

Према Кнуту, MIX је био сличан сваком рачунару који је тада постојао, али „лепши”. Име 'MIX' представља 1009 римским бројевима и добијено је формулом која укључује серијске бројеве неколико рачунара тог времена: (360 + 650 + 709 + U3 + SS80 + 1107 + 1604 + G2- + B220 + S2000 + 920 + 601 + H800 + PDP-4 + 11)/16 = 1009 или MIX. Име MMIX је 2009 римским бројевима и Кнут тврди да је MMIX још лепши од MIX-а.

Критички пријем Кнут је награђен 1974. године Тјуринговом наградом „за своје велике доприносе анализи алгоритама […], а посебно за доприносе ’уметности рачунарског програмирања’ кроз своје познате књиге у континуираној серији под овим насловом.” Часопис American Scientist уврстио је ово дело међу „100 или тако нешто књига које су обликовале век науке”, мислећи на двадесети век. Корице трећег издања 1. тома цитирају Била Гејтса који каже: „Ако мислите да сте стварно добар програмер... прочитајте (Кнутову) Уметност рачунарског програмирања... Свакако би требало да ми пошаљете биографију ако можете да прочитате целу ствар.” Њујорк тајмс је дело назвао „дефинишућом расправом професије”.

Томови Завршени Том 1 – Основни алгоритми (енгл. Fundamental algorithms) Поглавље 1 – Основни концепти Поглавље 2 – Информационе структуре Том 2 – Полунумерички алгоритми (енгл. Seminumerical algorithms) Поглавље 3 – Случајни бројеви Поглавље 4 – Аритметика Том 3 – Сортирање и претраживање (енгл. Sorting and searching) Поглавље 5 – Сортирање Поглавље 6 – Претраживање Том 4А – Комбинаторни алгоритми (енгл. Combinatorial algorithms) Поглавље 7 – Комбинаторно претраживање (1. део) Том 4Б – Комбинаторни алгоритми Поглавље 7 – Комбинаторно претраживање (2. део)

Планирани Том 4Ц, 4Д, ... Комбинаторни алгоритми (поглавља 7 и 8 објављена у неколико под-томова) Поглавље 7 – Комбинаторно претраживање (наставак) Поглавље 8 – Рекурзија Том 5 – Синтаксички алгоритми Поглавље 9 – Лексичко скенирање (такође укључује претрагу стринга и компресију података) Поглавље 10 – Технике парсирања Том 6 – Теорија контекстно слободних језика Поглавље 11 – Математичка лингвистика Том 7 – Технике компајлера Поглавље 12 – Превођење програмских језика

Енглеска издања Тренутна издања Ово су тренутна издања по редоследу броја тома: The Art of Computer Programming, Volumes 1-4B Boxed Set. (Reading, Massachusetts: Addison-Wesley, 2023), 3904pp. Volume 1: Fundamental Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xx+650pp. . Исправке: (https://cs.stanford.edu/~knuth/all1-pre.ps.gz) (од 8. 1. 2011), (https://cs.stanford.edu/~knuth/all1.ps.gz) (од 2022, 49. штампање). Додаци: (https://cs.stanford.edu/~knuth/1-appc.ps.gz) (2011). Volume 2: Seminumerical Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. . Исправке: (https://cs.stanford.edu/~knuth/all2-pre.ps.gz) (од 8. 1. 2011), (https://cs.stanford.edu/~knuth/all2.ps.gz) (од 2022, 45. штампање). Додаци: (https://cs.stanford.edu/~knuth/2-appc.ps.gz) (2011). Volume 3: Sorting and Searching. Second Edition (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout. . Исправке: (https://cs.stanford.edu/~knuth/all3-pre.ps.gz) (од 8. 1. 2011), (https://cs.stanford.edu/~knuth/all3.ps.gz) (од 2022, 45. штампање). Додаци: (https://cs.stanford.edu/~knuth/3-appc.ps.gz) (2011). Volume 4A: Combinatorial Algorithms, Part 1. First Edition (Upper Saddle River, New Jersey: Addison-Wesley, 2011, 26. штампање), xv+883pp. . Исправке: (https://cs.stanford.edu/~knuth/all4a-pre.ps.gz) (од 2011), (https://cs.stanford.edu/~knuth/all4a.ps.gz) (од 2022, 20. штампање). Volume 4B: Combinatorial Algorithms, Part 2. First Edition (Upper Saddle River, New Jersey: Addison-Wesley, 2023, 3. штампање), xviii+714pp. . Исправке: (https://cs.stanford.edu/~knuth/all4b.ps.gz) (од 2023, 1. штампање). Volume 1, Fascicle 1: MMIX – A RISC Computer for the New Millennium. (Addison-Wesley, 14. 2. 2005), 144pp. . Исправке: (https://cs.stanford.edu/~knuth/all1f1.ps.gz) (од 2005, 1. штампање) (биће у четвртом издању 1. тома) The MMIX Supplement by Martin Ruckert. (Addison-Wesley), 193pp. . Конверзија MIX проблема/програма у томовима 1, 2 и 3 у MMIX. Volume 4, Fascicle 7: Constraint Satisfaction. (Addison-Wesley, 5. 2. 2025), xiv+281pp. .

Претходна издања Комплетни томови Ови томови су замењени новијим издањима и наведени су по датуму. Volume 1: Fundamental Algorithms. Прво издање, 1968, xxi+634pp, . Volume 2: Seminumerical Algorithms. Прво издање, 1969, xi+624pp, . Volume 3: Sorting and Searching. Прво издање, 1973, xi+723pp+foldout, . Исправке: (https://cs.stanford.edu/~knuth/err3-1e.ps.gz). Volume 1: Fundamental Algorithms. Друго издање, 1973, xxi+634pp, . Исправке: (https://cs.stanford.edu/~knuth/err1-2e.ps.gz). Volume 2: Seminumerical Algorithms. Друго издање, 1981, xiii+ 688pp, . Исправке: (https://cs.stanford.edu/~knuth/err2-2e.ps.gz). The Art of Computer Programming, Volumes 1-3 Boxed Set. Second Edition (Reading, Massachusetts: Addison-Wesley, 1998), pp. The Art of Computer Programming, Volumes 1-4A Boxed Set. Third Edition (Reading, Massachusetts: Addison-Wesley, 2011), 3168pp.

Фасцикле Том 4, Фасцикле 0–4 су ревидиране и објављене као Том 4А. Volume 4, Fascicle 0: Introduction to Combinatorial Algorithms and Boolean Functions. (Addison-Wesley Professional, 28. 4. 2008) vi+240pp, . Исправке: (https://cs.stanford.edu/~knuth/all4f0.ps.gz) (1. 1. 2011).