„Oberon (Programmiersprache)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Etwas ergänzt mit Beleg.
Minimal überarbeitet.
Zeile 26: Zeile 26:
Oberon ist das Ergebnis eines Forschungsprojekts, eine Programmiersprache und ein Betriebssystem für Arbeitsplatzrechner zu entwickeln. Wirth und Reiser führten die Motivation für das Projekt auf die Zeit der Implementierung des [[Personal Computer|persönlichen Rechners]] zurück. So hätten die damaligen üblichen Betriebssysteme beim Umsetzen der Prinzipien der [[Softwaretechnik]] versagt. Dazu seien eine voreilige Flucht in Standards gekommen sowie [[Computerprogramm|Programme]], die Schichten auf veraltete Grundsysteme stapelten. Die Softwaretechnik habe einen wirtschaftlichen Mitteleinsatz und die Einfachheit der Lösungen vermissen lassen. Als Leitmotiv für das Projekt zitierten sie [[Albert Einstein|Einstein]]: „Mach es so einfach wie möglich, aber nicht einfacher.“<ref>{{Literatur |Autor=Martin Reiser, Niklaus Wirth |Titel=Programmieren in Oberon – Das neue Pascal |Auflage=1. |Verlag=Addison-Wesley |Datum=1995 |ISBN=3-89319-657-9 |Seiten=XV–XVI}}</ref>
Oberon ist das Ergebnis eines Forschungsprojekts, eine Programmiersprache und ein Betriebssystem für Arbeitsplatzrechner zu entwickeln. Wirth und Reiser führten die Motivation für das Projekt auf die Zeit der Implementierung des [[Personal Computer|persönlichen Rechners]] zurück. So hätten die damaligen üblichen Betriebssysteme beim Umsetzen der Prinzipien der [[Softwaretechnik]] versagt. Dazu seien eine voreilige Flucht in Standards gekommen sowie [[Computerprogramm|Programme]], die Schichten auf veraltete Grundsysteme stapelten. Die Softwaretechnik habe einen wirtschaftlichen Mitteleinsatz und die Einfachheit der Lösungen vermissen lassen. Als Leitmotiv für das Projekt zitierten sie [[Albert Einstein|Einstein]]: „Mach es so einfach wie möglich, aber nicht einfacher.“<ref>{{Literatur |Autor=Martin Reiser, Niklaus Wirth |Titel=Programmieren in Oberon – Das neue Pascal |Auflage=1. |Verlag=Addison-Wesley |Datum=1995 |ISBN=3-89319-657-9 |Seiten=XV–XVI}}</ref>


