Literate Programming

Literate Programming ist ein Gedanke, der von Donald Knuth Anfang der 1980er Jahre bekannt gemacht wurde. Das Prinzip: Code so zu gestalten, dass er für Menschen angenehm zu lesen und zu verstehen ist. Dazu enthält eine Datei sowohl den Code als auch die Dokumentation dazu. (Ein ähnlicher Ansatz: javadoc.) Die Reihenfolge der Code-Elemente ist dabei beliebig umstellbar und für menschliche Leser optimiert, nicht für Computer:

The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variable means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that reinforce each other.
(Donald Knuth, Literate Programming, 1984)

Die verwendete Programmiersprache selber soll außerdem so verständlich wie möglich sein. Den menschenfreundlichen Quellcode (in einer Makrosprache) übersetzt die Programmierumgebung dann a) in die Dokumentation und b) in das ausführbare Programm.

Die erste solche Programmierumgebung war WEB von Donald Knuth. Aus dem WEB-Quellcode erzeugt die Programmierumgebung eine TeX-Dokumentation und eine ausführbare Pascal-Datei. TeX selber ist in WEB geschrieben.

(Mein Wissen um Literate Programming ist zugegebenermaßen noch gering, nicht viel mehr als halbverdautes Wikipediawissen.)

-- Inform 7 kann man als Beispiel für Literate Programming sehen. Die Bezeichner von Variablen, Klassen, Attributen udn Methoden können sehr lesefreundlich sein, nämlich aus mehreren Wörtern mit Leerzeichen dazwischen bestehen. Die Makrosprache Inform 7 ist dem Englischen sehr nahe, oft gibt es mehrere Möglichkeiten, denselben Befehl zu formulieren, etwa im Aktiv oder Passiv. (The player carries the book/The book is carried by the player.) Die Reihenfolge von Klassendefinitionen, Attributerstellung, Wertzuweisung und Regeln für den Umgang mit Objekten ist weitgehend beliebig.

Vor dem Übersetzen in Bytecode wird Inform 7 in die traditionellere Sprache Inform 6 übersetzt - dort sind die Methoden unmittelbarer den Objekten zugeordnet, alle Information zu einer Klasse bzw., zu einem Objekt stehen innerhalb der abgeschlossenen Definition, wie man das von Java auch kennt.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">