The Art of Computer Programming, Bände 1, 2, 3, 4A und 4B

The Art of Computer Programming (TAOCP, deutsch Die Kunst der Computerprogrammierung) ist eine mehrbändige Monografie des US-amerikanischen Informatikers Donald E. Knuth über grundlegende Algorithmen und Datenstrukturen, für dessen Textsatz er die Programme TeX und Metafont entwickelt hat.

Die Beispielprogramme werden in einer von Knuth erdachten Assemblersprache dargestellt, die er für einen fiktiven „idealen“ Computer namens MIX entwickelte; dieser wurde mit Band 4a durch das „Nachfolgemodell“ MMIX abgelöst. Er verwendet die Assembler-Sprache MIXAL (MIX-Assembler-Language). Es ist geplant, die Bände 1–3 zu überarbeiten und alle Codebeispiele auf MMIX umzuschreiben. Knuth begründet den radikalen Schritt, eine eigene Assemblersprache zu benutzen, konsequent sowohl mit technischen als auch pädagogischen Argumenten sowie der Absicht, ein langfristiges Werk zu schaffen, das nicht von der jeweiligen Modeprogrammiersprache beeinflusst sein soll.

Vom Compilerbuch zum mehrbändigen Grundlagenwerk

Bearbeiten

Ursprünglich hatte der Verleger Knuth, der damals noch ein Student im Hauptstudium war, damit beauftragt, ein einzelnes Buch über Compiler zu schreiben. Knuth wollte jedoch alles notwendige Wissen zu diesem Thema präsentieren und dies in einer ausgereiften Form.

“I figured, as long as I’m going to do a book on compilers, I should include a few other chapters on basic techniques that people would use before they got all the way to compilers. So I threw in a chapter on everything I was interested in.”

„Ich dachte, wenn ich ein Buch über Compiler schreibe, dann sollte ich ein paar Kapitel über grundlegende Techniken einfügen, mit denen die Leute in Berührung kommen, bevor sie auf Compiler stoßen. So packte ich ein Kapitel über jedes Thema, für das ich mich interessierte, hinzu.“[1]

Nach Abschluss seines Studiums schrieb er dem Verleger und bat um die Erlaubnis, die Dinge etwas mehr im Detail zu schildern.

“Do you mind if I make this book a little bit longer, because I think there’s a need for explaining these things in somewhat more detail.”

„Würde es Ihnen etwas ausmachen, wenn ich das Buch ein bisschen ausführlicher machen würde, da ich denke, dass diese Dinge einer etwas detaillierteren Erklärung bedürfen.“

Die Antwort seines Verlegers fiel positiv aus.

“They said, ‚Oh no, go right ahead. Make it as long as you feel necessary.’”

„Sie sagten: ‚Aber nein, fangen Sie gleich an. Machen Sie es so umfangreich, wie Sie es für nötig halten.‘“

Der erste handgeschriebene Entwurf von 1967 umfasste 3900 Seiten. So entstand der Plan, eine siebenteilige Reihe zu verfassen, die wesentliche Grundlagen der Computerprogrammierung abdeckt.

Aufbau der Buchreihe

Bearbeiten

Die Reihe war wie folgt geplant:

Volume 1. Fundamental Algorithms (Erstausgabe 1968)
Chapter 1: Basic Concepts
Chapter 2: Information Structures
Volume 2. Seminumerical Algorithms (Erstausgabe 1969)
Chapter 3: Random Numbers
Chapter 4: Arithmetic
Volume 3. Sorting and Searching (Erstausgabe 1973)
Chapter 5: Sorting
Chapter 6: Searching
Volume 4. Combinatorial Algorithms (Erstausgabe 2011/2022)
Chapter 7: Combinatorial Searching
Chapter 8: Recursion
Volume 5. Syntactical Algorithms (geplanter Veröffentlichungstermin 2030)
Chapter 9: Lexical Scanning
Chapter 10: Parsing
Volume 6. The Theory of Context Free Languages
Chapter 11: The Theory of Context Free Languages
Volume 7. Compilers
Chapter 12: Compilers

Bisher sind die ersten drei Teile und ein Kapitel erschienen, bereits in mehreren überarbeiteten Auflagen.

TAOCP Volume 1, Fascicle 1: MMIX – A RISC Computer for the New Millennium

Zu Band 1 erschien 2005 ein Faszikel mit der Spezifikation von MMIX. Band 4 wurde ebenfalls seit 2005 vorab in Form von zwei Faszikeln pro Jahr veröffentlicht. Band 4A liegt seit Februar 2011 vor und Band 4B seit September 2022[2][3]. Auf Knuths Webseite sind jeweils vor der Veröffentlichung als Faszikeln erste Vorabversionen (Pre-Fascicles) verfügbar, damit Interessierte schon vor dem Druck erste Fehler finden können. Der Band 4C soll folgen, womöglich noch weitere.

Zu den oben genannten Büchern kommt ein weiteres, von Graham/Knuth/Patashnik Concrete Mathematics, welches die mathematischen Grundlagen von Band 1 in ausführlicherer Form behandelt.

Arbeitsfortschritt und Würdigung des Werkes

Bearbeiten

