<?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=Occam</id>
	<title>Occam - 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=Occam"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Occam&amp;action=history"/>
	<updated>2026-05-30T19:18:08Z</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=Occam&amp;diff=78546&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Occam&amp;diff=78546&amp;oldid=prev"/>
		<updated>2025-08-15T12:40:41Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Dieser Artikel|behandelt eine Programmiersprache. Zur Person siehe [[Wilhelm von Ockham]].}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Programmiersprache&lt;br /&gt;
 | Name = Occam&lt;br /&gt;
 | Logo = [[Datei:1983 1988 Trademark occam and occam 2 INMOS Limited.jpg|rahmenlos]]&lt;br /&gt;
 | Beschreibung = Parallele Sprache zur Programmierung von Transputern&lt;br /&gt;
 | Paradigma = [[Imperative Programmierung|imperativ]], [[Parallele Programmierung|parallel]]&lt;br /&gt;
 | Erscheinungsjahr = 1985&lt;br /&gt;
 | Entwickler = [[Inmos]] Ltd.&lt;br /&gt;
 | AktuelleVersion = 2.1&lt;br /&gt;
 | AktuelleVersionFreigabeDatum =&lt;br /&gt;
 | Typisierung =&lt;br /&gt;
 | Implementierung =&lt;br /&gt;
 | Dialekte = occam-π&lt;br /&gt;
 | Beeinflusst_von = [[Communicating Sequential Processes]]&lt;br /&gt;
 | Beeinflusste =&lt;br /&gt;
 | Website =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Occam&amp;#039;&amp;#039;&amp;#039; ist eine [[Imperative Programmierung|imperative]], [[Parallele Programmierung|parallele]] [[Programmiersprache]], die auf [[Communicating Sequential Processes]] aufbaut. Sie wurde um 1985 unter anderem von [[David May (Informatiker)|David May]] bei der Firma [[Inmos]] entwickelt und ist nach dem Philosophen und Logiker [[Wilhelm von Ockham]] (im Englischen auch &amp;#039;&amp;#039;Occam&amp;#039;&amp;#039;) benannt. Ihr Einsatzschwerpunkt liegt auf der Implementierung [[Verteiltes System|verteilter Systeme]], insbesondere von [[Transputer]]-Systemen. Ursprünglich war sie für [[Mikroprozessor]]en von INMOS gedacht, existiert aber heute auch für andere Plattformen.&lt;br /&gt;
&lt;br /&gt;
== Grundkonzept ==&lt;br /&gt;
Occam wurde nach Wilhelm von Ockham benannt, da die Sprache in ihrem Ansatz dem Prinzip von [[Ockhams Rasiermesser]] folgt. Es existieren in Occam lediglich fünf Grundkonstrukte: Sequenz, Parallelität, Alternative, Bedingung und Schleife. Jeder dieser Konstrukte bildet einen eigenen Prozess, der aus einzelnen Statements besteht, die wiederum selbst Prozesse darstellen. Die Kommunikation zwischen den Prozessen erfolgt über &amp;#039;&amp;#039;Channels&amp;#039;&amp;#039; (deutsch: Kanäle). Mit einem Fragezeichen (&amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;) werden Channels eingelesen und mit einem Ausrufezeichen (&amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;) werden Daten auf einem Channel ausgegeben. Kommentare werden mit &amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt; eingeleitet und reichen bis zum Zeilenende. Funktionsblöcke werden zusammengefasst, indem jeder Zeile der gleiche [[Einzug (Typografie)|Einzug]] vorangestellt wird. Die beiden wichtigsten Konstrukte Sequenz und Parallelität sollen kurz vorgestellt werden. Besonders die Parallelität unterscheidet Occam von den sequenziellen Programmiersprachen wie [[C (Programmiersprache)|C]], [[BASIC]] oder [[Pascal (Programmiersprache)|Pascal]].&lt;br /&gt;
&lt;br /&gt;
=== Sequenz ===&lt;br /&gt;
Eine Sequenz wird mit dem Schlüsselwort &amp;lt;code&amp;gt;SEQ&amp;lt;/code&amp;gt; eingeleitet. Occam verhält sich innerhalb einer Sequenz wie eine herkömmliche Programmiersprache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
SEQ&lt;br /&gt;
  EKanal ? a&lt;br /&gt;
  b := a * 5&lt;br /&gt;
  AKanal ! b&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Codefragment wird zunächst der Wert aus dem Channel &amp;lt;code&amp;gt;EKanal&amp;lt;/code&amp;gt; ausgelesen und in der [[Variable (Programmierung)|Variablen]] &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; abgelegt. Dann wird der Variablen &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; der fünffache Wert von &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; zugewiesen und die Variable &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; an den Channel &amp;lt;code&amp;gt;AKanal&amp;lt;/code&amp;gt; ausgegeben. Die Abarbeitung der Statements erfolgt dabei der Reihe nach (sequentiell).&lt;br /&gt;