Ein Ziel der Programmiersprache Oberon war es, den erweiterbaren Entwurf zu unterstützen. Während ihr Vorgänger Modula-2 zwar strukturierte, modulare und hierarchische Programmierung erlaubt, um Abstraktionsebenen einzuführen, fügt Oberon die Erweiterbarkeit von Datentypen hinzu und zwar derart, dass erweiterte Typen kompatibel mit ihren Ausgangstypen bleiben. Modula-2 bietet dieses Merkmal nicht. Reiser und Wirth sahen darin die eigentliche Neuerung der „in den achtziger Jahren zur Modewelle avancierten objektorientierten Sprachen.“ Diese hätten darüber hinaus mit dem Ziel eines Paradigmenwechsels altbekannte Konzepte umbenannt. Aus Variablen wurden Instanzen, aus Prozeduren Methoden und aus dem Prozeduraufruf das Senden von Meldungen. Oberon hingegen blieb bei den Begriffen des Datentyps und der Prozedur, um einen „Bruch mit der Tradition“ zu vermeiden.<ref>{{Literatur |Autor=Martin Reiser, Niklaus Wirth |Titel=Programmieren in Oberon – Das neue Pascal |Auflage=1. |Verlag=Addison-Wesley |Datum=1995 |ISBN=3-89319-657-9 |Seiten=4–5}}</ref>
Ein Ziel der Programmiersprache Oberon war es, den erweiterbaren [[Entwerfen|Entwurf]] zu unterstützen. Während ihr Vorgänger Modula-2 zwar strukturierte, modulare und hierarchische Programmierung erlaubt, um Abstraktionsebenen einzuführen, fügt Oberon die Erweiterbarkeit von [[Datentyp|Datentypen]] hinzu und zwar derart, dass erweiterte Typen kompatibel mit ihren Ausgangstypen bleiben. Modula-2 bietet dieses Merkmal nicht. Reiser und Wirth sahen darin die eigentliche Neuerung der „in den achtziger Jahren zur Modewelle avancierten [[Objektorientierte Programmierung|objektorientierten Sprachen]].“ Diese hätten darüber hinaus mit dem Ziel eines Paradigmenwechsels altbekannte Konzepte umbenannt. Aus [[Variable (Programmierung)|Variablen]] wurden [[Objekt (Programmierung)|Instanzen]], aus [[Prozedur (Programmierung)|Prozeduren]] [[Methode (Programmierung)|Methoden]] und aus dem Prozeduraufruf das Senden von Meldungen. Oberon hingegen blieb bei den Begriffen des Datentyps und der Prozedur, um einen „Bruch mit der Tradition“ zu vermeiden.<ref>{{Literatur |Autor=Martin Reiser, Niklaus Wirth |Titel=Programmieren in Oberon – Das neue Pascal |Auflage=1. |Verlag=Addison-Wesley |Datum=1995 |ISBN=3-89319-657-9 |Seiten=4–5}}</ref>


Oberon hat im Vergleich zu Modula-2 einen verminderten Befehlsumfang. In der damit erreichten Vereinfachung und Vereinheitlichung sahen Reiser und Wirth „echten Fortschritt“ beim Vermitteln wissenschaftlicher Grundlagen, da die Ausdruckskraft Oberon erhalten bliebe.<ref>{{Literatur |Autor=Martin Reiser, Niklaus Wirth |Titel=Programmieren in Oberon – Das neue Pascal |Auflage=1. |Verlag=Addison-Wesley |Datum=1995 |ISBN=3-89319-657-9 |Seiten=5}}</ref>
Oberon hat im Vergleich zu Modula-2 einen verminderten Befehlsumfang. In der damit erreichten Vereinfachung und Vereinheitlichung sahen Reiser und Wirth „echten Fortschritt“ beim Vermitteln wissenschaftlicher Grundlagen, da die Ausdruckskraft Oberon erhalten bliebe.<ref>{{Literatur |Autor=Martin Reiser, Niklaus Wirth |Titel=Programmieren in Oberon – Das neue Pascal |Auflage=1. |Verlag=Addison-Wesley |Datum=1995 |ISBN=3-89319-657-9 |Seiten=5}}</ref>


Oberon wurde –&nbsp;wie sein Vorgänger [[Modula-2]]&nbsp;– parallel zur Workstation [[Ceres (Computersystem)|Ceres]] entwickelt, die bis etwa 2003 lief. Oberon fand nach seiner Veröffentlichung recht schnell unter anderem zu Bildungszwecken in Schulen und Universitäten Verwendung. Es existierten seinerzeit auf Oberon basierende, ebenfalls kostenlos verfügbare Werkzeuge, die auch kommerziell eingesetzt wurden, wie zum Beispiel die Programmiersprache [[Component Pascal]] und die [[integrierte Entwicklungsumgebung]] [[BlackBox Component Builder]].
Oberon wurde –&nbsp;wie sein Vorgänger [[Modula-2]]&nbsp;– parallel zu einer Workstation, in diesem Fall [[Ceres (Computersystem)|Ceres]], entwickelt, die bis etwa 2003 lief. Oberon fand nach seiner Veröffentlichung recht schnell unter anderem zu Bildungszwecken in Schulen und Universitäten Verwendung. Es existierten seinerzeit auf Oberon basierende, ebenfalls kostenlos verfügbare Werkzeuge, die auch kommerziell eingesetzt wurden, wie zum Beispiel die Programmiersprache [[Component Pascal]] und die [[integrierte Entwicklungsumgebung]] [[BlackBox Component Builder]].


