×

The art of computer programming. Vol. 1: Fundamental algorithms. (English) Zbl 0191.17903

Addison-Wesley Series in Computer Science and Information Processing. London: Addison-Wesley Publishing Company. XXII, 634 p. (1968).
Dies ist der erste Band eines geplanten 7-bändigen Werkes über die “Kunst des Programmierens”: I Fundamental Algorithms: 1. Basic concepts, 2. Information Structures, II Seminumerical Algorithms: 3. Random Numbers, 4. Arithmetic, III Sorting and Searching: 5.Sorting Techniques, 6.Searching Techniques, IV Combinatorial Algorithms: 7. Combinatorial Searching, 8. Recursion, V Syntactic Algorithms: 9. Lexical Scanning, 10. Parsing Techniques, VI Theory of Languages: 11. Mathematical Linguistics, VII Compilers: 12. Programming Language Translation.
Es ist gedacht sowohl als Nachschlagewerk als auch als Lehrbuch für Vorlesungen oder zum Selbststudium. Deshalb sind in den Text eine Vielzahl von Übungen, meist mit Lösungen, eingefügt. Die Monographie richtet sich keineswegs nur an Programmierungsexperten. Es ist im Gegenteil das erklärte Ziel des Verfassers, Programmierungstechniken denen zugänglich zu machen, die auf anderen Gebieten arbeiten und mit Erfolg Digitalrechner für ihre Probleme benutzen könnten. Gewisse Vorkenntnisse werden jedoch benötigt. Nach Meinung des Verfassers ist als Leser geeignet, wer “mindestens vier Programme für mindestens einen Digitalrechner geschrieben und getestet hat”. Den Gegenstand des Buches bezeichnet der Verfasser als “Analysis der Algorithmen”, worunter er die Theorie der Eigenschaften von speziellen Computeralgorithmen versteht. Dabei liegt sein Hauptaugenmerk auf der sogenannten nichtnumerischen Analysis, also der Entwicklung von “software” für Automaten, von Methoden für das Sortieren, für Sprachübersetzungen, für die Lösung abstrakter mathematischer Probleme und für das Beweisen mathematischer Sätze mit Hilfe von Rechenmaschinen. Der vorliegende erste Band ist die gemeinsame Grundlage der folgenden, als weitgehend voneinander unabhängig geplanten Bände. Das erste Kapitel enthält zunächst mathematische Grundlagen: Nach einer Einführung des Begriffs “Algorithmus” und der Beweismethode der vollständigen Induktion werden im einzelnen behandelt: Zahlen, Potenzen, Logarithmen, Summen und Produkte, elementare Zahlentheorie, Permutationen, Fakultät, Binomialkoeffizienten, harmonische Zahlen (Partialsummen der harmonischen Reihe), Fibonaccische Zahlen, erzeugende Funktionen \(G(z)=\sum_{n=0}^\infty a_nz^n\) für eine gegebene Folge von Zahlen \(a_0,a_1,\ldots,\) asymptotische Darstellungen, Eulersche Summenformeln. Ferner wird die maschinenorientierte Programmiersprache MIXAL für den hypothetischen Automaten MIX 1009, eine “Mixture” von 16 realen Rechenautomaten, eingeführt und an zahlreichen Übungsbeispielen erläutert. Schließlich werden grundlegende Programmiertechniken (subroutines, coroutines, interpretive routines) behandelt und ein in MIXAL geschriebener MIX-Simulator beschrieben, der die praktische Erprobung von MIXAL-Programmen auf konkreten Rechenanlagen ermöglichen soll.
Das zweite Kapitel ist Datenstrukturen gewidmet. Es behandelt lineare Datenlisten (stapel/stacks), Schlangen (queues) und “Deques” (double-ended-queues) und ihre Speicherung in Maschinen sowie das Arbeiten mit Bäumen. Welche Bedeutung den Übungsaufgaben in diesem Buch beigemessen wird, erkennt man daraus, dass die Lösungen (mit Angabe des Lösungsweges bzw. Beweisganges) 140 Seiten einnehmen. Der Anhang enthält ein Verzeichnis der verwendeten Bezeichnungen sowie Tabellen von wichtigen Konstanten (dezimal und oktal) und der harmonischen, Bernoullischen und Fibonaccischen Zahlen. Hervorzuheben ist schließlich der ausführliche Index (17 Seiten), der die Eignung des Buches als Nachschlagewerk unterstreicht.
Reviewer: Gerhard Maeß

MSC:

68-02 Research exposition (monographs, survey articles) pertaining to computer science
68Nxx Theory of software

Software:

MDK; OEIS