Obwohl Knuth bereits 1962 mit dem Schreiben begonnen hat, ist noch nicht abzusehen, wann das Werk vollendet sein wird. Der Autor rechnet mit der Fertigstellung von Band 5 im Jahr 2030[4] und plant anschließend eine (erneute) Aktualisierung und Überarbeitung der Bände 1 bis 3 sowie die Zusammenfassung der wichtigsten Inhalte der fünf Bände in einem neuen Werk. Die „stärker spezialisierten“ Bände 6 und 7 wolle er danach nur schreiben, sofern ihre Themen dann „noch relevant (seien) und noch nicht gesagt wurden“.[5]

Seit 1992 befindet sich Knuth im Ruhestand, um sich ausschließlich der Fertigstellung seiner Buchreihe zu widmen. Er bekommt dadurch kein Gehalt mehr, andererseits ist The Art of Computer Programming eine kommerziell sehr erfolgreiche Reihe: in der Zeit vom Ersterscheinungsdatum bis 1987 wurden jeden Monat zwischen 1000 und 2000 Exemplare verkauft.[1]

Während der Arbeit an der überarbeiteten Neuauflage von Band 2 kämpfte Knuth mit den Unzulänglichkeiten der damaligen Satztechniken und entwickelte schließlich sein eigenes System, das digitale Satzsystem TeX, das mittlerweile als Standard für Publikationen in der Mathematik und den Naturwissenschaften etabliert ist.

Die Akkuratesse seines Werkes, das der American Scientist zu den besten zwölf naturwissenschaftlichen Monographien des 20. Jahrhunderts zählt,[6] liegt Knuth so am Herzen, dass er regelmäßig ausführliche Fehlerkorrekturen bis hin zum kleinsten Satzfehler veröffentlicht und den ersten Finder jedes Fehlers mit einem Scheck über 256 US-Cent für inhaltliche Fehler bzw. 32 US-Cent für Kommafehler u. ä. honoriert.[7] Die Schecks werden jedoch von den meisten Empfängern nicht eingelöst – nur neun wurden eingelöst –, sondern eingerahmt. Seit Oktober 2008 werden die Schecks jedoch nicht mehr in US-Dollar, sondern in der virtuellen, hexadezimalen Währung der Bank of San Serriffe ausgestellt – dies begründet Knuth mit der Angst vor Scheckbetrug.[8]

Am Ende der einzelnen Kapitel gibt es einen Abschnitt zu Geschichte und Bibliographie mit historischen Informationen. Die Übungsaufgaben sind nach Schwierigkeitsgrad eingeteilt (und entsprechend markiert), die von extrem einfach (00) bis zum bis dahin nicht gelösten Forschungsproblem (50) reichen.

Literatur

Bearbeiten
  • Karen A. Frenkel: Donald E. Knuth – Scholar with a Passion for the Particular. In: Communications of the ACM. Vol. 30, No. 10, Oktober 1987.
  • Donald E. Knuth: The Art of Computer Programming
Bearbeiten
Commons: The Art of Computer Programming – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

Bearbeiten
  1. a b Karen A. Frenkel: Donald E. Knuth – Scholar with a Passion for the Particular. In: Communications of the ACM. Vol. 30, No. 10, Oktober 1987.
  2. Donald Ervin Knuth: The art of computer programming. volume 4B part 2: Combinatorial algorithms. Addison-Wesley, Boston Munich 2023, ISBN 978-0-201-03806-4.
  3. Donald E. Knuth: Art of Computer Programming, Volume 4B, The: Combinatorial Algorithms. 1st Auflage. Addison-Wesley Professional., 2022, ISBN 978-0-201-03806-4.
  4. The Art of Computer Programming (TAOCP) – Volume 5. Abgerufen am 14. März 2024.
  5. Don Knuth: The Art of Computer Programming (TAOCP) – Future Plans
  6. Philip & Phylis Morrison: 100 or so Books that shaped a Century of Science (Memento vom 28. Dezember 2008 im Internet Archive). In: American Scientist. November/Dezember 1999.
  7. heise.de
  8. Don Knuth: Recent News: Financial Fiasco

📚 Artikel Terkait di Wikipedia

Assemblersprache

Eine Assemblersprache, kurz auch Assembler genannt (von englisch to assemble ‚zusammenfügen‘), ist eine Programmiersprache, die auf den Befehlsvorrat

Donald E. Knuth

weiteren Forschungen für The Art of Computer Programming eine neue Prozessorarchitektur mit zugehörigem Assembler entwickelt und wird diese in einer zukünftigen

Assembler (Informatik)

Microsoft Macro Assembler (MASM), der Borland Turbo Assembler (TASM) und der Netwide Assembler (NASM) weit verbreitet. Auch der Flat Assembler (FASM) bietet

Zilog Z80

Frage der Konvention; die Assembler für den Z80 erzeugen aus den neuen Mnemonics den gleichen Maschinencode wie die 8080-Assembler aus den alten Mnemonics

Computerprogramm

Programmen sind Anwendungsprogramme für Personal Computer oder Notebooks und Apps für Anwendungen von mobilen Computern (Smartphones und Tabletcomputer). Seit den

PL/M

mikroprozessorbasierte Computer und diente als ursprüngliche Implementierungssprache für jene Teile des Betriebssystems CP/M, die nicht in Assembler geschrieben

C (Programmiersprache)

offiziellen Standard der Sprache. Seit 1978 galt hingegen das Buch The C Programming Language als informeller De-facto-Standard, welches Brian W. Kernighan

MOS Technology 6502

Adressierungsarten. Die Programmierung des MOS 6502 lässt sich anhand eines Assembler-Programms verdeutlichen, das das Maximum einer Folge vorzeichenloser Zahlen