[[Hanspeter Mössenböck]] hat Oberon mit wenigen Änderungen zur Programmiersprache '''Oberon-2''' weiterentwickelt, wobei zusätzlich im Wesentlichen explizit typgebundene Prozeduren erlaubt wurden, so dass die entsprechenden Objekte nicht mehr implizit in der formalen [[Parameter (Informatik)|Parameterliste]] der [[Methode (Programmierung)|Methoden]] aufgeführt werden müssen. Ferner wurde die Exportmarke „-“ (als Alternative zu „*“) zur Unterdrückung von Schreibrechten auf Objekte oder deren Komponenten eingeführt.
[[Hanspeter Mössenböck]] hat Oberon mit wenigen Änderungen zur Programmiersprache '''Oberon-2''' weiterentwickelt, wobei zusätzlich im Wesentlichen explizit typgebundene Prozeduren erlaubt wurden, so dass die entsprechenden Objekte nicht mehr implizit in der formalen [[Parameter (Informatik)|Parameterliste]] der [[Methode (Programmierung)|Methoden]] aufgeführt werden müssen. Ferner wurde die Exportmarke „-“ (als Alternative zu „*“) zur Unterdrückung von Schreibrechten auf Objekte oder deren Komponenten eingeführt.

Version vom 11. November 2024, 15:07 Uhr

Oberon
Basisdaten
Paradigmen: imperativ, strukturiert, objektorientiert
Erscheinungsjahr: 1987
Designer: Niklaus Wirth
Entwickler: Niklaus Wirth, Jürg Gutknecht
Beeinflusst von: Pascal, Modula-2
Beeinflusste: Component Pascal, Active Oberon, Zonnon
Lizenz: https://rightsstatements.org/page/InC-NC/1.0/
projectoberon.net

Oberon ist eine von Niklaus Wirth und Jürg Gutknecht entwickelte, objektorientierte, streng strukturierte Programmiersprache. Sie ist den ebenfalls von Wirth entworfenen Vorgängern Pascal und Modula-2 recht ähnlich, allerdings strukturierter und mächtiger als Pascal, gleichzeitig aber erheblich weniger umfangreich als Modula-2. Die Erstpublikation erfolgte 1987.[1] Das ETH Oberon System ist ein eigenständiges Betriebssystem der ETH Zürich, das in der Sprache Oberon implementiert ist, als Entwicklungsgrundlage für die Sprache diente und ebenso wie der Compiler kostenlos erhältlich war.

Überblick

Oberon ist das Ergebnis eines Forschungsprojekts, eine Programmiersprache und ein Betriebssystem für Arbeitsplatzrechner zu entwickeln. Wirth und Reiser führten die Motivation für das Projekt auf die Zeit der Implementierung des persönlichen Rechners zurück. So hätten die damaligen üblichen Betriebssysteme beim Umsetzen der Prinzipien der Softwaretechnik versagt. Dazu seien eine voreilige Flucht in Standards gekommen sowie Programme, die Schichten auf veraltete Grundsysteme stapelten. Die Softwaretechnik habe einen wirtschaftlichen Mitteleinsatz und die Einfachheit der Lösungen vermissen lassen. Als Leitmotiv für das Projekt zitierten sie Einstein: „Mach es so einfach wie möglich, aber nicht einfacher.“[2]

