Konsten att programmera

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 30 juni 2022; kontroller kräver 2 redigeringar .
Konsten att programmera
Konsten att programmera
Författare Donald Knuth
Genre Informatik
Originalspråk engelsk
Original publicerat 1968
Tolk S. G. Trigub, Yu. G. Gordienko, I. V. Krasikov och andra.
Serier Konsten att programmera
Utgivare Williams / Addison-Wesley
Släpp sedan 1968

Konsten att programmera [ 1] är en  grundläggande monografi av den berömde amerikanske matematikern och datavetaren Donald Knuth , tillägnad övervägande och analys av de viktigaste algoritmerna som används inom datavetenskap . 1999 erkändes boken som en av århundradets tolv bästa fysiska och matematiska monografier [2] .

Bokskrivarprojektet startades av författaren 1962. Från början var det planerat att släppa den i en volym, men mängden material visade sig vara så stor att antalet volymer utökades till sju. De tre första volymerna publicerades ganska snabbt: volym 1 - 1968, volym 2 - 1969, volym 3 - 1973. Detta följdes av ett uppehåll fram till februari 2005, där författaren publicerade den första delen av fjärde volymen. Beslutet togs att ge ut de återstående delarna av fjärde volymen cirka två gånger om året i separata nummer, varefter hela fjärde volymen skulle publiceras officiellt. Under 2005-2009 utkom nummer 0, 1, 2, 3 och 4 och 2011 släpptes volym 4A som innehöll information från dessa nummer. Även 2005 släpptes nummer 1 "MMIX - A RISC Computer for the New Millennium", vars information kommer att inkluderas i den nya, fjärde upplagan av den första volymen. Nummer 6 (år 2015) och nummer 5 (år 2017) publicerades som en del av volym 4B. Själva volym 4B släpptes 2022.

Eftersom Knuth alltid hade ansett att konsten att programmera var hans livs huvudprojekt , gick han i pension 1993 med avsikten att helt koncentrera sig på att skriva de saknade delarna och städa upp de befintliga [3] . Han trodde att det skulle ta 20 år att slutföra arbetet [4] .

Historik

Som en erkänd expert på kompilatordesign började Knuth 1962 skriva en bok om kompilatordesign. Han insåg snart att omfattningen av materialet behövde vara mycket bredare. I juni 1965 skrev han färdigt den första versionen av det han från början ville ge ut i en bok med tolv avsnitt. Volymen på den handskrivna texten var 3000 sidor. Enligt Knuths beräkningar skulle denna volym ha rymt in på 600 tryckta sidor, men, som hans förläggare meddelade honom, skulle den faktiska volymen vara 2000 sidor. I detta avseende reviderades bokens struktur till förmån för flera volymer, 1-2 avsnitt vardera. Sedan dess, på grund av den ständiga tillväxten av material, beslutades att den fjärde volymen också skulle delas upp i separata böcker: 4A, 4B, 4C och möjligen 4D. Men denna uppdelning kommer tydligen inte att vara slutgiltig, eftersom avsnitten 7.1 och 7.2.1 redan upptar mer än 650 sidor totalt.

1976 producerade Knuth en andra upplaga av den andra volymen, som krävde omskrivningar . Men den typografiska designen ( monotypi ) som användes i den första upplagan var inte längre tillgänglig vid det här laget. För att undvika liknande frustrationer i framtiden började Knuth 1977 utveckla sitt eget typografiska datorsättningssystem. Enligt hans beräkningar borde arbetet inte ha tagit mer än ett halvår, men det tog ungefär tio år innan det var klart [5] . Systemet kallades TeX , och används för närvarande för att typsätta alla volymer av The Art of Programming. Dessutom blev TeX senare de facto standarden för att skriva artiklar och monografier inom naturvetenskap.

Precis som Knuths andra böcker bär The Art of Programming hans varumärke: för varje fel som hittas i texten betalar författaren en hexadecimal dollar eller 2,56 $ (0x100 cent , bas 16 ). Ett annat utmärkande drag för boken är överflöd av övningar för självuppfyllelse, av varierande svårighetsgrad, allt från enkla "uppvärmningsproblem" till problem med öppna slutar. Svårighetsgraden för varje övning är bedömd på en numerisk skala från 0 till 50. Så i de tidiga utgåvorna markerades Fermats sista sats med siffran 50 , men i den tredje upplagan "devalverades" detta betyg till 45, eftersom det då gång dess bevis redan hade upphört att vara ett öppet problem.

Sammanfattning av konventioner för volym tre, 1978 "Sortering och sökning" (vänster - bedömning, höger - kort förklaring)

Innehåll

Den ursprungliga planen för att skriva boken föreslog följande uppdelning av materialet.

Faktum är att detta schema implementerades till och med den tredje volymen.

