Kunsten at programmere

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 30. juni 2022; checks kræver 2 redigeringer .
Kunsten at programmere
Kunsten at programmere computer
Forfatter Donald Knuth
Genre Informatik
Originalsprog engelsk
Original udgivet 1968
Tolk S. G. Trigub, Yu. G. Gordienko, I. V. Krasikov og andre.
Serie Kunsten at programmere
Forlægger Williams / Addison-Wesley
Frigøre siden 1968

The Art of Computer Programming [ 1] er en  grundlæggende monografi af den berømte amerikanske matematiker og datalog Donald Knuth , dedikeret til overvejelse og analyse af de vigtigste algoritmer , der bruges i datalogi . I 1999 blev bogen anerkendt som en af ​​århundredets tolv bedste fysiske og matematiske monografier [2] .

Bogskrivningsprojektet blev startet af forfatteren i 1962. I første omgang var det planlagt at udgive det i et bind, men mængden af ​​materiale viste sig at være så stor, at antallet af bind blev øget til syv. De første tre bind blev udgivet ret hurtigt: bind 1 - i 1968, bind 2 - i 1969, bind 3 - i 1973. Herefter fulgte en pause indtil februar 2005, hvor forfatteren udgav første del af fjerde bind. Det blev besluttet at udgive de resterende dele af fjerde bind cirka to gange om året i separate numre, hvorefter hele fjerde bind ville blive udgivet officielt. I løbet af 2005-2009 blev nummer 0, 1, 2, 3 og 4 udgivet, og i 2011 udkom bind 4A, som indeholdt information fra disse numre. Også i 2005 blev nummer 1 "MMIX - A RISC Computer for the New Millennium" udgivet, hvorfra information vil blive inkluderet i den nye, fjerde udgave af første bind. Nummer 6 (i 2015) og Nummer 5 (i 2017) blev udgivet som en del af bind 4B. Selve bind 4B blev udgivet i 2022.

Da Knuth altid havde anset The Art of Programming for at være sit livs hovedprojekt , trak han sig tilbage i 1993 med den hensigt at koncentrere sig fuldt ud om at skrive de manglende dele og rydde op i de eksisterende [3] . Han mente, at det ville tage 20 år at færdiggøre arbejdet [4] .

Historie

Som en anerkendt ekspert i compilerdesign begyndte Knuth i 1962 at skrive en bog om compilerdesign. Han indså hurtigt, at omfanget af materialet skulle være meget bredere. I juni 1965 var han færdig med at skrive den første version af det, han oprindeligt ønskede at udgive i en bog med tolv sektioner. Volumen af ​​den håndskrevne tekst var 3000 sider. Efter Knuths beregninger skulle dette bind have passet til 600 trykte sider, men som hans forlag oplyste, ville det faktiske bind være 2000 sider. I denne henseende blev bogens struktur revideret til fordel for flere bind, hver 1-2 afsnit. Siden da, på grund af den konstante vækst af materiale, blev det besluttet, at det fjerde bind også skulle opdeles i separate bøger: 4A, 4B, 4C og muligvis 4D. Men denne opdeling vil tilsyneladende ikke være endelig, da afsnit 7.1 og 7.2.1 allerede fylder mere end 650 sider i alt.

I 1976 producerede Knuth en anden udgave af andet bind, som krævede genskrivninger . Men det typografiske design ( monotypi ), der blev brugt i den første udgave, var ikke længere tilgængelig på dette tidspunkt. For at undgå lignende frustrationer i fremtiden begyndte Knuth i 1977 at udvikle sit eget typografiske computeropsætningssystem. Arbejdet skulle ifølge hans beregninger højst have taget seks måneder, men der gik omkring ti år, før det var afsluttet [5] . Systemet hed TeX , og bruges i øjeblikket til at sætte alle bind af The Art of Programming. Derudover blev TeX senere de facto standarden for at skrive artikler og monografier inden for naturvidenskab.

Ligesom Knuths andre bøger bærer The Art of Programming hans varemærke: For hver fejl fundet i teksten betaler forfatteren en hexadecimal dollar eller 2,56 $ (0x100 cent , base 16 ). Et andet kendetegn ved bogen er overfloden af ​​øvelser til selvopfyldelse, af varierende sværhedsgrader, lige fra simple "opvarmnings"-problemer til åbne problemer. Sværhedsgraden af ​​hver øvelse er vurderet på en numerisk skala fra 0 til 50. Så i de tidlige udgaver blev Fermats sidste sætning markeret med tallet 50 , men i den tredje udgave blev denne vurdering "devalueret" til 45, da gang dets bevis allerede var holdt op med at være et åbent problem.

Sammendrag af konventioner for bind tre, 1978 "Sortering og søgning" (venstre - vurdering, højre - kort forklaring)

Indhold