Ein Ziel der Programmiersprache Oberon war es, den erweiterbaren Entwurf zu unterstützen. Während ihr Vorgänger Modula-2 zwar strukturierte, modulare und hierarchische Programmierung erlaubt, um Abstraktionsebenen einzuführen, fügt Oberon die Erweiterbarkeit von Datentypen hinzu und zwar derart, dass erweiterte Typen kompatibel mit ihren Ausgangstypen bleiben. Modula-2 bietet dieses Merkmal nicht. Reiser und Wirth sahen darin die eigentliche Neuerung der „in den achtziger Jahren zur Modewelle avancierten objektorientierten Sprachen.“ Diese hätten darüber hinaus mit dem Ziel eines Paradigmenwechsels altbekannte Konzepte umbenannt. Aus Variablen wurden Instanzen, aus Prozeduren Methoden und aus dem Prozeduraufruf das Senden von Meldungen. Oberon hingegen blieb bei den Begriffen des Datentyps und der Prozedur, um einen „Bruch mit der Tradition“ zu vermeiden.[3]

Oberon hat im Vergleich zu Modula-2 einen verminderten Befehlsumfang. In der damit erreichten Vereinfachung und Vereinheitlichung sahen Reiser und Wirth „echten Fortschritt“ beim Vermitteln wissenschaftlicher Grundlagen, da die Ausdruckskraft Oberon erhalten bliebe.[4]

Oberon wurde – wie sein Vorgänger Modula-2 – parallel zu einer Workstation, in diesem Fall Ceres, entwickelt, die bis etwa 2003 lief. Oberon fand nach seiner Veröffentlichung recht schnell unter anderem zu Bildungszwecken in Schulen und Universitäten Verwendung. Es existierten seinerzeit auf Oberon basierende, ebenfalls kostenlos verfügbare Werkzeuge, die auch kommerziell eingesetzt wurden, wie zum Beispiel die Programmiersprache Component Pascal und die integrierte Entwicklungsumgebung BlackBox Component Builder.

Hanspeter Mössenböck hat Oberon mit wenigen Änderungen zur Programmiersprache Oberon-2 weiterentwickelt, wobei zusätzlich im Wesentlichen explizit typgebundene Prozeduren erlaubt wurden, so dass die entsprechenden Objekte nicht mehr implizit in der formalen Parameterliste der Methoden aufgeführt werden müssen. Ferner wurde die Exportmarke „-“ (als Alternative zu „*“) zur Unterdrückung von Schreibrechten auf Objekte oder deren Komponenten eingeführt.

Die Quelltexte der Compiler waren in der Regel frei verfügbar. Es gab verschiedene integrierte Entwicklungsumgebungen, genannt werden kann zum Beispiel POW!.[5] Neben dem Einsatz als Programmiersprache war auch die Nutzung als Betriebssystem (Native Oberon) möglich.

Der Quelltext wird in der Regel nicht interpretiert oder in Bytecode übersetzt, sondern in einem einzigen Compilerdurchlauf und sehr schnell in Maschinensprache übersetzt.[6][7] Der kompilierte Code ist typsicher, und Speicherbereichsprüfungen sind obligatorisch.[8][9]

Es ist möglich, Haltepunkte zu setzen (Anweisung HALT) und auch alle lokalen Variablen nach dem Abbruch des Programms zu analysieren. Globale Variablen können im Laufzeitsystem jederzeit analysiert werden. Die Entwicklungszeiten mit Oberon sind daher sehr kurz, und der Maschinencode ist dennoch sehr effizient und robust. Auch Echtzeitanwendungen können mit Oberon implementiert werden.

Die Programmiersprache Oberon zeichnet sich dadurch aus, dass sie die objektorientierte Architektur im Gegensatz zum Beispiel zu C++ unter anderem mit einem integrierten Laufzeitsystem Oberon System und einer Automatischen Speicherbereinigung (garbage collection) vollständig unterstützt und Verwendung von Programmanweisungen zur Deallokation von Zeigervariablen somit obsolet macht.[10] Auf Mehrfachvererbung wurde bewusst verzichtet, um den Compiler von komplexen Verwaltungsaufgaben zu entlasten und den Programmierer vor unerwarteten Ergebnissen im Zusammenhang mit dem Diamond-Problem zu bewahren.