&lt;br /&gt;
=== Parallelität ===&lt;br /&gt;
Parallel abzuarbeitende Anweisungen werden mit dem Schlüsselwort &amp;lt;code&amp;gt;PAR&amp;lt;/code&amp;gt; eingeleitet. Jeder darin enthaltene Prozess wird dabei gleichzeitig gestartet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
PAR&lt;br /&gt;
  SEQ&lt;br /&gt;
    EKanal1 ? a&lt;br /&gt;
    EKanal2 ? b&lt;br /&gt;
    c := a * b&lt;br /&gt;
    AKanal1 ! c&lt;br /&gt;
  SEQ&lt;br /&gt;
    EKanal3 ? x&lt;br /&gt;
    EKanal4 ? y&lt;br /&gt;
    z := x + y&lt;br /&gt;
    AKanal2 ! z&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der gesamte &amp;lt;code&amp;gt;PAR&amp;lt;/code&amp;gt;-Prozess besteht hier aus zwei &amp;lt;code&amp;gt;SEQ&amp;lt;/code&amp;gt;-Prozessen, die ihrerseits wiederum aus einzelnen Statements bestehen. Die beiden &amp;lt;code&amp;gt;SEQ&amp;lt;/code&amp;gt;-Prozesse werden (wegen der ihnen übergeordneten &amp;lt;code&amp;gt;PAR&amp;lt;/code&amp;gt;-Anweisung) gleichzeitig gestartet und parallel abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Hello, World! in Occam ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
PROC HelloWorld()&lt;br /&gt;
  []BYTE helloworldstring :&lt;br /&gt;
  SEQ&lt;br /&gt;
    helloworldstring := &amp;quot;Hello, World!&amp;quot;&lt;br /&gt;
    screen ! helloworldstring&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Ralf Steinmetz&lt;br /&gt;
   |Titel=OCCAM 2&lt;br /&gt;
   |Verlag=Hüthig&lt;br /&gt;
   |Ort=Heidelberg&lt;br /&gt;
   |Jahr=1988&lt;br /&gt;
   |ISBN=3-7785-1654-X}}&lt;br /&gt;
* {{Literatur| Autor=Heinz Ebert| Titel=Transputer und Occam| TitelErg=Das Handbuch für Systementwickler| Verlag=Heise| Ort=Hannover| Jahr=1993| Umfang=781| ISBN=978-3-88229-000-4}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://web.archive.org/web/20180101010603/http://frmb.org:80/occtutor.html occam tutorial] (englisch)&lt;br /&gt;
* [https://www.wotug.org/occam/documentation/oc21refman.pdf occam 2.1 Handbuch] (PDF; 994&amp;amp;nbsp;kB; englisch)&lt;br /&gt;
* [https://www.transputer.net/obooks/ diverse Bücher zu Occam] (englisch)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmiersprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>