If Fase Logo

mit Google im Archiv der If Fase

Ausgabe 12 vom 1. Oktober 2006 (als PDF):

24. September 2006 – Dr. Ludger Humbert

LaTeX – Teil 12: Quelltexte von Programmen

In einer Reihe von Artikeln in der If Fase werden nützliche Elemente von LaTeX vorgestellt, die erprobt sind und bei der Arbeit der Informatiklehrerin eingesetzt werden.

In den bisher vorgelegten zwölf Teilen der Artikelserie – Ausgaben 0 … 11: rhinodidactics.de/Archiv – finden Sie Hinweise und Anmerkungen zu den Themen: Installation, grundlegende Arbeitsweisen, Quellen zu Dokumentationen, Arbeit mit KOMAscript, PSTricks, Erstellung von Arbeitsblättern, Struktogrammen, Automatengrafen, Elemente von UML, Barcodes, Formularerstellung, Zitieren, Abbildungen, ER-Diagramme. Beginnend mit der Ausgabe 9 (Zitieren – normgerecht) wird das Thema von Fragen bestimmt, die von den Referendarinnen gestellt werden. Damit soll der konkrete Ausbildungsnutzen nachhaltig verbessert werden.

Code rules

Bestandteil der informatischen Modellierung ist die Umsetzung in eine Programmiersprache oder zumindest programmiersprachliche Konstrukte. Soll Programmcode Bestandteil von Texten sein, so ist zu bedenken, welcher konkrete Anwendungsfall vorliegt. Um die Entscheidungsindung zu unterstützen, werden zwei verschiedene Anwendungsfälle dargestellt, die im Zusammenhang mit LaTeX sehr gut unterstützt werden. Dabei wird der triviale Ansatz, Quellcodestücke mit einem entsprechenden Font zu setzen, hier nicht betrachtet. Gründe für diese Entscheidung werden durch das Studium des Artikels offensichtlich.

LaTeX – Ansätze zur Unterstützung

Literate Programming

Die Anforderung zur Unterstützung der Quellcodeentwicklung wurde vom TeX-Meister selbst (== Don Knuth) formuliert und mit Literate Programming beantwortet:

The main idea is to regard a program as a communication to human beings rather than as a set of instructions to a computer Quelle: sunburn.stanford.edu/~knuth/cweb.html

literateprogramming.com stellt eine Sammlung von Elementen bereit, die diesen Ansatz zur schrittweisen Verfeinerung einer Problemlösung dokumentierten (inkl. der Originalarbeit von Donald Knuth aus dem Jahr 1984). Ich habe den Eindruck, dass dieser Ansatz unterbewertet wurde und habe selbst einige Erfahrungen in der entwicklungsbegleitenden Dokumentation gesammelt. Zunächst ist hervorzuheben, dass es nur noch eine Quelle für den Quellcode gibt die Dokumentation.

Literate Programming – Werkzeuge

