Zum Inhalt springen

„Modula-3“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Bot: Überarbeitung veralteter Syntax / HTML-Validierung
K Kategorie:Wikipedia:Seite mit Syntaxhervorhebungsfehlern falsche Angabe lang="modula3" siehe auch Hilfe:Syntaxhighlight#Unterstützte Sprachen wurde wohl ersetzt oder geändert zu modula2?
 
Zeile 1: Zeile 1:
'''Modula-3''' ist eine [[Imperative Programmierung|imperative]], [[Objektorientierte Programmierung#Objektorientierte Programmiersprachen|objektorientierte Programmiersprache]]. Sie versteht sich als Nachfolger von [[Pascal (Programmiersprache)|Pascal]], [[Modula-2]], [[Modula-2+]] und [[Cedar (Programmiersprache)|Cedar]] und wurde von [[Digital Equipment Corporation|DEC]] und [[Olivetti]] entwickelt. Sie wurde in der Tradition der Sprachen von [[Niklaus Wirth]] unter den Gesichtspunkten der Einfachheit und Strenge entwickelt, an der Entwicklung war Wirth allerdings nur als Berater beteiligt. Die Einfachheit bezieht sich hierbei auf den Sprachumfang (Die Sprachdefinition von Modula-3 umfasst 60 Seiten) und nicht auf die Länge der Programme oder auf eine Orientierung an persönlichen Programmiergewohnheiten.
<!--
{{Infobox programming language |
name = Modula-3 |
logo = |
paradigm = imperative, structured, modular |
year = 1980s |
typing = strong, static |
designer = DEC and Olivetti |
dialects = -- |
implementations = [[CM3, PM3, EZM3]] |
influenced_by = [[Pascal]], [[ALGOL]], [[Modula-2]] |
influenced = [[Java programming language|Java]], [[Python programming language|Python]], [[Caml]]
}}
-->
'''Modula-3''' ist eine [[Imperative Programmiersprache|imperative]], [[objektorientierte Programmiersprache]].
Sie versteht sich als Nachfolger von [[Pascal (Programmiersprache)|Pascal]], [[Modula-2]], [[Modula-2+]] und [[Cedar (Programmiersprache)|Cedar]] und wurde von [[Digital Equipment Corporation|DEC]] und [[Olivetti]] entwickelt. Sie wurde in der Tradition der Sprachen von [[Niklaus Wirth]] unter den Gesichtspunkten der Einfachheit und Strenge entwickelt, an der Entwicklung war Wirth allerdings nur als Berater beteiligt. Die Einfachheit bezieht sich hierbei auf den Sprachumfang (Die Sprachdefinition von Modula-3 umfasst 60 Seiten) und nicht auf die Länge der Programme oder auf eine Orientierung an persönlichen Programmiergewohnheiten.


== Eigenschaften ==
== Eigenschaften ==
Zeile 24: Zeile 9:
** Unterbereiche ordinaler Typen
** Unterbereiche ordinaler Typen
** Mengen über ordinalen Typen
** Mengen über ordinalen Typen
** [[Feld (Datentyp)|Felder]] mit ordinalen Typen als Indizes
** [[Array (Datentyp)|Felder]] mit ordinalen Typen als Indizes
** [[Gleitkommazahl]]en
** [[Gleitkommazahl]]en
** [[Zeichenkette|Texte]]
** [[Zeichenkette|Texte]]
Zeile 30: Zeile 15:
** [[Unterprogramm]]e und [[Funktion (Programmierung)|Funktionen]]
** [[Unterprogramm]]e und [[Funktion (Programmierung)|Funktionen]]
* [[Modulare Programmierung|Module]]
* [[Modulare Programmierung|Module]]
* [[Generische Programmierung|Generische Module]] ''([[Template (Programmierung)|templates]])''
* [[Generische Programmierung|Generische Module]] ''([[Template (C++)|templates]])''
* teilweise Aufdeckung von Untertypbeziehungen ''(partial revelation)''
* teilweise Aufdeckung von Untertypbeziehungen ''(partial revelation)''
* [[Garbage Collection|automatische Speicherbereinigung]] ''(garbage collection)''
* [[Garbage Collection|automatische Speicherbereinigung]] ''(garbage collection)''
Zeile 41: Zeile 26:


* Objektorientierung besteht im Wesentlichen aus dem Typ OBJECT.
* Objektorientierung besteht im Wesentlichen aus dem Typ OBJECT.
<syntaxhighlight lang="modula3">
<syntaxhighlight lang="modula2">
TYPE
TYPE
T = OBJECT
T = OBJECT
Zeile 56: Zeile 41:
* Kapselung wird durch die von [[Modula-2]] bekannte Trennung in Schnittstelle und Implementation erreicht. Durch die teilweise Aufdeckung von Untertypbeziehungen (REVEAL) können darüber hinaus beliebig feine Abstufungen von Zugriffsmöglichkeiten definiert werden. Dies ist in gewisser Weise eine Verallgemeinerung der <span style="font-family:monospace;">public</span>-<span style="font-family:monospace;">protected</span>-<span style="font-family:monospace;">private</span>-Hierarchie und der <span style="font-family:monospace;">friends</span>-Vereinbarungen von [[C++]].
* Kapselung wird durch die von [[Modula-2]] bekannte Trennung in Schnittstelle und Implementation erreicht. Durch die teilweise Aufdeckung von Untertypbeziehungen (REVEAL) können darüber hinaus beliebig feine Abstufungen von Zugriffsmöglichkeiten definiert werden. Dies ist in gewisser Weise eine Verallgemeinerung der <span style="font-family:monospace;">public</span>-<span style="font-family:monospace;">protected</span>-<span style="font-family:monospace;">private</span>-Hierarchie und der <span style="font-family:monospace;">friends</span>-Vereinbarungen von [[C++]].


* Mit Typen parametrisierte Datenstrukturen lassen sich mit [[Template (Programmierung)|generischen Modulen]] realisieren. Generische Module unterscheiden sich von normalen Modulen durch Modul-Parameter. In gewisser Weise kann man damit ausgewählte <span style="font-family:monospace;">IMPORT</span>-Anweisungen variabel halten. Nachteil dieser einfachen Realisierung ist, dass generische Module nicht direkt übersetzt werden können, sondern nur ihre Ausprägungen.
* Mit Typen parametrisierte Datenstrukturen lassen sich mit [[Template (C++)|generischen Modulen]] realisieren. Generische Module unterscheiden sich von normalen Modulen durch Modul-Parameter. In gewisser Weise kann man damit ausgewählte <span style="font-family:monospace;">IMPORT</span>-Anweisungen variabel halten. Nachteil dieser einfachen Realisierung ist, dass generische Module nicht direkt übersetzt werden können, sondern nur ihre Ausprägungen.


== Entwicklung ==
== Entwicklung ==
Die [[Digital Equipment Corporation|DEC]] wurde 1998 an [[Compaq]] verkauft; diese wiederum ging 2002 in [[Hewlett-Packard]] auf. Pflege und Weiterentwicklung der Quellen der wichtigsten Modula-3-Compiler wurde von ''Elego Software Solutions'' übernommen. Seit der Übernahme wird vor allem ''Critical Mass Modula-3'' stetig weiterentwickelt. Die Quellen sowie Binärpakete für eine Reihe von Betriebssystemen können frei (unter einer wenig restriktiven Lizenz etwa im Vergleich zur GPL) heruntergeladen werden.
Die [[Digital Equipment Corporation|DEC]] wurde 1998 an [[Compaq]] verkauft; diese wiederum ging 2002 in [[HP Inc.|Hewlett-Packard]] auf. Pflege und Weiterentwicklung der Quellen der wichtigsten Modula-3-Compiler wurde von ''Elego Software Solutions'' übernommen. Seit der Übernahme wird vor allem ''Critical Mass Modula-3'' stetig weiterentwickelt. Die Quellen sowie Binärpakete für eine Reihe von Betriebssystemen können frei (unter einer wenig restriktiven Lizenz etwa im Vergleich zur GPL) heruntergeladen werden.


== Weblinks ==
== Weblinks ==
Zeile 66: Zeile 51:
* [http://www.1o0.de/wi-links/informatik/praxis/programmiersprachen/modula3/installation/windows/windows.html Modula-3: Installation unter Windows]
* [http://www.1o0.de/wi-links/informatik/praxis/programmiersprachen/modula3/installation/windows/windows.html Modula-3: Installation unter Windows]
* [news:comp.lang.modula3 Newsgroup zu Modula-3]
* [news:comp.lang.modula3 Newsgroup zu Modula-3]
*{{Webarchiv | url=http://www.ifi.uni-klu.ac.at/Modula-3/m3book/examples.html | wayback=19970814162826 | text=Laszlo Boszormenyi & Carsten Weich, ''Programming in Modula-3: An Introduction in Programming in Style'': program examples}}
*{{Webarchiv |url=http://www.ifi.uni-klu.ac.at/Modula-3/m3book/examples.html |text=Laszlo Boszormenyi & Carsten Weich, ''Programming in Modula-3: An Introduction in Programming in Style'': program examples |wayback=19970814162826}}


{{Normdaten|TYP=s|GND=4294172-6}}
{{Normdaten|TYP=s|GND=4294172-6}}

Aktuelle Version vom 20. Juni 2023, 14:11 Uhr

Modula-3 ist eine imperative, objektorientierte Programmiersprache. Sie versteht sich als Nachfolger von Pascal, Modula-2, Modula-2+ und Cedar und wurde von DEC und Olivetti entwickelt. Sie wurde in der Tradition der Sprachen von Niklaus Wirth unter den Gesichtspunkten der Einfachheit und Strenge entwickelt, an der Entwicklung war Wirth allerdings nur als Berater beteiligt. Die Einfachheit bezieht sich hierbei auf den Sprachumfang (Die Sprachdefinition von Modula-3 umfasst 60 Seiten) und nicht auf die Länge der Programme oder auf eine Orientierung an persönlichen Programmiergewohnheiten.

Modula-3 besitzt folgende Eigenschaften:

Die oben genannten Konzepte wurden regelrecht minimalistisch umgesetzt. Dies erleichtert die Einarbeitung für jemanden, der mit diesen Konzepten vertraut ist.

  • Objektorientierung besteht im Wesentlichen aus dem Typ OBJECT.
  TYPE
    T = OBJECT
          a: INTEGER;
        METHODS
          m (arg: CHAR;) := P;
        END;
Dies definiert den Typ T für Objekte, welche die Objektvariable a und die Methode m enthalten. Die Methode m wird implementiert, indem man ihr eine Prozedur P zuweist. Diese muss die Signatur
 PROCEDURE P (self: T; arg: CHAR; );
besitzen.
Es gibt keine ausgezeichneten Methoden wie Konstruktoren und Destruktoren. Allerdings lassen sich Objektvariablen per Typdefinition in einen definierten Anfangszustand versetzen.
  • Kapselung wird durch die von Modula-2 bekannte Trennung in Schnittstelle und Implementation erreicht. Durch die teilweise Aufdeckung von Untertypbeziehungen (REVEAL) können darüber hinaus beliebig feine Abstufungen von Zugriffsmöglichkeiten definiert werden. Dies ist in gewisser Weise eine Verallgemeinerung der public-protected-private-Hierarchie und der friends-Vereinbarungen von C++.
  • Mit Typen parametrisierte Datenstrukturen lassen sich mit generischen Modulen realisieren. Generische Module unterscheiden sich von normalen Modulen durch Modul-Parameter. In gewisser Weise kann man damit ausgewählte IMPORT-Anweisungen variabel halten. Nachteil dieser einfachen Realisierung ist, dass generische Module nicht direkt übersetzt werden können, sondern nur ihre Ausprägungen.

Die DEC wurde 1998 an Compaq verkauft; diese wiederum ging 2002 in Hewlett-Packard auf. Pflege und Weiterentwicklung der Quellen der wichtigsten Modula-3-Compiler wurde von Elego Software Solutions übernommen. Seit der Übernahme wird vor allem Critical Mass Modula-3 stetig weiterentwickelt. Die Quellen sowie Binärpakete für eine Reihe von Betriebssystemen können frei (unter einer wenig restriktiven Lizenz etwa im Vergleich zur GPL) heruntergeladen werden.