Programmiersprachen von A bis Z: Modula 2

von Gary L. Ratliff, Sr. (eronstuc)

Einführung in Modula 2

Modula 2 wurde von Niklaus Wirth entwickelt, welcher auch der Entwickler der Sprache Pascal war. Zusätzlich zu dieser Sprache entwickelte er Oberon 2, welches eine objektorientierte Variante von Modula 2 ist. Nachdem Pascal in die Computerwelt eingeführt worden war, wurde es sehr schnell angepasst, um als Lehrsprache zu dienen. Bald gab es viele Varianten (der Sprache) und Wirth benutzte diese, um Mängel aufzuzeigen. Dies veranlasste ihn 1975 eine Sprache namens Modula zu entwickeln und aus dieser entwickelte er später Modula 2 (1979).

Die charakteristischste Eigenschaft von Modula 2 ist, dass Programme in separaten Modulen entwickelt und kompiliert werden können. Die Sprache war mit einer Anzahl von Spracheigenschaften und gleichzeitig mit einem Satz von Modulen eingeführt worden, wobei letztere nicht als Teil der Sprache betrachtet wurden. Wirth betrachtete sie allerdings für den Gebrauch der Sprache als wünschenswert.

Wie bei Pascal, wurden von den verschiedenen Implementierungen bald eigene Modulsammlungen entwickelt. Man unternahm dann Anstrengungen die Sprache zu standardisieren und sicherzustellen, dass in den Modulen die erforderlichen Namen und Einträge in den Prozeduren verwendet werden, welche vom Modul unterstützt werden. Dies erlaubt Programmieren mit den Eigenschaften der Wirth Module oder mit denen, die vom ISO Standard gefordert werden.

Die Sprache Modula 2 lernen

Wir brauchen jetzt eine Anleitung, die uns in die Sprache Modula 2 einführt. Der einfachste Weg ist, die Worte Modula 2 in die Googlesuchmaschine einzugeben. Von den angezeigten Einträgen wählen Sie den Eintrag Modula Home und Sie gelangen auf die folgende Seite:

pic

Hier finden wir eine Anleitung für Neulinge, die sicher geeignet ist, die Eigenschaften der Sprache zu erlernen. Dieses Tutorium geht davon aus, dass der Leser unerfahren im Umgang mit Computern ist, es dient als eine Einführung in den gesamten Bereich. Um es aufzurufen, klicken sie einfach auf die Linie, die auf der oberen Seite zu sehen ist und mit „Modula-2 Tutorial“ benannt ist, dies öffnet die folgende Seite:

pic

Den besten Zugang hat man, wenn man mit dem Vorwort und der Einleitung beginnt. Hier erfahren Sie, dass Teil I des Tutoriums gelesen werden muss, bevor Sie damit fortfahren können die beiden Teile II und III gründlich durchzulesen. Beim Lesen werden Sie feststellen, dass für einige der wichtigsten Informationen nur der Hinweis „Under development“ (in Entwicklung) besteht. Das erscheint zum ersten Mal in der Sektion Input/Output.

Deshalb schlage ich vor, dass Sie auch die Anleitung von Rick Sutcliffe benutzen. Diese ist sehr vollständig. Sie bietet viele komplette Programmierbeispiele. Um dieses Tutorium zu finden, klicken Sie den LINKS-Eintrag auf obigen Seite an. Dadurch wird die folgende Seite angezeigt:

pic

Einmal auf dieser Seite sind, erreichen Sie das Tutorial durch Klicken auf den Eintrags „Modula 2: Abstractions for Data and Programming Structure “. Sie gelangen auf folgende Seite:

pic

Dies ist ein Textbuch mit 19 Kapiteln. Jedes der Kapitel hat verschiedene Sektionen, durch welche navigiert wird, indem Sie auf den Link zur jeweiligen Sektion klicken, den Sie im oberen rechten Teil der Seite finden.