Code-Beispiele

Hello World im Ulmer OBERON-System:[11]

MODULE HelloWorld;

IMPORT Write;

BEGIN

   Write.Line ("Hello World");

END HelloWorld.

Die objektorientierte Programmierung wird mit erweiterten Datenverbünden vom Datentyp RECORD erreicht. Die Definition von Methoden wird durch typengebundene Prozeduren, und die Definition von Sichtbarkeiten wird durch Exportmarken („*“ für Schreibzugriff und „-“ für Lesezugriff) erwirkt. Beispiel in Oberon-2:

MODULE Vererbung;

TYPE

   GraphischesObjekt* = POINTER TO GraphischesObjektBeschreibung;
   GraphischesObjektBeschreibung = RECORD farbe*: LONGINT; END;

   Punkt* = POINTER TO PunktBeschreibung;
   PunktBeschreibung = RECORD (GraphischesObjekt) x*, y*: LONGINT; END; (* Punkt erbt die Eigenschaft "farbe" von GraphischesObjekt *)

   Linie* = POINTER TO LinienBeschreibung;
   LinienBeschreibung = RECORD (GraphischesObjekt) xStart*, yStart*, xEnde*, yEnde*: LONGINT; END; (* Linie erbt die Eigenschaft "farbe" von GraphischesObjekt *)

PROCEDURE (punkt: Punkt) Zeichne*; (* typgebundene Methode "Zeichne" für Instanzen vom Typ "Punkt" *)
BEGIN
   ...
END Zeichne;

PROCEDURE (linie: Linie) Zeichne*; (* typgebundene Methode "Zeichne" für Instanzen vom Typ "Linie"*)
BEGIN
   ...
END Zeichne;

CONST

   ROT = 00000FFH; (* RGB *)

VAR

   punkt: Punkt;
   linie: Linie;

BEGIN

   NEW (punkt);
   punkt.farbe := ROT;
   punkt.x := 1;
   punkt.y := 1;
   punkt.Zeichne ();

   NEW (linie);
   punkt.farbe := ROT;
   linie.xStart := 1;
   linie.yStart := 1;
   linie.xEnde  := 2;
   linie.yEnde  := 2;
   linie.Zeichne ();

END Vererbung.

Attribute, die nur einen Lesezugriff haben, können durch typengebundene Prozeduren (Methoden) verändert werden. Beispiel:

MODULE Schreibschutz;

TYPE

   Objekt* = POINTER TO Objektbeschreibung;
   Objektbeschreibung = RECORD x-: INTEGER; END; (* Das nachgestellte Minuszeichen kennzeichnet ein Attribut, das nur gelesen werden kann *)

PROCEDURE (objekt: Objekt) SetzeX* (wert: INTEGER); (* typgebundene Methode "SetzeX" *)
BEGIN
   objekt.x := wert; (* Schreibzugriff auf das Attribut "x" nur in typgebundener Methode *)
END SetzeX;

VAR

   objekt: Objekt;
   int: INTEGER;

BEGIN

   NEW (objekt1);
   objekt1.SetzeX (1); (* Schreibzugriff auf das Attribut "x" nur über Methodenaufruf *)
   int := objekt1.x; (* Lesezugriff auf das Attribut "x" auch über Zuweisung *)

END Schreibschutz.

Weiterentwicklungen

Ausgehend von Oberon und Oberon-2 sind die Programmiersprachen Component Pascal, Active Oberon und Zonnon entstanden.

Siehe auch

