Modula-2 ist eine prozedurale Systemprogrammiersprache, die Niklaus Wirth ab 1978 an der ETH Zürich entwarf und 1980 veröffentlichte. Sie ist der direkte Nachfolger von Pascal und vereint dessen klare Struktur mit den Modul- und Low-Level-Fähigkeiten, die für Betriebssysteme und eingebettete Systeme nötig sind.
Die Kernidee: Module
- DEFINITION MODULE: deklariert die öffentliche Schnittstelle eines Moduls – was andere Module nutzen dürfen.
- IMPLEMENTATION MODULE: enthält den dazugehörigen Code. Die Trennung von Schnittstelle und Implementierung erzwingt Information Hiding und erlaubt getrennte Kompilierung.
- SYSTEM-Modul: gibt Low-Level-Zugriff auf Speicheradressen und Maschinenoperationen – Modula-2 kann damit systemnah programmieren, ohne auf Assembler ausweichen zu müssen.
- Coroutinen: zur Programmierung nebenläufiger Abläufe, integriert in die Sprache.
Modula-2 im Beispiel
DEFINITION MODULE Rechner;
PROCEDURE Quadrat(x: INTEGER): INTEGER;
END Rechner.
IMPLEMENTATION MODULE Rechner;
PROCEDURE Quadrat(x: INTEGER): INTEGER;
BEGIN
RETURN x * x
END Quadrat;
END Rechner.
Wirths Sprachfamilie
Modula-2 steht am Ende der ALGOL-Linie, die mit ALGOL 60 begann und über Pascal führte. Die Modul-Idee beeinflusste Ada, und Wirth selbst entwickelte später Oberon als Nachfolger. Gemeinsam mit den Objektkonzepten von Simula zeigt Modula-2, wie aus ALGOL zwei getrennte Systematik-Linien erwuchsen: die objektorientierte und die modulare.