Modula-3 ist eine von Luca Cardelli und weiteren Forschern bei DEC (Digital Equipment Corporation) und Olivetti Ende der 1980er Jahre entworfene Systemprogrammiersprache. Sie übernimmt das Modulkonzept von Modula-2, ergänzt es aber um Objekte und Klassen, Ausnahmen, automatische Speicherbereinigung, Generik und leichtgewichtige Threads. Wichtig ist die Trennung von sicheren und unsicheren Modulen: Unsafe-Features (Zeiger, Typumwandlungen) werden explizit markiert und gekapselt.
Grundgerüst
MODULE Hallo;
IMPORT IO;
BEGIN
IO.Put("Hallo, Welt!
");
END Hallo.
Wichtige Sprachmittel
- INTERFACE / MODULE: Trennung von Schnittstelle und Implementierung wie in Modula-2; jede Schnittstelle deklariert die öffentlichen Typen und Prozeduren.
- REVEAL: sichtbare und versteckte Typ-Eigenschaften — eine Type kann erst später als >= (Obertyp) oder <= (Untertyp) von etwas anderem bekannt gemacht werden.
- REFANY / OBJECT: Referenztyp-Hierarchie; Objekte werden über Referenzen angesprochen, Methoden heißen in Modula-3 Methoden (METHODS ... END).
- GENERIC: generische Interfaces und Module zur typsicheren Wiederverwendung.
- UNSAFE: explizit markierte unsichere Module, in denen Zeiger und Typumwandlungen erlaubt sind.
- THREAD: leichtgewichtige Threads mit MUTEX und Condition-Variablen als Teil der Standardbibliothek.
Werkzeuge
cm3 -build # Projekt bauen (README/Quellbaum)
cm3 -ship # gebaute Artefakte in das Installationsverzeichnis kopieren
cm3 -install # Bibliotheken/Programme systemweit installieren
cm3 -C # (Re-)Kompilierung von Modulen im aktuellen Verzeichnis
m3ship # Ship-Tool der CM3-Distribution
m3tk # Modula-3-Toolkit
m3tohtml # Quelltext-Konverter nach HTML
m3c / m3front # C-/Frontend-Tools der CM3-Toolchain
Praxis-Tipps
- Der Referenz-Compiler ist Critical Mass CM3 (Open Source, aus dem DEC-SRC-Nachfolger hervorgegangen, heute von Elego Software Solutions gepflegt).
- Modula-3 war das erste große System mit automatischer Speicherbereinigung für Systemsprachen und beeinflusste unter anderem Java und C#.
- Die Sprache blieb wissenschaftlich einflussreich, fand aber nie breite kommerzielle Verbreitung — heute vor allem historisch und in Lehrbüchern präsent.
Verwandte Grundlagen: Modula-2-Befehle, Oberon-Befehle, Component-Pascal-Befehle und Sather-Befehle.