För närvarande[ när? ] publicerade volym 4A, som innehåller de första avsnitten av kapitel 7. De nya avsnitten är planerade att initialt publiceras i separata nummer (cirka 128 sidor), cirka två nummer per år (nummer 0, 1, 2, 3 och 4 publicerades på liknande sätt före utgivningen av volym 4A).

Maskinorienterat exempelspråk

Exempelprogrammen i boken använder en "MIX assembler" utformad för att köras på en hypotetisk MIX-dator. I den tredje upplagan ersattes den föråldrade MIX av MMIX , ​​som har en fullfjädrad RISC - arkitektur. Det finns programvara som ger emulering av (M)MIX-maskinen på standard IBM-kompatibla datorer. GNU Compiler Collection har förmågan att kompilera C/C++-kod på MMIX-målarkitekturen.

Många läsare blir avskräckta av att använda ett lågnivåspråk, men Knuth anser att hans val är motiverat, eftersom bindningen till arkitekturen är nödvändig för att korrekt kunna bedöma sådana egenskaper hos algoritmen som hastighet, minnesförbrukning, och så vidare. Som ett resultat av detta val minskar dock målgruppen kraftigt. Dessutom är dess omfattning begränsad som en "receptbok" för praktiska programmerare, av vilka många inte kan assemblerspråk, och om de gör det känner de inte för att översätta lågnivåalgoritmer från boken till högnivåspråk . Många övningsguider som presenterar samma material på ett mer populärt sätt publiceras just av denna anledning.

Kritik

Huvuddraget i Knuths monografi, som skiljer den gynnsamt från andra böcker om programmering, är den exceptionellt höga ribban för kvaliteten på materialet och den akademiska presentationen, samt djupet i analysen av de frågor som behandlas. Tack vare detta har den blivit en riktig storsäljare och en referensbok för varje professionell programmerare [6] . Tidskriften American Scientist inkluderade The Art of Programming i sin lista över de 12 bästa fysiska och matematiska monografierna under 1900-talet [2] tillsammans med verk av Dirac om kvantmekanik , Einstein om relativitetsteorin , Russell och Whitehead om grunderna. av matematik och några andra [7] .

Omslaget till den tredje upplagan av den första volymen av boken innehåller ett citat från Bill Gates : "Om du anser dig vara en riktigt bra programmerare ... läs The Art of Programming (Knuth) ... Om du kan läsa allt detta arbete , då ska du definitivt skicka mig ett CV" [8] .

Upplagor

Original

Tredje (nuvarande)

