Eine Technik, die der Programmierungs-Adept sehr früh lernt, ist einen Ablauf mit einem Namen zu versehen. So muss man den Quelltext nur einmal schreiben und kann ihn immer wieder verwenden. Beispiel: Statt immer wieder m/(s*s)
zu schreiben erstellt man eine Funktion beschleunigung (m, s)
. Dann implementiert man diese Funktion, so dass sie eben genau diese Rechnung ausführt. Man muss sich nicht an die konkrete Formel erinnern, sondern nur an den Namen der Funktion. Überall, wo ein Beschleunigungswert errechnet werden soll, kann man die Funkion benutzen. Um die Bedeutung der Parameter m
und s
zu wissen, schaut man in der Dokumentation der Funktion nach.
Eine weitere “frühe” Technik ist die Wiederholung, aka Schleife, aka Iteration. Zweck davon ist es, einen bestimmten Ablauf viele Male durchzuführen, ohne es jedes Mal explizit auszuformulieren. Beispiel:
Brot kaufen!
Brot kaufen!
Brot kaufen!
Brot kaufen!
Brot kaufen!
kann man auch mit Hilfe einer Iteration formulieren:
Tue dies fünf mal:
Brot kaufen!
Ein echter Kracher ist, daß man die beiden Techniken kombinieren kann. Statt Brot kaufen!
kann ich für eine Reihe von unterschiedlichen Paaren von Strecken m und Zeiten s errechnen, wie groß jeweils beschleunigung (m, s)
ist.
Für alle (m, s) aus einer Menge P tue dies:
beschleunigung (m, s)
Tolle Sache. Der herauskristallisierte Ablauf ist die Grundlage für etliche weitere Berechungen. Der “Kern” der Lösung ist das einzelne Verfahren, die Iteration ist eine Ausprägung der Anwendung des Verfahrens.
In Lotus Notes beschäftige ich mich gerade mit
Für alle Dokumente d aus einer Menge V tue dies:
schreibePdfDatei ( d )
Reflexartig habe ich es so aufgebaut, wie die obige Beschreibung es nahe legt. Grundgedanke “Wenn ich in der Lage bin, das PDF für ein Dokument zu erzeugen, dann kann ich darüber beliebig oft iterieren”.
Wo ist der Haken
Ein PDF zu erzeugen braucht sehr lange Zeit, weil etliche Initialisierungen stattfinden. Deswegen habe ich das Pferd von hinten aufgezäumt: Das allgemeine Verfahren erzeugt PDF-Dateien für eine ganze Latte von Dokumenten. Und es kann vorkommen, daß “die ganz Latte” nur ein einziges Dokument enthält. Der Einzelfall wird verstanden als Besonderheit der Iteration. Da lugt wieder die Symmetrie um die Ecke. ‘Mag das.
Wenn man immer zuerst eine Liste erzeugen muss, um ein Verfahren auf Elemente anwenden zu können, dann ist das für den Programmierer unkomfortabel. Aber wenn man sowieso meistens mit Listen von Elementen arbeitet, so wie in diesem Fall, dann ist das kein Argument gegen so eine Implementierung. Und es lohnt sich, weil die Laufzeit enorm verkürzt wird.
Schlager sind Texte …
… die gesungen werden müssen, weil sie zu blöd sind, um gesprochen zu werden. Meine Oma hat sich immer über Zeilen wie diese aufgeregt: “das Mädel kennst du doch // Die ist kaum 13 Jahr …“. “Das Mädchen. ES! ist kaum …”, sagte sie immer. Wie auch immer – kommen die Musikanten zu uns oder wir zu denen? Kann beides zugleich immer wieder Sonntags geschehen?