{"id":238,"date":"2012-06-09T10:53:30","date_gmt":"2012-06-09T08:53:30","guid":{"rendered":"https:\/\/herr-rau.de\/blogs\/inform\/?page_id=238"},"modified":"2012-06-09T10:53:30","modified_gmt":"2012-06-09T08:53:30","slug":"literate-programming","status":"publish","type":"page","link":"https:\/\/herr-rau.de\/blogs\/inform\/?page_id=238","title":{"rendered":"Literate Programming"},"content":{"rendered":"<p><em>Literate Programming<\/em> ist ein Gedanke, der von Donald Knuth Anfang der 1980er Jahre bekannt gemacht wurde. Das Prinzip: Code so zu gestalten, dass er f\u00fcr Menschen angenehm zu lesen und zu verstehen ist. Dazu enth\u00e4lt <em>eine<\/em> Datei sowohl den Code als auch die Dokumentation dazu. (Ein \u00e4hnlicher Ansatz: javadoc.) Die Reihenfolge der Code-Elemente ist dabei beliebig umstellbar und f\u00fcr menschliche Leser optimiert, nicht f\u00fcr Computer:<\/p>\n<blockquote><p>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.<br \/>\n(Donald Knuth, <em>Literate Programming<\/em>, 1984)<\/p><\/blockquote>\n<p>Die verwendete Programmiersprache selber soll au\u00dferdem so verst\u00e4ndlich wie m\u00f6glich sein. Den menschenfreundlichen Quellcode (in einer Makrosprache) \u00fcbersetzt die Programmierumgebung dann a) in die Dokumentation und b) in das ausf\u00fchrbare Programm. <\/p>\n<p>Die erste solche Programmierumgebung war <a href=\"http:\/\/de.wikipedia.org\/wiki\/Web_%28Programmiersprache%29\">WEB<\/a> von Donald Knuth. Aus dem WEB-Quellcode erzeugt die Programmierumgebung eine TeX-Dokumentation und eine ausf\u00fchrbare Pascal-Datei. TeX selber ist in WEB geschrieben.<\/p>\n<ul>\n<li><a href=\"http:\/\/de.wikipedia.org\/wiki\/Literate_programming\">http:\/\/de.wikipedia.org\/wiki\/Literate_programming<\/a><\/li>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Literate_programming\">http:\/\/en.wikipedia.org\/wiki\/Literate_programming<\/a><\/li>\n<li><a href=\"http:\/\/www.literateprogramming.com\/\">http:\/\/www.literateprogramming.com\/<\/a><\/li>\n<\/ul>\n<p>(Mein Wissen um Literate Programming ist zugegebenerma\u00dfen noch gering, nicht viel mehr als halbverdautes Wikipediawissen.)<\/p>\n<p>&#8212; Inform 7 kann man als Beispiel f\u00fcr Literate Programming sehen. Die Bezeichner von Variablen, Klassen, Attributen udn Methoden k\u00f6nnen sehr lesefreundlich sein, n\u00e4mlich aus mehreren W\u00f6rtern mit Leerzeichen dazwischen bestehen. Die Makrosprache Inform 7 ist dem Englischen sehr nahe, oft gibt es mehrere M\u00f6glichkeiten, denselben Befehl zu formulieren, etwa im Aktiv oder Passiv. <code>(The player carries the book\/The book is carried by the player.)<\/code> Die Reihenfolge von Klassendefinitionen, Attributerstellung, Wertzuweisung und Regeln f\u00fcr den Umgang mit Objekten ist weitgehend beliebig.<\/p>\n<p>Vor dem \u00dcbersetzen in Bytecode wird Inform 7 in die traditionellere Sprache Inform 6 \u00fcbersetzt &#8211; 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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00fcr Menschen angenehm zu lesen und zu verstehen ist. Dazu enth\u00e4lt eine Datei sowohl den Code &hellip; <a href=\"https:\/\/herr-rau.de\/blogs\/inform\/?page_id=238\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":94,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-238","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=238"}],"version-history":[{"count":0,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages\/238\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=\/wp\/v2\/pages\/94"}],"wp:attachment":[{"href":"https:\/\/herr-rau.de\/blogs\/inform\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}