Literatur

  • Martin Reiser: The Oberon System. User Guide and Programmer’s Manual. 1. Auflage. Addison-Wesley, 1991, ISBN 0-201-54422-9 (englisch, 300 Seiten).
  • Martin Reiser, Niklaus Wirth: Programming in Oberon. Steps Beyond Pascal and Modula. Addison-Wesley, 1992, ISBN 0-201-56543-9 (englisch, 336 Seiten).
  • Niklaus Wirth, Jürg Gutknecht: Project Oberon. The Design of an Operating System and Compiler. 1. Auflage. Addison-Wesley, 1992, ISBN 0-201-54428-8 (englisch, 548 Seiten).
  • Martin Reiser, Niklaus Wirth: Programmieren in Oberon. Das neue Pascal. Addison-Wesley, 1994, ISBN 3-89319-657-9 (338 Seiten, 2. korrigierter Nachdruck 1997).
  • Oberon. Eidgenössische Technische Hochschule Zürich, archiviert vom Original (nicht mehr online verfügbar) am 6. Januar 2017; (englisch).
  • Oberon Community Platform. Eidgenössische Technische Hochschule Zürich, archiviert vom Original (nicht mehr online verfügbar) am 29. August 2018; (englisch).
  • Oberon Community Platform > Oberon A2 for Windows. Eidgenössische Technische Hochschule Zürich, archiviert vom Original (nicht mehr online verfügbar) am 14. Januar 2019; (englisch).
  • Component Pascal > Detailed project information. Faculty of Information Technology – Queensland University of Technology, 17. Juni 2005, archiviert vom Original (nicht mehr online verfügbar) am 24. Juni 2005; (englisch, ein Component Pascal 2 Java Byte Code / .Net Compiler von John Gough und seinem Team).
  • BlackBox Component Builder. (IDE für Oberon-2 unter Windows und Wine).
  • Ofront. Software Templ Shareware; (englisch, Oberon-2 compiler und OberonV4-System für Linux/386 und Raspbian).
  • Rochus Keller: Oberon+ parser, code model, compiler and IDE. (englisch, freie Oberon-07 IDE für Windows, Mac und Linux).
  • Project Oberon. 10. Januar 2021, abgerufen am 16. November 2023 (Project Oberon is a design for a complete desktop computer system from scratch.).

Einzelnachweise

  1. Niklaus Wirth: From Modula to Oberon and the programming language Oberon. In: Institut für Informatik, Fachgruppe Computer-Systeme. Band 82. Eidgenössische Technische Hochschule Zürich, September 1987, doi:10.3929/ethz-a-005363226 (englisch, 27 Seiten, ethz.ch [PDF; 1,5 MB; abgerufen am 2. Januar 2020]).
  2. Martin Reiser, Niklaus Wirth: Programmieren in Oberon – Das neue Pascal. 1. Auflage. Addison-Wesley, 1995, ISBN 3-89319-657-9, S. XV–XVI.
  3. Martin Reiser, Niklaus Wirth: Programmieren in Oberon – Das neue Pascal. 1. Auflage. Addison-Wesley, 1995, ISBN 3-89319-657-9, S. 4–5.
  4. Martin Reiser, Niklaus Wirth: Programmieren in Oberon – Das neue Pascal. 1. Auflage. Addison-Wesley, 1995, ISBN 3-89319-657-9, S. 5.
  5. Peter René Dietmüller: Pow! - Programmers Open Workbench. 8. September 2005, abgerufen am 5. Oktober 2022 (englisch, eine IDE zu Oberon).
  6. Niklaus Wirth: Compiler Construction. In: projectoberon.net. Mai 2017, S. 1, 7, 99, abgerufen am 9. November 2024 (englisch).
  7. Ulm's Oberon System: obload. Abgerufen am 9. November 2024.
  8. dick pountain's pages - The Oberon Language (1990). Abgerufen am 9. November 2024.
  9. Josef Templ: The Oberon Programming Language. Abgerufen am 9. November 2024.
  10. Ulm's Oberon Library: SysStorage. Abgerufen am 9. November 2024.
  11. Andreas Borchert: Ulm Oberon System. 20. September 2004, abgerufen am 5. Oktober 2022 (englisch).