I stigande ordning av volymnummer:

  • Volym 1: Grundläggande algoritmer . Tredje upplagan (Reading, Massachusetts: Addison-Wesley, 1997), xx+650 s. ISBN 0-201-89683-4
  • Volym 1, Fascicle 1: MMIX  - A RISC Computer for the New Millennium . (Addison-Wesley, 14 februari 2005) ISBN 0-201-85392-2 (kommer att finnas i den fjärde upplagan av volym 1)
  • Volym 2: Seminumeriska algoritmer . Tredje upplagan (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. ISBN 0-201-89684-2
  • Volym 3: Sortering och sökning . Andra upplagan (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780 s.+vikt. ISBN 0-201-89685-0
  • Volym 4A: Combinatorial Algorithms, Del 1 (Upper Saddle River, New Jersey: Addison-Wesley, 2011), xvi+883pp. ISBN 0-201-03804-8
  • Volym 4B: Combinatorial Algorithms, Del 2 (Upper Saddle River, New Jersey: Addison-Wesley, 2023), xviii+714pp. ISBN 0-201-03806-4
Föregående

Efter publiceringsdatum:

  • Volym 1 , första upplagan, 1968. 634s. ISBN 0-201-03801-3 .
  • Volym 2 , första upplagan, 1969, xi+624pp, ISBN 0-201-03802-1 .
  • Volym 3 , första upplagan, 1973, xi+723pp+centerfold, ISBN 0-201-03803-X
  • Volym 1 , andra upplagan, 1973, xiii+634pp, ISBN 0-201-03809-9 .
  • Volym 2 , andra upplagan, 1981, xiii+ 688 s. ISBN 0-201-03822-6 .
  • Volym 4, Fascicle 2: Generating All Tuples and Permutations , (Addison-Wesley, 14 februari 2005) v+127pp, ISBN 0-201-85393-0
  • Volym 4, fas 3: Generera alla kombinationer och partitioner . (Addison-Wesley, 26 juli 2005) vi+150pp, ISBN 0-201-85394-9
  • Volym 4, Fascicle 4: Generating all Trees  - History of Combinatorial Generation , (Addison-Wesley, 6 februari 2006) vi+120pp, ISBN 0-321-33570-8
  • Volym 4, Fascicle 0: Introduction to Combinatorial Algorithms and Boolean Functions , (Addison-Wesley Professional, 28 april 2008) vi+240pp, ISBN 0-321-53496-4
  • Volym 4, Fascicle 1: Bitvisa trick & tekniker; Binära beslutsdiagram (Addison-Wesley Professional, 27 mars 2009) viii+260pp, ISBN 0-321-58050-8
  • Volym 4, Fascicle 6: Satisfiability , (Addison-Wesley, 8 december 2015) xiii+310pp, ISBN 978-0-13-439760-3
  • Volym 4, Fascicle 5: Mathematical Preliminaries Redux; bakåtspårning; Dancing Links , (Addison-Wesley, 16 juni 2017) 320pp, ISBN 978-0-13-467179-6

Ryska översättning

  • Knut D.E. Konsten att programmera. Volym 1. Grundläggande algoritmer - M.: Mir, 1976. - 735 sid.
  • Knut D.E. Konsten att programmera. Volym 2. Erhållna algoritmer - M.: Mir, 1977. - 724 sid.
  • Knut D.E. Konsten att programmera. Volym 3. Sortering och sökning - M.: Mir, 1978. - 844 sid.
  • Knut D. E. Konsten att programmera. Volym 1. Grundläggande algoritmer = Konsten att programmera. Volym 1. Fundamental Algorithms / ed. S. G. Trigub (kap. 1), Yu. G. Gordienko (kap. 2) och I. V. Krasikova (avsnitt 2.5 och 2.6). - 3. - Moskva: Williams, 2002. - T. 1. - 720 sid. — ISBN 5-8459-0080-8 .
  • Knut D. E. Konsten att programmera datorer, volym 1, nummer 1. MMIX - A RISC Computer for the New Millennium. - M . : "Williams" , 2007. - 160 sid. - ISBN 978-5-8459-1163-6 .
  • Knut D. E. Konsten att programmera. Volym 2. De resulterande algoritmerna = Konsten att programmera. Volym 2. Seminumeriska algoritmer / ed. L. F. Kozachenko (kapitel 3, avsnitt 4.6.4 och 4.7), V. T. Tertyshny (kapitel 4) och I. V. Krasikov (avsnitt 4.6). - 3. - Moskva: Williams, 2001. - T. 2. - 832 sid. — ISBN 5-8459-0081-6 .
  • Knut D. E. Konsten att programmera. Volym 3. Sortering och sökning = Konsten att programmera datorer. Volym 3. Sortering och sökning / ed. V. T. Tertyshny (kap. 5) och I. V. Krasikov (kap. 6). - 2:a uppl. - Moskva: Williams, 2007. - T. 3. - 832 sid. — ISBN 5-8459-0082-1 .
  • Knut D. E. The Art of Computer Programming, Volym 4, A. Combinatorial Algorithms, Del 1 = The Art of Computer Programming, Volym 4A: Combinatorial Algorithms, Del 1 / ed. Yu. V. Kozachenko. - 1. - Moskva: Williams, 2013. - T. 4. - 960 sid. - ISBN 978-5-8459-1744-7 .

Relaterade böcker

  • Martin Ruckert "The MMIX Supplement: Supplement to The Art of Computer Programming Volumes 1, 2, 3 by Donald E. Knuth", 1st Edition, (Addison-Wesley Professional, 15 februari 2015), 224 pp, ISBN-13: 978 -0133992311,

Anteckningar

  1. Konsten att programmera . Hämtad 14 juni 2008. Arkiverad från originalet 26 februari 2009.
  2. 1 2 Morrison, Philip & Morrison, Phylis (1999), 100 eller så Books that shaped a Century of Science , American Scientist (Sigma Xi, The Scientific Research Society). — Vol. 87(6) , < http://www.americanscientist.org/bookshelf/pub/100-or-so-books-that-shaped-a-century-of-science > . Hämtad 11 januari 2008. Arkiverad 28 december 2008 på Wayback Machine 
  3. David Walden. Vinnare av Donald E. Knuth - A. M. Turing Award . ACM . Hämtad 6 september 2016. Arkiverad från originalet 19 september 2017.
  4. Knuth: Pensionering . Hämtad 14 juni 2008. Arkiverad från originalet 26 juni 2008.
  5. Historik för TeX-Tex-användargruppen . Hämtad 14 juni 2008. Arkiverad från originalet 7 augusti 2011.
  6. Donald Knuth Konsten att programmera, vol. 1. Grundläggande algoritmer = Konsten att programmera, vol. 1. Grundläggande algoritmer. - 3:e uppl. - M .: "Williams", 2006. - S. 720. - ISBN 0-201-89683-4 , Från utgivarna av den ryska översättningen
  7. Konsten att programmera . Hämtad 14 juni 2008. Arkiverad från originalet 4 september 2008.
  8. Bill Gates sa en gång "definitivt skicka mig en meritförteckning" om du avslutar denna djävulskt svåra bok  , Business Insider . Arkiverad från originalet den 1 mars 2019. Hämtad 5 november 2017.

Litteratur

Länkar