Beachten Sie, dass jedes Kapitel ein Quiz bereitstellt und dass Antworten zum Material angeboten werden. Mit diesen zwei Tutorien sollte es kaum Probleme geben, die Sprache Modula 2 zu erlernen und zu nutzen.

Ein Compiler für Modula 2

Bei der Auswahl eines Compilers können einige Probleme auftreten. Zum Ersten wurde von GNU Modula 2 berichtete, dass er nicht fertig sei. Wie auch immer, kürzliche Überprüfungen haben ergeben, dass das System jetzt komplett ist. Obwohl ich den Anweisungen für die Installation des Systems auf einer PCLinuxOS-Partition und einer Partition, die ich für Debian Lenny 5.0 eingerichtet habe gefolgt bin, war die Einrichtung allerdings nicht erfolgreich. Im Folgenden sind die Instruktionen dafür, wie man das System bekommen kann und wie man es einrichtet angegeben:

Sie sollten beispielsweise in der Lage sein die aktuellste Version von GNU Modula-2 und GCC herunterzuladen, mittels dieser Befehle:

wget http://flopssie.comp.glam.ac.uk/download/c/gcc-4.1.2+gm2.\ cvs-latest.tar.gz
tar zxf gcc-4.1.2+gm2-cvs-latest.tar.gz

Dieser Schritt ist erfolgreich und Sie werden die aktuellste Version der beiden Dateien bekommen. Als nächstes ist es notwendig das System zusammenzufügen. Der Text fährt fort:

"Auf einem GNU/Linux System sollten sie zum Built in der Lage sein, indem sie diese Befehle nutzen. Sie gehen davon aus, dass ihre Shell /bin/bash ist. Geben sie zum Bau folgendes ein:"

mkdir -p $HOME/opt
mkdir -p build-4.1.2
cd build-4.1.2
../gcc-4.1.2+gm2-cvs-latest/configure –-enable-languages=c,c++,gm2 \
    --disable-multilib –enable-checking=all –prefix=$HOME/opt
make "SHELL=/bin/bash"

Um GNU Modula-2 zu installieren, geben Sie nach dem erfolgreichen Bau dies ein:

make "SHELL=/bin/bash" install
cd ..

Nun sollten Sie in der Lage sein

export PATH=$HOME/opt/bin:$PATH
cd gcc-4.1.2/gcc/gm2/examples/hello
make

auszuführen, was ein 'a.out' für das anrüchige „Hallo Welt“ Beispiel erzeugen wird.

Wie auch immer, wenn Sie 'make „SHELL=/bin/bash“' versuchen, wird das System „/lib/cpp fails sanity check“ melden. Durch das Verfolgen des Links für cpp entlang seine Pfades beginnend mit „/lib/cpp“, lernten wir, dass dieser zu gcc in Version 4.4 verweist und nicht zur Version 4.1.2, die für dieses System genutzt werden sollte. Nun, da der Artikel zu Fortran gerade erst erschienen ist und dieser hier nicht vor August veröffentlicht wird, könnte möglicherweise inzwischen eine einfach zu installierende Version von GNU Modula-2 in den Repositories zu finden sein. Das vollständige System ist gerade fertiggestellt worden und es werden deb-Pakete für Lenny erstellt, ich würde annehmen, dass weitere folgen.

Ein weiteres System ist XDS, welches die Übersetzung von mod-Dateien in ANSI Standard C anbietet. Laden Sie einfach das Muttersprachepaket oder das C Paket herunter und installieren Sie es. Dann wird der Pfad eingestellt und die Ortsangabe des Paketes eingebunden. Der Befehl „xm hello.mod“ erzeugt eine Datei „hello.c“. Wenn Sie versuchen, diese Datei mit gcc zu compilieren, dann erfolgt die Meldung, dass inout.h und mehrere andere Dateien nicht gefunden werden können. Das xds-Paket ist auch in der Lage Code von Oberon 2, die objektorientierte Version von Modula-2 zu compilieren. Auch diese Programmiersprache wurde von Niklaus Wirth entwickelt.