Eine Datei, die sowohl die Dokumentation, aber auch den Quellcode enthält, wird mit der Endung nw versehen (im Unterschied zur üblichen Endung von LaTeX tex. Dies ist sinnvoll, da aus dieser Datei in einem nächsten Schritt die verschiedene Dateien (unter anderem eine tex-Datei) extrahiert werden. Diese umfassen die zusammengebauten Quellcodeschnipsel und selbstverständlich auch die tex-Datei, die dann für das Setzen der Dokumentation verwendet wird. Die Dokumentation enthält – neben den Codeschnipseln – Hypertextfunktionen, die es zum Beispiel ermöglichen, von Quelltextelement zu Quelltextelement weiterzugehen. Auf diese Weise ist es möglich, den Quelltext auch in der Dokumentation zusammenhängend zu lesen. Außerdem werden Möglichkeiten bereitgestellt, den Quelltext mit weiteren Eigenschaften so zu versehen, dass automatisch Indizes angelegt werden können, etc.

Ursprünglich unterstützte Knuth mit seiner Lösung die Programmiersprache Pascal. Inzwischen wird eine grosse Anzahl von Programmiersprachen direkt unterstützt (unter anderem auch Python).

Arbeitsablauf

Mit einem Editor der Wahl wird – wie üblich – der LaTeX-Quellcode für die Dokumentation erstellt. Dabei gibt es eine Reihe von Möglichkeiten für die weitere Verarbeitung der Quelle. Diese sind zusammenfassend auf einer Seite dokumentiert www.eecs.harvard.edu/~nr/noweb/onepage.ps Quellcode wird mittels << und >> ausgezeichnet. Damit ist die prinzipielle Struktur einfach realisierbar. Auf der o.g. Seite finden sich einige Kommandos, die auf die Noweb-Datei angewendet werden können, um den Quellcode zu extrahieren, um die Dokumentation (inkl. Kreuzreferenzen, etc.) zu erstellen, u.v.a.m.

Bei der Eingabe des Quellcodes für eine *.nw-Datei ist darauf zu achten, dass (außerhalb des Programmtextes) »Möwchen« als Auszeichnung für die sogenannten Chunks (== Codeschnipsel) reserviert sind. Dies hat die Konsequenz, dass für die von mir zur Darstellung von Zitaten bevorzugten Möwchen jeweils mit dem Prefix »@« eingeleitet werden müssen, damit sie nicht als Quellcode interpretiert werden. Damit stellen @>> und @<< bei meinen Texten den Beginn und das Ende eines Zitats dar, wenn Noweb verwendet wird.

Unterstützung

LyX lyx.org unterstützt die Nutzung von Noweb, so dass die Dokumentation inklusiv Quellcode nicht unbedingt LaTeX-Kenntnisse erfordert, sondern mit der aus LyX bekannten WYSIWYM (What You See Is What You Mean) Sicht eingegeben werden kann. Bestandteil von LyX ist die Datei noweb2lyx.lyx die als Ausgangspunkt für eigene Testfälle herangezogen werden kann.

Mit Leo wurde ein Editor entwickelt, der von der Quellcodeseite ausgehend, die nötigen Funktionen über eine GUI bereitstellt. Benutzer berichten, dass sie mit diesem Ansatz eine völlig neue Sicht auf ihre Programmentwicklung gefunden haben. Ich habe dieses Werkzeug (das in Python geschrieben ist) bisher nicht eingesetzt. webpages.charter.net/edreamleo/front.html

Dokumentation inklusiv Quellcode

Der Ansatz, den Knuth mit Literate Programming verfolgt, besteht darin, den Entwicklungsprozess schrittweise so zu dokumentieren, dass die Elemente, die später das komplette Programm ausmachen Bestandteil der Dokumentation sind. Dies führt dazu, dass bei zukünftigen Änderungen an der Dokumentation und/oder dem Quellcode nur eine Quelle maßgeblich ist und bearbeitet werden muss. Dieses Vorgehen ermöglich die Softwareentwicklung von der groben Vorstellung der Problemlösung über die Ausarbeitung von Details gemäß der Top-Down-Entwicklung. Die Darstellung wird mit erläuternden Texten versehen und stellt so die Dokumentation des Problemlösevorgangs vor. Dabei kann durchaus von einem strikten Top-Down-Entwurf abgewichen werden. Aus dieser Darstellung kann automatisch auflauffähiger Quellcode produziert werden.

Arbeitsblatt mit integriertem Quellcode (Noweb)

Arbeitsblatt mit integriertem Quellcode (Noweb)

Für ein neues Projekt sollten Sie sich einmal mit dieser Variante beschäftigen, da gerade in diesem Fall die Stärke der integrierten Dokumenation unmittelbar zu Tage tritt.

Wollen Sie allerdings nur die hervorragenden Möglichkeiten des Textsatzes von LaTeX nutzen, um bereits entwickelten Quellcode schön darzustellen, so ist das im Folgenden beschriebene Paket geeignet[er].

Das Paket Listings – Programmcode darstellen

Ein anderer Ansatz – Darstellung existierenden Programmcodes – ist mit dem Paket Listings in hervorragender Weise zu realisieren. Auch dieses Paket unterstützt sehr viele Programmiersprachen.

Die hier veröffentlichten Inhalte stellen keine Meinungsäußerungen der Studienseminare Hamm Arnsberg dar.
© Redaktion If Fase