www.wikidata.de-de.nina.az
Mit literate programming engl naherungsweise mit literarisches Programmieren ubersetzbar bezeichnet man das Schreiben von Computerprogrammen in einer Form so dass sie vor allem fur Menschen lesbar sind Literate programming bedeutet technisch gesehen dass sowohl die Dokumentation als auch der Quelltext des Programms in einer gemeinsamen Datei vorhanden sind Spezielle Werkzeuge sorgen dafur dass sowohl der Quelltext als auch die Dokumentation aus dieser Datei extrahiert werden konnen Da die fur den Menschen geschriebene Dokumentation im Vordergrund steht ist die Reihenfolge der Programmausdrucke so ausgelegt dass diese verstandlich dokumentiert werden konnen Inhaltsverzeichnis 1 Motivation 2 Geschichte 3 Eigenschaften eines Literate Programming Systems 4 Verwandte Konzepte und Programme 4 1 Dokumentationsgeneratoren 4 2 Spezielle Programmiersprachen 4 3 Generelle Textsatzsysteme 4 4 Programming by Intention 5 Software 6 Literatur 7 Weblinks 8 EinzelnachweiseMotivation BearbeitenIn Communications of the ACM fragt 1986 Jon Bentley When was the last time you spent a pleasant evening in a comfortable chair reading a good program deutsch Wann war das letzte Mal dass Sie einen angenehmen Abend in einem bequemen Sessel verbracht haben und dabei ein gutes Programm gelesen haben Der Hintergrund dieser Frage beruht auf der Tatsache dass zwar so mancher Programmierer hervorragende Arbeit leistet und dementsprechend gute Programme erstellt dass aber kaum ein Programmierer seine Programme ausreichend dokumentiert Geschichte BearbeitenDie angesprochene Problematik wurde jedoch schon fruher erkannt Die erste Programmierumgebung die literate programming unterstutzte war das von Donald Knuth entwickelte WEB 1981 fur die Implementierung des TeX Systems entwickelt benutzte es Pascal als Programmiersprache und TeX als Dokumentationsgenerator 1 Nachfolger von WEB war CWEB welches C als Grundlage benutzte Eigenschaften eines Literate Programming Systems BearbeitenEin Literate Programming System ermoglicht Folgendes Quellcode und Kommentare konnen miteinander gemischt werden Die Quellcode Abschnitte konnen in beliebiger Reihenfolge angeordnet werden Das Literate Programming System setzt sie automatisch in der Reihenfolge zusammen so dass sie ausgefuhrt werden konnen tangle Aus Programm und Beschreibung kann automatisch eine lesbare Dokumentation mit Inhaltsverzeichnis Verweisen Registern etc erstellt werden weave Verwandte Konzepte und Programme BearbeitenDas ursprungliche Konzept wurde schliesslich von anderen Entwicklern ubernommen und fand ebenfalls in anderen Programmiersprachen teilweise seinen Niederschlag Dokumentationsgeneratoren Bearbeiten Der Dokumentationsgenerator Doxygen ahnlich wie Java mit Javadoc setzt das Konzept teilweise um Speziell formatierte Kommentare im Quelltext in einer der unterstutzten Programmiersprachen konnen extrahiert und in eine Dokumentation einbezogen werden Im Unterschied zum ursprunglichen Gedanken wird durch dieses Konzept nur eine detailgetreue Spezifikation des Quelltextes und seiner Struktur ermoglicht Funktionsparameter konnen genau spezifiziert werden Eine vollstandige Dokumentation des Quelltextes hingegen ist mit diesen Programmen nicht moglich auch gerade weil eine Umordnung des Programms nicht moglich ist Spezielle Programmiersprachen Bearbeiten Die Programmiersprache Haskell erlaubt Literate Programming bereits auf Quelltextebene Kommentare und Programmanweisungen konnen beliebig gemischt werden Im Gegensatz zu anderen Programmiersprachen wird bei dieser Strategie der Quelltext speziell markiert und nicht die dazugehorigen Kommentare Eine Umordnung ist jedoch auch hier nicht moglich Generelle Textsatzsysteme Bearbeiten Durch geeignetes Verschranken von Quellcode und Kommentar kann man bei Einsatz geeigneter Textsatzsysteme Literate Programming erreichen So kann man zum Beispiel C Quellcode so schreiben dass er mit dem C Compiler zu einem Programm kompiliert werden kann aber mit troff groff daraus auch ein Postscript Dokument mit Grafiken erzeugt werden kann Dabei sind gegenuber echten Literate Programming Tools einige Einschrankungen in der Funktionalitat in Kauf zu nehmen da eine spezielle Software mehr Moglichkeiten anbieten kann als generelle Textsatzsysteme 2 Programming by Intention Bearbeiten Programming by Intention nicht zu verwechseln mit Intentionaler Programmierung ist ein Konzept der Agilen Softwareentwicklung welches besagt dass bei der Implementierung von Methoden nicht wie ublich Algorithmen implementiert werden sondern nur Intentionen niedergeschrieben werden Diese Intentionen entsprechen dann ublicherweise weiteren Hilfsmethoden oder einzeiligen Algorithmen Damit wird sichergestellt dass das Programm auch ohne Programmierkenntnisse ausserst einfach zu lesen ist 3 Software BearbeitenWEB das Original Noweb CWEB von Marc van Leeuwen funnelweb basiert nicht auf WEB CWEB fweb Weiterentwicklung von CWEB LEO Literate Editor with Outlines Literatur BearbeitenDonald E Knuth Literate Programming In The Computer Journal Band 27 Nr 2 1984 S 97 111 doi 10 1093 comjnl 27 2 97 Online PDF Stefan Mintert Nicht ohne einen Namen Literate Programming mit XSLT In iX Nr 4 2005 S 135 137 Stefan Lindner Literarisches Programmieren Donald E Knuths WEB System In c t Nr 10 1990 S 340 Weblinks BearbeitenLiterate ProgrammingEinzelnachweise Bearbeiten Der Quellcode von TeX wurde in TeX The program von Donald Knuth veroffentlicht Beispiel fur Einsatz von troff groff fur Literate Programming Programming by Intention Essential Skills for the Agile Developer PDF 731 kB Abgerufen von https de wikipedia org w index php title Literate programming amp oldid 194720083