<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modula-2</id>
	<title>Modula-2 - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Modula-2"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modula-2&amp;action=history"/>
	<updated>2026-05-21T10:18:47Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Modula-2&amp;diff=25273&amp;oldid=prev</id>
		<title>imported&gt;Thomas Dresler: Klammern korrigiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Modula-2&amp;diff=25273&amp;oldid=prev"/>
		<updated>2025-12-20T14:46:52Z</updated>

		<summary type="html">&lt;p&gt;Klammern korrigiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Programmiersprache&lt;br /&gt;
|Name =&lt;br /&gt;
|Paradigma = [[Imperative Programmierung|imperativ]], [[Strukturierte Programmierung|strukturiert]], [[Modul (Software)|modular]]&lt;br /&gt;
|Erscheinungsjahr = 1978&lt;br /&gt;
|Entwickler = [[Niklaus Wirth]]&lt;br /&gt;
|Typisierung =&lt;br /&gt;
|Implementierung =&lt;br /&gt;
|Dialekte =&lt;br /&gt;
|Beeinflusst_von = [[Pascal (Programmiersprache)|Pascal]]&lt;br /&gt;
|Beeinflusste = [[Lua]], [[Oberon (Programmiersprache)|Oberon]], [[Seed7]], [[Modula-2+]], [[Modula-3]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Modula-2&amp;#039;&amp;#039;&amp;#039; ist eine 1978 entstandene Weiterentwicklung der [[Programmiersprache]] [[Pascal (Programmiersprache)|Pascal]] und wurde wie diese von [[Niklaus Wirth]] entwickelt. Hauptkennzeichen von Modula-2 sind die Sprachmerkmale zur [[Modul (Software)|Modularisierung]] von Programmen. Modula-2 selbst diente später als Vorlage für die Programmiersprache [[Oberon (Programmiersprache)|Oberon]].&lt;br /&gt;
&lt;br /&gt;
== Entstehung ==&lt;br /&gt;
Wirth hatte 1977/78  am Forschungszentrum Palo Alto Research Institute von [[Xerox PARC|Xerox]] die zukunftsweisende Architektur der [[Xerox Alto|Alto]]-Workstations kennengelernt, die bereits über Maus, Grafikbildschirm und Fenstertechnik verfügten. Programmiert wurde der Alto in der Pascal-ähnlichen Programmiersprache [[Mesa (Programmiersprache)|Mesa]]. Nach seiner Rückkehr an die [[Eidgenössische Technische Hochschule Zürich|ETH Zürich]] begann Wirth mit seiner Gruppe die Eigenentwicklung einer solchen Workstation, der später so genannten [[Lilith (Computersystem)|Lilith]], wobei Hardware und Software im Zusammenhang entwickelt wurden.&lt;br /&gt;
&lt;br /&gt;
Standard-Pascal, das als Sprache für den Programmierunterricht entwickelt worden war, eignete sich nicht für die Programmierung eines [[Betriebssystem]]s für die Lilith, und zwar vor allem aus zwei Gründen:&lt;br /&gt;
&lt;br /&gt;
* es fehlen Vorrichtungen für die [[Nebenläufigkeit|nebenläufige Programmierung]]&lt;br /&gt;
* die Aufteilung eines großen Programms in zahlreiche Module mit sauber definierten [[Schnittstelle#Softwareschnittstelle|Schnittstellen]] nach den Lehren der [[Softwaretechnik]] ist nicht möglich.&lt;br /&gt;
&lt;br /&gt;
Die neue Sprache, die den Namen „Modula“ erhielt, enthielt gegenüber Pascal deshalb (neben etlichen Änderungen in der [[Syntax]]) zwei neue Konzepte:&lt;br /&gt;
&lt;br /&gt;
* Prozeduren &amp;lt;code&amp;gt;NEWPROCESS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TRANSFER&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;IOTRANSFER&amp;lt;/code&amp;gt; zur Behandlung nebenläufiger Prozesse ([[Thread (Informatik)|threads]]) im Sinne eines [[Kooperatives Multitasking|kooperativen Multitaskings]] und&lt;br /&gt;
* das &amp;lt;code&amp;gt;MODULE&amp;lt;/code&amp;gt; als Einheit für die separate [[Compiler|Übersetzung]] von Programmteilen.&lt;br /&gt;
&lt;br /&gt;
Modula wurde außerhalb der [[ETHZ]] erst in der Version Modula-2 bekannt.&lt;br /&gt;
Die klare Trennung von Definition und Implementierung in getrennten Dateien (in der Regel mit [[Dateiendung|Extension]] DEF bzw. MOD) war richtungsweisend und wurde von späteren Programmiersprachen zwar kopiert, aber in ihrer Klarheit nicht erreicht.&lt;br /&gt;
Modula-2 hatte später von Wirth unabhängige Nachfolger wie [[Modula-2+|Modula-2 plus]] und [[Modula-3]]. Seit 1996 gibt es eine internationale Norm [[ISO]]/[[International Electrotechnical Commission|IEC]] 10514-1 für Modula-2.&lt;br /&gt;
&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Da Modula-2 eine Fortentwicklung von [[Pascal (Programmiersprache)|Pascal]] ist, genügt es, auf die wesentlichen Unterschiede zu dieser Sprache einzugehen.&lt;br /&gt;
=== Module ===&lt;br /&gt;
Die prominenteste Neuerung in Modula-2 sind die &amp;#039;&amp;#039;Module&amp;#039;&amp;#039; als Vorrichtung für das modulare Programmieren nach den Vorstellungen der [[Softwaretechnik]], zuerst geäußert von  [[David Parnas]]. Auch das Hauptprogramm heißt deswegen &amp;lt;code&amp;gt;MODULE&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;PROGRAM&amp;lt;/code&amp;gt; wie in Pascal. Alle separat vom Hauptprogramm übersetzten Teile müssen in zwei Dateien aufgespaltet werden: Ein &amp;lt;code&amp;gt;DEFINITION MODULE&amp;lt;/code&amp;gt; enthält nur die Beschreibung der [[Schnittstelle]] des Moduls, das heißt: es listet die Konstanten, Typen, Variablen und Prozeduren auf, die für andere Module zur Verfügung gestellt („exportiert“) werden sollen. Ein getrenntes &amp;lt;code&amp;gt;IMPLEMENTATION MODULE&amp;lt;/code&amp;gt; gibt dann die Implementierung an.&lt;br /&gt;
&lt;br /&gt;
Es ist im Sinne der strikten [[Modularisierung]] folgerichtig, dass Konzepte wie die [[Eingabe und Ausgabe|Ein-/Ausgabe]] und mathematische Funktionen, die in Pascal zum normalen Sprachumfang gehörten, in der Sprache Modula-2 nicht enthalten sind. Sie müssen im Bedarfsfall aus dafür vorgesehenen Modulen (in der Regel &amp;lt;code&amp;gt;InOut&amp;lt;/code&amp;gt; für Ein-/Ausgabe und &amp;lt;code&amp;gt;MathLib&amp;lt;/code&amp;gt; für die mathematischen Funktionen) importiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Datentypen ===&lt;br /&gt;
Die Lilith sollte eine Wortbreite von 16 bit bekommen. Ganze Zahlen hätten somit einen Bereich von -32.768 bis +32.767 gehabt, was Wirth als zu große Einschränkung empfand. Zusätzlich zum Datentyp &amp;lt;code&amp;gt;INTEGER&amp;lt;/code&amp;gt; bekam Modula-2 daher einen Datentyp &amp;lt;code&amp;gt;CARDINAL&amp;lt;/code&amp;gt; für die nicht-negativen Zahlen zwischen 0 und 65.535. Gemischte Ausdrücke, die sowohl &amp;lt;code&amp;gt;INTEGER&amp;lt;/code&amp;gt;- als auch &amp;lt;code&amp;gt;CARDINAL&amp;lt;/code&amp;gt;-Teilausdrücke enthalten, waren verboten. Deshalb gibt es allgemeine Möglichkeiten, Typen zu verwandeln:&lt;br /&gt;
&lt;br /&gt;
* Typ&amp;#039;&amp;#039;konversions&amp;#039;&amp;#039;funktionen &amp;lt;code&amp;gt;VAL(&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;Typ&amp;#039;&amp;#039;,&amp;#039;&amp;#039;Ausdruck&amp;#039;&amp;#039;&amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; rechnen einen Ausdruck so um, dass er zu dem neuen Typ gehört, während&lt;br /&gt;
* Typ&amp;#039;&amp;#039;transfer&amp;#039;&amp;#039;funktionen („&amp;#039;&amp;#039;type casts&amp;#039;&amp;#039;“, bei Wirth: „&amp;#039;&amp;#039;type cheats&amp;#039;&amp;#039;“) der Form &amp;#039;&amp;#039;Typ&amp;#039;&amp;#039;&amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;Ausdruck&amp;#039;&amp;#039;&amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; ein Bitmuster unverändert lassen und lediglich für den Compiler den Datentyp verändern.&lt;br /&gt;
&lt;br /&gt;
Beispielsweise ergibt &amp;lt;code&amp;gt;VAL(CARDINAL,-1)&amp;lt;/code&amp;gt; eine Fehlermeldung, während &amp;lt;code&amp;gt;CARDINAL(-1) = 65.535&amp;lt;/code&amp;gt; gilt.&lt;br /&gt;
&lt;br /&gt;
Eine Innovation gegenüber Pascal stellt auch der Datentyp &amp;lt;code&amp;gt;PROCEDURE&amp;lt;/code&amp;gt; dar, mit dem eine Schwäche von Pascal behoben werden sollte: In Pascal war es möglich, einer [[Prozedur (Programmierung)|Prozedur]] eine [[Funktion (Programmierung)|Funktion]] als Argument zu übergeben, gekennzeichnet durch das Schlüsselwort &amp;lt;code&amp;gt;FUNCTION&amp;lt;/code&amp;gt;. Dabei konnte jedoch nicht überprüft werden, ob die später aktuell übergebene Funktion in Anzahl und Typ ihrer Parameter überhaupt passend war. Deklariert man jedoch in Modula-2 beispielshalber&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;modula2&amp;quot;&amp;gt;&lt;br /&gt;
   TYPE myFunction = PROCEDURE (INTEGER): REAL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
so kann beim Aufruf einer Prozedur (das Schlüsselwort &amp;lt;code&amp;gt;FUNCTION&amp;lt;/code&amp;gt; gibt es in Modula-2 nicht)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;modula2&amp;quot;&amp;gt;&lt;br /&gt;
   PROCEDURE myProcedure (f: myFunction; n: INTEGER): REAL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
der Compiler bei jedem Aufruf von &amp;lt;code&amp;gt;myProcedure&amp;lt;/code&amp;gt; feststellen, ob die aktuell für &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; übergebene Funktion den richtigen Typ hat. Da Prozeduren damit ganz normale Datentypen sind, ist es auch möglich, sie in anderen Datenstrukturen wie etwa &amp;lt;code&amp;gt;ARRAY&amp;lt;/code&amp;gt;s und &amp;lt;code&amp;gt;RECORD&amp;lt;/code&amp;gt;s einzubauen.&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen ===&lt;br /&gt;
Zur Vermeidung zahlreicher &amp;lt;code&amp;gt;BEGIN&amp;lt;/code&amp;gt; − &amp;lt;code&amp;gt;END&amp;lt;/code&amp;gt;-Klammern wird in Modula-2 die &amp;lt;code&amp;gt;IF&amp;lt;/code&amp;gt;- und &amp;lt;code&amp;gt;WHILE&amp;lt;/code&amp;gt;-Anweisung jeweils mit einem &amp;lt;code&amp;gt;END&amp;lt;/code&amp;gt; abgeschlossen. Das von Pascal vertraute &amp;lt;code&amp;gt;GOTO&amp;lt;/code&amp;gt; gibt es nicht, dafür aber ein &amp;lt;code&amp;gt;LOOP&amp;lt;/code&amp;gt; – &amp;lt;code&amp;gt;EXIT&amp;lt;/code&amp;gt;-Konstrukt.&lt;br /&gt;
&lt;br /&gt;
=== Das Pseudomodul SYSTEM ===&lt;br /&gt;
Als Sprache für die Betriebssystemprogrammierung musste Modula-2 über Vorrichtungen verfügen, auf Details der zugrundeliegenden Maschine zuzugreifen. Dafür gab es ein eigenes Modul &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;, aus dem sich die Datentypen &amp;lt;code&amp;gt;WORD&amp;lt;/code&amp;gt; für ein unspezifisches Speicherwort und &amp;lt;code&amp;gt;ADDRESS&amp;lt;/code&amp;gt; für eine Speicheradresse importieren ließen, ebenso wie eine Funktion &amp;lt;code&amp;gt;ADR&amp;lt;/code&amp;gt; zur Ermittlung der Speicheradresse eines Konstrukts und &amp;lt;code&amp;gt;TSIZE&amp;lt;/code&amp;gt; zur Ermittlung der Speichergröße für einen bestimmten Datentyp. Hinzu kommen die bereits erwähnten Funktionen für die nebenläufige Programmierung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; heißt Pseudomodul, weil es dazu weder Definitions- noch Implementierungsteil gibt, sondern alle Kenntnis über dieses Modul direkt in den Compiler eingebaut ist.&lt;br /&gt;
&lt;br /&gt;
== Entwicklung ==&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Dialekte von Modula-2.  Einerseits &amp;#039;&amp;#039;&amp;#039;PIM&amp;#039;&amp;#039;&amp;#039;, die von Niklaus Wirth entwickelten und im Standardwerk&lt;br /&gt;
&amp;quot;Programmieren in Modula-2&amp;quot; definierten Varianten. Entsprechend den Auflagen des Buches gibt es die zweite, dritte und vierte Variante von PIM. Mit jeder Auflage wurde die Sprache leicht verändert. Der zweite Dialekt ist &amp;#039;&amp;#039;&amp;#039;ISO&amp;#039;&amp;#039;&amp;#039;, die von einem internationalen Komitee (unter dem Dach der [[International Organization for Standardization]]) erarbeitete Variante.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PIM2&amp;#039;&amp;#039;&amp;#039; (1983): Expliziter &amp;#039;&amp;#039;&amp;#039;EXPORT&amp;#039;&amp;#039;&amp;#039; in Definitionsmodulen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PIM3&amp;#039;&amp;#039;&amp;#039; (1985): Kein expliziter Export in Definitionsmodulen mehr nötig.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PIM4&amp;#039;&amp;#039;&amp;#039; (1989): Konkretisierung des Verhaltens des &amp;#039;&amp;#039;&amp;#039;MOD&amp;#039;&amp;#039;&amp;#039;-Operators, wenn die Operanden negativ sind.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ISO&amp;#039;&amp;#039;&amp;#039; (1996): Der Anspruch bei der Entwicklung von ISO Modula-2 war, die Mehrdeutigkeiten von PIM Modula-2 aufzulösen. Außerdem wurden der Sprache die Datentypen &amp;#039;&amp;#039;&amp;#039;COMPLEX&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;LONGCOMPLEX&amp;#039;&amp;#039;&amp;#039;, Ausnahmen (Exceptions), die Modultermination (&amp;#039;&amp;#039;&amp;#039;FINALLY&amp;#039;&amp;#039;&amp;#039;-Klausel) und eine umfangreiche Standardbibliothek für Ein- und Ausgabe hinzugefügt – neben einer Reihe von kleineren Änderungen.&amp;lt;ref&amp;gt;ISO/IEC 10514-1:1996&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementierungen ==&lt;br /&gt;
&lt;br /&gt;
Modula-2 erreichte in den späten [[1980er]] Jahren eine verhältnismäßig große Popularität, insbesondere in der Version von &amp;#039;&amp;#039;Jensen und Partners International&amp;#039;&amp;#039; (JPI), die einen 10-Fenster-Editor in ihrer Entwicklungsumgebung für [[MS-DOS]] und einen sehr schnellen Compiler mit gut optimiertem [[Objektcode]] auf den Markt brachten. Spätere Versionen davon hießen &amp;#039;&amp;#039;TopSpeed Modula-2&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Entwicklung und Vertrieb der meisten Modula-2-Compiler wurde spätestens in den 2010er Jahren eingestellt. Zum Download verfügbar sind derzeit vor allem der GNU Modula-2-Compiler aus der [[GNU Compiler Collection]] (GCC) und ADW Modula-2 (Stand 2025).&lt;br /&gt;
&lt;br /&gt;
Historische Modula-2-Compiler:&lt;br /&gt;
* Aglet Modula-2 – [[AmigaOS]] ([[PowerPC|PPC]])&lt;br /&gt;
* Amsterdam Compiler Kit (ACK) Modula-2 – [[MINIX]]&lt;br /&gt;
* Gardens Point Modula-2 – BSD, Linux, OS/2, Solaris&lt;br /&gt;
* Hänisch Modula-2 – ATARI ST/TT (M68K)&lt;br /&gt;
* MOCKA Modula-2 Compiler System – BSD und Linux für x86&lt;br /&gt;
* M2Amiga - AmigaOS&lt;br /&gt;
* Megamax Modula-2 – [[Atari ST|ATARI ST]](e) ([[M68K]])&lt;br /&gt;
* Objective Modula-2 – Cocoa und GNUstep support&lt;br /&gt;
* Stony Brook Modula-2, Windows&lt;br /&gt;
* XDS Modula-2 – Windows und Linux&lt;br /&gt;
&lt;br /&gt;
== Kritik ==&lt;br /&gt;
Wirth selbst&amp;lt;ref&amp;gt;&amp;#039;&amp;#039;A Brief History of Modula and Lilith&amp;#039;&amp;#039;. In: &amp;#039;&amp;#039;Advances in Modular Languages – Proceedings of the Joint Modular Languages Conference&amp;#039;&amp;#039;, Ulm 1994&amp;lt;/ref&amp;gt; listet im Zusammenhang mit der Entwicklung von Oberon folgende Probleme von Modula-2 auf:&lt;br /&gt;
&lt;br /&gt;
=== Qualifizierende Importe ===&lt;br /&gt;
Die empfohlene Methode zur Verwendung von Bestandteilen fremder Module ist&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;modula2&amp;quot;&amp;gt;&lt;br /&gt;
IMPORT M;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dadurch werden alle von &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; exportierten Bezeichner durch sogenannte &amp;#039;&amp;#039;qualifizierte Bezeichner&amp;#039;&amp;#039;, etwa &amp;lt;code&amp;gt;M.A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;M.B&amp;lt;/code&amp;gt; verfügbar. Alternativ dazu kennt Modula-2 den &amp;#039;&amp;#039;qualifizierenden Import&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;modula2&amp;quot;&amp;gt;&lt;br /&gt;
FROM M IMPORT A,B;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Bei diesem Import sind die Bezeichner dann einfach in der Form &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; verfügbar; die Herkunft aus dem Modul &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt; ist an der Verwendungsstelle dann nicht mehr direkt sichtbar. Dadurch können Programmierer Irrtümer begehen. In Oberon gibt es den qualifizierenden Import deshalb nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Export von Aufzählungstypen ===&lt;br /&gt;
Enthält ein Modul den exportierten Typ&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;modula2&amp;quot;&amp;gt;&lt;br /&gt;
TYPE Ampel = (rot, gelb, gruen);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
so bezieht sich nach der Logik der Sprache ein Import dieses Typs nur auf den Typnamen (&amp;lt;code&amp;gt;Ampel&amp;lt;/code&amp;gt;), in Wirklichkeit werden aber die Namen &amp;lt;code&amp;gt;rot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gelb&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;gruen&amp;lt;/code&amp;gt; mitimportiert, was im Falle von Bezeichnerkonflikten an der Verwendungsstelle den Programmierer verwirren kann. In Oberon gibt es Aufzählungstypen deshalb gar nicht mehr, weil man sonst auch ihren Export nicht verhindern könnte.&lt;br /&gt;
&lt;br /&gt;
=== Datentyp CARDINAL ===&lt;br /&gt;
Vorzeichenlose Arithmetik funktioniert ganz anders als vorzeichenbehaftete Arithmetik; deshalb sind Ausdrücke, in denen vorzeichenlose und vorzeichenbehaftete Werte gleichzeitig vorkommen, problematisch. Modula-2 hat deshalb solche Mischungen grundsätzlich verboten, was bei den Programmierern auf Protest stieß, weil die Programme durch die Verwendung von Typkonversionsfunktionen unnötig verkompliziert wurden. Darüber hinaus entstehen Unsymmetrien in der Behandlung bestimmter Programmstrukturen und bei der mathematischen [[Division mit Rest#Modulo|Modulo-Funktion]] (&amp;lt;code&amp;gt;MOD&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Typtransferfunktionen und andere &amp;#039;&amp;#039;low level&amp;#039;&amp;#039;-Vorrichtungen ===&lt;br /&gt;
Mit den Typtransferfunktionen (&amp;#039;&amp;#039;type casts&amp;#039;&amp;#039;) wird es möglich, Eigenschaften der zugrundeliegenden Maschine zu entdecken, die dem Programmierer einer höheren Programmiersprache eigentlich verborgen bleiben sollten, wie etwa die [[Bit-Reihenfolge|Endianness]], das heißt die Frage, in welcher Ordnung die einzelnen [[Bit]]s eines Maschinenworts abgespeichert sind. Je nachdem ist nämlich&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;modula2&amp;quot;&amp;gt;&lt;br /&gt;
BITSET(65520) = {4 .. 15}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;modula2&amp;quot;&amp;gt;&lt;br /&gt;
BITSET(65520) = {0 .. 11}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
für eine 16-Bit-Architektur.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* [[Niklaus Wirth]]: &amp;#039;&amp;#039;Programming in Modula-2.&amp;#039;&amp;#039; 4. Auflage. Springer, Berlin u.&amp;amp;nbsp;a. 1988, ISBN 0-387-50150-9.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Imperative Programmiersprache]]&lt;br /&gt;
[[Kategorie:Programmiersprache mit einem ISO-Standard]]&lt;br /&gt;
[[Kategorie:Bildungsorientierte Programmiersprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Thomas Dresler</name></author>
	</entry>
</feed>