Den oprindelige plan for at skrive bogen foreslog følgende opdeling af materialet.

Faktisk blev denne ordning implementeret til og med tredje bind.

På nuværende tidspunkt[ hvornår? ] udgivet bind 4A, som indeholder de første afsnit af kapitel 7. De nye sektioner er planlagt til i første omgang at blive udgivet i separate numre (ca. 128 sider), ca. to numre om året (udgave 0, 1, 2, 3 og 4 blev tilsvarende udgivet før udgivelsen af ​​bind 4A).

Maskinorienteret eksempelsprog

Eksempelprogrammerne i bogen bruger en "MIX assembler" designet til at køre på en hypotetisk MIX computer. I den tredje udgave blev den forældede MIX erstattet af MMIX , ​​som har en fuldgyldig RISC - arkitektur. Der er software , der giver emulering af (M)MIX-maskinen på standard IBM-kompatible computere. GNU Compiler Collection har evnen til at kompilere C/C++-kode på MMIX-målarkitekturen.

Mange læsere er afskrækket af det faktum at bruge et sprog på lavt niveau, men Knuth anser hans valg for berettiget, da bindingen til arkitekturen er nødvendig for nøjagtigt at kunne bedømme sådanne karakteristika ved algoritmen som hastighed, hukommelsesforbrug, og så videre. Som følge af dette valg er målgruppen dog stærkt indsnævret. Derudover er dens omfang begrænset som en "bog med opskrifter" for praktiske programmører, hvoraf mange ikke kender assemblersprog, og hvis de gør det, har de ikke lyst til at oversætte lavniveaualgoritmer fra bogen til højniveausprog . Mange praksisvejledninger, der præsenterer det samme materiale på en mere populær måde, udgives netop af denne grund.

Kritik

Hovedtrækket i Knuths monografi, som adskiller den gunstigt fra andre bøger om programmering, er den usædvanligt høje bar for kvaliteten af ​​materialet og den akademiske præsentation, samt dybden af ​​analyse af de emner, der overvejes. Takket være dette er den blevet en rigtig bestseller og en opslagsbog for enhver professionel programmør [6] . The American Scientist magazine inkluderede The Art of Programming på sin liste over de 12 bedste fysiske og matematiske monografier i det 20. århundrede [2] sammen med Diracs værker om kvantemekanik , Einstein om relativitetsteorien , Russell og Whitehead om grundlaget. af matematik og nogle få andre [7] .

Forsiden af ​​tredje udgave af bogens første bind indeholder et citat fra Bill Gates : "Hvis du betragter dig selv som en rigtig god programmør ... læs The Art of Programming (Knuth) ... Hvis du kan læse alt dette arbejde , så skal du helt klart sende mig et CV" [8] .

Udgaver

Original

Tredje (nuværende)

