literate programming: erklären statt programmieren

Die Dokumentation ist der Schlüssel zum System

01.07.1999
Wenn ein Computersystem zum Problem wird, ist das für Peter Naeve* auch eine Frage der Dokumentation. Im Gespräch mit Johannes Fritsche** plädiert er dafür, den Weg von der Idee zum Programm zu erklären.

young professional Die Jahr-2000-Problematik zeigt, wie viel von der Softwarequalität abhängt. Was sind Merkmale guter Software?

- aeve Wie gut ein System ist, kann man immer erkennen, wenn es einen Crash gibt. Wenn der Anwender etwas macht, wofür er gute Gründe hat, und sich herausstellt, daß das System es nicht kann, dann sieht man, was alles falsch läuft.

young professional Sie ziehen Rückschlüsse aus dem Crash?

- aeve Das Anklicken eines Icons löst den Crash zwar aus, ihm liegt aber auf den tieferen Ebenen eine Abfolge von Programmschritten zugrunde, hinter der ein anderes Konzept steckt als vermutet. Deshalb wird ein vermeintlich theoretisches, das Konzept betonendes Nachdenken immer wichtiger.

young professional Was heißt das für die klassische Systemanalyse?

- aeve Die Systemanalyse ist immer der Anfang. Herauszufinden, was eigentlich Sache ist, ist aber nach wie vor sehr schwierig. Ich muß ein Konzept haben, um ein Problem so zu strukturieren, daß ich es auf den Rechner kriege. Wenn ich das einmal gelernt habe, dann kann ich es überall anwenden. Ausgangspunkt ist die Aufgabe in der Weltsicht des Auftraggebers.

young professional Wie vermeide ich die berüchtigte Spaghetti-Programmierung, mit deren Nachbesserung sich die Jahr2000-Experten herumschlagen müssen?

- aeve Durch Literate Programming, wie es D. E. Knuth in "The Computer Journal", Heft 2/1984, beschrieben hat. Er fordert einen Paradigmenwechsel. Wir sollen nicht für den Computer programmieren, sondern einer anderen Person aufschreiben, wie wir den Computer zur Lösung des Problems einsetzen wollen. Ich erkläre im Text meinen Weg von der Idee zum Programm.

young professional Sie schreiben das Programm für mich als Kunden, und der Rechner kommt dann damit klar?

- aeve Ich schreibe kein Programm, sondern eine Erklärung darüber, wie ich mit dem Rechner die Aufgaben lösen will. Wenn der Rechner mir über die Schulter geblickt hätte, hätte er das Programm. Erst nachdem ich Ihnen meine Geschichte erzählt habe, kommt das System und sagt, als Programm sieht das so aus. Dadurch habe ich Programm und Lösungskonzept zusammen, und diese Rätselei - Was hat man sich dabei gedacht? - hört auf.

young professional Wie verhalten sich Literate Programming und die etablierten Programmiersprachen zueinander?

- aeve Völlig unabhängig voneinander. Wir haben Literate Programming bisher schon auf PASCAL, auf C, auch auf APL, einer extrem unleserlichen Sprache, angewandt. Auch unser Systemadministrator schreibt seine Dokumente so, daß er danach alles aus dem aufgeschriebenen Dokument heraus aktivieren kann.

young professional Erhalte ich ein Programm mit weniger Fehlern, wenn ich alles aufschreibe?

- aeve Es müßte auf diese Art leichter Vertrauen zum Endprodukt aufkommen, als wenn ich nur einen Programmcode habe, von dem ich nicht nachvollziehen kann, wie er entstanden ist. Normalerweise enthält ein solcher Code keine Kommentare mehr.

young professional Welche Aufgaben kommen auf die Unternehmen und die Programmierer nach der Lösung des Jahr-2000-Problems zu?

- aeve Dann müßte eigentlich klar ausgesprochen werden, daß wir die Systeme nicht mehr richtig beherrschen. Das Jahr-2000-Problem hängt letztlich damit zusammen, daß keiner mehr weiß, was diese Software eigentlich macht, weil es - platt gesprochen - keine Dokumentation gibt. Aber was soll eigentlich dokumentiert werden? Die Idee. Ich hoffe, daß das in Angriff genommen wird, weil die Probleme sonst immer größer werden.

young professional Bei der Komplexität der Softwareproduktion - auf welche Eigenschaften sollte ein Unternehmer achten, wenn er Programmierer einstellt?

- aeve Unternehmer sollten weniger spezifische Erfahrungen in den Vordergrund stellen wie "Kenntnis von…, Umgang mit… und so weiter". Das sind Dinge, die nicht unbedingt etwas über die Qualität des Menschen aussagen. Statt dessen sollten sie herausfinden, ob der Mitarbeiter in Konzepten denken kann. Außerdem ist die Teamfähigkeit wichtig. Was wir jetzt besprochen haben, funktioniert nur, wenn die Leute bereit sind, miteinander über ihre Tätigkeiten zu reden. Das Ausbreiten von Ideen setzt immer voraus, daß einer redet und der andere zuhört. Eine solche Kommunikation müssen Firmen dulden, auch wenn sie sich nicht sofort in vollgeschriebenen Seiten niederschlägt.

young professional Was raten Sie dem Studenten, der Programmieren lernen möchte?

- aeve Das, was zur Zeit am wenigsten beliebt ist: Er soll lernen, Konzepte zu verstehen und in Konzepten zu denken, und sich erst dann vor den Rechner setzen und das Programm schreiben.

young professional Worauf sollte er später bei der Suche nach einem Arbeitsplatz achten?

- aeve Die Firma sollte Interesse daran haben, seine Entwicklung aktiv zu unterstützen. Sie sollte ihm im Sinne einer "bezahlten Muße" auch mal erlauben, während der Arbeitszeit ein Buch zu lesen. Das Tagesgeschäft geht sonst immer vor.

young professional Gibt es so eine Grundkompetenz, die ein guter Programmierer haben sollte?

- aeve Die Grundkompetenz ist nicht in erster Linie Informatik, sondern Mathematik. Mit Integrieren anzufangen hat keinen Zweck, bevor man nicht das beherrscht, was man integrieren möchte.

*Professor Peter Naeve ist Inhaber des Lehrstuhls Informatik und Statistik der Fakultät für Wirtschaftswissenschaften an der Universität Bielefeld.

**Johannes Fritsche ist freier Journalist in Bonn und Brüssel.