Das Betriebssystem Oberon sollte eigentlich in Modula-2 programmiert werden. Doch diese Programmiersprache war den Forschenden aus folgenden Gründen nicht gut genug:
. Modula-2 hatte einen großen Sprachumfang.
. Modula-2 erlaubte keine Erweiterung von Record-Typen.
Zum ersten Grund: Modula-2 besitzt zahllose Funktionen, die viele Programmierer von seinen Vorgängern PASCAL und ALGOL 60 kennen und lieben. Man war sich sicher, solche Konstrukte weglassen zu können, ohne die Ausdruckskraft einzuschränken. Dies führte dazu, daß die Sprachbeschreibung von Oberon mit 16 Seiten um etwa zwei Drittel kleiner ist als die von Modula-2 (45 Seiten). Dennoch beeilte man sich, direkt in der zweiten Version von Oberon einige dieser Konstrukte wieder einzuführen. Dies führt zu ernsten Problemen bei der Abwärtskompatibilität.
Zum zweiten Grund: Viele Programmierer wollten in Modula-2 die Erweiterbarkeit von Record-Typen gerne benutzen, obwohl sie nicht vorgesehen war. Also nutzten sie die maschinennahen Sprachkonzepte von Modula-2 aus, um Record-Typen dennoch erweitern zu können. Dieser Mißbrauch war den Entwicklern von Oberon ein Dorn im Auge, und um dies zu unterbinden, wurde Oberon die entsprechende Funktionalität eingebaut.
2.2.1 Was ist ein Record-Typ?
Der Datentyp Record ist eine Sammlung mehrerer Variablen verschiedenen Typs. So können in einem Record beispielsweise Vor- und Zuname eines Angestellten als Text und seine Personalnummer, seine Steuerklasse und seine Sozialversicherungsnummer als Zahl gespeichert werden.
2.2.2 Wie kann ein Record-Typ erweitert werden?
Von diesem Record-Typ wird ein neuer Record-Typ abgeleitet, der neben den zusätzlichen Variablen genau dieselben Variablen wie der zugrunde liegende Record-Typ besitzt.
2.2.3 Welchen Vorteil hat die Erweiterbarkeit von Record-Typen?
Es können beim Programmlauf beliebig weitere Informationen im Record gespeichert werden. Wird dasselbe Record mehrfach verwendet, kann es an Einzelbedürfnisse speziell angepaßt werden. Zum Beispiel müßte für einen einzigen von mehreren hundert Angestellten zusätzliche Informationen gespeichert werden. Ist das Record erweiterbar, kann es für ihn angepaßt werden. Ist es nicht erweiterbar, so müssen in den Records aller anderen Angestellten Variablen für diese zusätzlichen Informationen geführt werden, obwohl sie nicht benutzt werden. Dies stellt eine hochgradige Verschwendung von Speicherplatz dar, was der Zielsetzung der Entwickler von Oberon zuwider läuft.
|