I stigende rækkefølge af bindnumre:

  • Bind 1: Grundlæggende algoritmer . Tredje udgave (Reading, Massachusetts: Addison-Wesley, 1997), xx+650 s. ISBN 0-201-89683-4
  • Bind 1, Fascicle 1: MMIX  - A RISC Computer for the New Millennium . (Addison-Wesley, 14. februar 2005) ISBN 0-201-85392-2 (vil være i den fjerde udgave af bind 1)
  • Bind 2: Seminumeriske algoritmer . Tredje udgave (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. ISBN 0-201-89684-2
  • Bind 3: Sortering og søgning . Anden udgave (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout. ISBN 0-201-89685-0
  • Bind 4A: Kombinatoriske algoritmer, del 1 (Upper Saddle River, New Jersey: Addison-Wesley, 2011), xvi+883pp. ISBN 0-201-03804-8
  • Bind 4B: Combinatorial Algorithms, Part 2 (Upper Saddle River, New Jersey: Addison-Wesley, 2023), xviii+714pp. ISBN 0-201-03806-4
Forrige

Efter udgivelsesdato:

  • Bind 1 , første udgave, 1968. 634pp. ISBN 0-201-03801-3 .
  • Bind 2 , første udgave, 1969, xi+624pp, ISBN 0-201-03802-1 .
  • Bind 3 , første udgave, 1973, xi+723pp+centerfold, ISBN 0-201-03803-X
  • Bind 1 , anden udgave, 1973, xiii+634pp, ISBN 0-201-03809-9 .
  • Bind 2 , anden udgave, 1981, xiii+ 688pp. ISBN 0-201-03822-6 .
  • Bind 4, Fascicle 2: Generating All Tuples and Permutations , (Addison-Wesley, 14. februar 2005) v+127pp, ISBN 0-201-85393-0
  • Bind 4, Fascicle 3: Generering af alle kombinationer og partitioner . (Addison-Wesley, 26. juli 2005) vi+150pp, ISBN 0-201-85394-9
  • Bind 4, Fascicle 4: Generating all Trees  - History of Combinatorial Generation , (Addison-Wesley, 6. februar 2006) vi+120pp, ISBN 0-321-33570-8
  • Bind 4, Fascicle 0: Introduction to Combinatorial Algorithms and Boolean Functions , (Addison-Wesley Professional, 28. april 2008) vi+240pp, ISBN 0-321-53496-4
  • Bind 4, Fascicle 1: Bitvise tricks og teknikker; Binære beslutningsdiagrammer (Addison-Wesley Professional, 27. marts 2009) viii+260pp, ISBN 0-321-58050-8
  • Bind 4, Fascicle 6: Satisfiability , (Addison-Wesley, 8. december 2015) xiii+310pp, ISBN 978-0-13-439760-3
  • Bind 4, Fascicle 5: Mathematical Preliminaries Redux; tilbagesporing; Dancing Links , (Addison-Wesley, 16. juni 2017) 320pp, ISBN 978-0-13-467179-6

Russisk oversættelse

  • Knut D.E. Kunsten at programmere computer. Bind 1. Grundlæggende algoritmer - M.: Mir, 1976. - 735 s.
  • Knut D.E. Kunsten at programmere computer. Bind 2. Opnåede algoritmer - M.: Mir, 1977. - 724 s.
  • Knut D.E. Kunsten at programmere computer. Bind 3. Sortering og søgning - M.: Mir, 1978. - 844 s.
  • Knut D. E. Kunsten at programmere. Bind 1. Grundlæggende algoritmer = Kunsten at programmere computer. Bind 1. Fundamental Algorithms / red. S. G. Trigub (kap. 1), Yu. G. Gordienko (kap. 2) og I. V. Krasikova (afsnit 2.5 og 2.6). - 3. - Moskva: Williams, 2002. - T. 1. - 720 s. — ISBN 5-8459-0080-8 .
  • Knut D. E. The Art of Computer Programming, bind 1, udgave 1. MMIX - A RISC Computer for the New Millennium. - M . : "Williams" , 2007. - 160 s. - ISBN 978-5-8459-1163-6 .
  • Knut D. E. Kunsten at programmere. Bind 2. De resulterende algoritmer = The Art of Computer Programming. Bind 2. Seminumeriske algoritmer / udg. L. F. Kozachenko (kapitel 3, afsnit 4.6.4 og 4.7), V. T. Tertyshny (kapitel 4) og I. V. Krasikov (afsnit 4.6). - 3. - Moskva: Williams, 2001. - T. 2. - 832 s. — ISBN 5-8459-0081-6 .
  • Knut D. E. Kunsten at programmere. Bind 3. Sortering og søgning = The Art of Computer Programming. Bind 3. Sortering og søgning / red. V. T. Tertyshny (kap. 5) og I. V. Krasikov (kap. 6). - 2. udg. - Moskva: Williams, 2007. - T. 3. - 832 s. — ISBN 5-8459-0082-1 .
  • Knut D. E. The Art of Computer Programming, Bind 4, A. Combinatorial Algorithms, Part 1 = The Art of Computer Programming, Bind 4A: Combinatorial Algorithms, Part 1 / ed. Yu. V. Kozachenko. - 1. - Moskva: Williams, 2013. - T. 4. - 960 s. - ISBN 978-5-8459-1744-7 .

Relaterede bøger

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

Noter

  1. Kunsten at programmere computer . Hentet 14. juni 2008. Arkiveret fra originalen 26. februar 2009.
  2. 1 2 Morrison, Philip & Morrison, Phylis (1999), 100 eller deromkring bøger, der formede et århundrede af videnskab , amerikansk videnskabsmand (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 > . Hentet 11. januar 2008. Arkiveret 28. december 2008 på Wayback Machine 
  3. David Walden. Vinder af Donald E. Knuth - A. M. Turing-pris . ACM . Hentet 6. september 2016. Arkiveret fra originalen 19. september 2017.
  4. Knuth: Pensionering . Hentet 14. juni 2008. Arkiveret fra originalen 26. juni 2008.
  5. Historien om TeX - TeX Users Group . Hentet 14. juni 2008. Arkiveret fra originalen 7. august 2011.
  6. Donald Knuth The Art of Computer Programming, bind 1. Grundlæggende algoritmer = The Art of Computer Programming, bind 1. Grundlæggende algoritmer. - 3. udg. - M .: "Williams", 2006. - S. 720. - ISBN 0-201-89683-4 , Fra udgiverne af den russiske oversættelse
  7. Kunsten at programmere computer . Hentet 14. juni 2008. Arkiveret fra originalen 4. september 2008.
  8. Bill Gates sagde engang "send mig bestemt et CV", hvis du er færdig med denne djævelske svære bog  , Business Insider . Arkiveret fra originalen den 1. marts 2019. Hentet 5. november 2017.

Litteratur

Links