Schauspielermodell

Das Schauspielermodell in Informatik ist ein mathematisches Modell von Gleichzeitige Berechnung das behandelt Schauspieler als universelle Primitiv der gleichzeitigen Berechnung. Als Reaktion auf a Botschaft Es empfängt, ein Akteur kann: lokale Entscheidungen treffen, mehr Akteure erstellen, mehr Nachrichten senden und bestimmen, wie auf die nächste empfangene Nachricht antwortet. Akteure können ihre eigenen ändern Privatstaatkann sich aber nur indirekt durch Nachrichten beeinflussen (Entfernen der Notwendigkeit Sperrbasierte Synchronisation).

Das Schauspielermodell entstand 1973.[1] Es wurde beide als Rahmen für a verwendet theoretisches Verständnis von Berechnung und als theoretische Grundlage für mehrere Praktische Implementierungen von Gleichzeitige Systeme. Die Beziehung des Modells zu anderen Arbeiten wird in erörtert Akteurmodell und Prozessrechnung.

Geschichte

Entsprechend Carl HewittIm Gegensatz zu früheren Berechnungsmodellen wurde das Schauspielermodell inspiriert von Physik, einschließlich generelle Relativität und Quantenmechanik. Es wurde auch von den Programmiersprachen beeinflusst Lispeln, Simulafrühe Versionen von Smalltalk, Fähigkeiten basierende Systeme, und Paketschaltung. Die Entwicklung wurde "durch die Aussicht auf hoch parallele Computermaschinen motiviert, bestehend aus Dutzenden, Hunderten oder sogar Tausenden unabhängiger Mikroprozessoren, die jeweils ihren eigenen lokalen Speicher- und Kommunikationsprozessor mit einem leistungsstarken Kommunikationsnetzwerk kommunizieren".[2] Seit dieser Zeit das Aufkommen der massiven Parallelität durch Multi-Core und Manycore Computerarchitekturen haben das Interesse am Schauspielermodell wiederbelebt.

Nach Hewitt, Bishop und Steigers 1973er Veröffentlichung, Irene Greif entwickelt an Betriebssemantik für das Schauspielermodell als Teil ihrer Doktorarbeit.[3] Zwei Jahre später, Henry Baker und Hewitt veröffentlichte eine Reihe axiomatischer Gesetze für Schauspielersysteme.[4][5] Andere wichtige Meilensteine ​​sind William Clers 1981 Dissertation Einführung a Denotationssemantik bezogen auf Power Domains[2] und Gul Agha's 1985 Dissertation, die ein übergangsbasiertes semantisches Modell weiterentwickelte, ergänzt zu Clers.[6] Dies führte zur vollen Entwicklung von Schauspielermodelltheorie.

Russ Atkinson, Giuseppe Attardi, Henry Baker, Gerry Barber, Peter Bishop, Peter de Jong, Ken Kahn, Henry Lieberman, Carl Manning, Tom Reinhardt, Richard Steiger und Dan Theriaute in der Semantics -Gruppe in der Semantic Massachusetts Institute of Technology (MIT). Forschungsgruppen unter der Leitung von Chuck Seitz unter Kalifornisches Institut der Technologie (Caltech) und Bill Dally am MIT konstruierte Computerarchitekturen, die die Botschaft weiterentwickelten. Sehen Implementierung des Akteurmodells.

Die Forschung zum Schauspielermodell wurde bei durchgeführt Kalifornisches Institut der Technologie, Universität Kyoto TOKORO LABORTER, Mikroelektronik- und Computertechnologieunternehmen (MCC), Labor für künstliche Intelligenz MIT, Sri, Universität in Stanford, Universität von Illinois in Urbana -Champaign,[7] Pierre und Marie Curie University (Universität Paris 6), Universität Pisa, Universität von Tokio Yonezawa -Labor, Centrum Wiskunde & Informatica (CWI) und anderswo.

Grundsätzliche Konzepte

Das Schauspielermodell übernimmt die Philosophie, dass Alles ist ein Schauspieler. Dies ähnelt dem Alles ist ein Objekt Philosophie von einigen verwendet Objekt orientierte Programmierung Sprachen.

Ein Akteur ist eine Computerentität, die als Antwort auf eine Nachricht gleichzeitig:

  • Senden Sie eine begrenzte Anzahl von Nachrichten an andere Akteure;
  • Erstellen Sie eine begrenzte Anzahl neuer Akteure;
  • Bestimmen Sie das Verhalten, das für die nächste Nachricht verwendet werden soll, die es empfängt.

Es gibt keine angenommene Sequenz zu den oben genannten Aktionen und sie könnten parallel durchgeführt werden.

Die Entkopplung des Absenders von der gesendeten Kommunikation war ein grundlegender Fortschritt des Akteurmodells ermöglicht Asynchrone Kommunikation und Kontrollstrukturen als Muster von Nachrichten übergeben.[8]

Empfänger von Nachrichten werden anhand der Adresse identifiziert, manchmal als "Mailingadresse" bezeichnet. Somit kann ein Schauspieler nur mit Akteuren kommunizieren, deren Adressen es hat. Es kann diese von einer Nachricht erhalten, die sie erhält, oder wenn die Adresse für einen Schauspieler selbst erstellt ist.

Das Schauspielermodell ist durch die inhärente Parallelität der Berechnung innerhalb und zwischen Akteuren, dynamische Schaffung von Akteuren, Einbeziehung von Akteuradressen in Nachrichten und Interaktion gekennzeichnet und nur durch direktes Asynchron Nachrichtenübergang ohne Beschränkung auf die Ankunftsreihenfolge der Nachrichten.

Formelle Systeme

Im Laufe der Jahre wurden mehrere verschiedene formale Systeme entwickelt, die Argumentation über Systeme im Akteurmodell ermöglichen. Diese beinhalten:

Es gibt auch Formalismen, die dem Schauspielermodell nicht vollständig treu sind, da sie die garantierte Abgabe von Nachrichten, einschließlich der folgenden, nicht formalisieren (siehe Versuche, die Schauspielersemantik mit Algebra und linearer Logik in Beziehung zu setzen):

Anwendungen

Das Schauspielermodell kann als Rahmen für Modellierung, Verständnis und Argumentation über eine breite Palette von verwendet werden Gleichzeitige Systeme.[15] Zum Beispiel:

  • E-Mail (Email) kann als Schauspielersystem modelliert werden. Konten werden als Schauspieler modelliert und E-mailadressen wie Schauspieler sich anspricht.
  • Internetdienste Kann mit einem einfachen Objektzugriffsprotokoll modelliert werden (SEIFE) Endpunkte, die als Schauspieler adressiert modelliert sind.
  • Objekte mit Schlösser (z.B., wie in Java und C#) kann als modelliert werden Serializer, vorausgesetzt, dass ihre Implementierungen so sind, dass Nachrichten kontinuierlich eintreffen (möglicherweise durch die gespeicherte Speicherung in einem internen Warteschlange). Ein Serializer ist eine wichtige Art von Akteur, die von der Eigenschaft definiert ist, dass er der Ankunft neuer Nachrichten ständig zur Verfügung steht. Jede an einen Serializer gesendete Nachricht wird garantiert eintreffen.[16]
  • Test- und Testkontrollnotation (Ttcn), sowohl TTCN-2 als auch TTCN-3, folgt dem Schauspielermodell eher genau. Im TTCN -Akteur befindet sich eine Testkomponente: Entweder parallele Testkomponente (PTC) oder Haupttestkomponente (MTC). Testkomponenten können Nachrichten an und von Remote -Partnern (Peer -Testkomponenten oder Testsystemschnittstelle) senden und empfangen, wobei letztere anhand seiner Adresse identifiziert werden. Jede Testkomponente hat einen daran gebundenen Verhaltensbaum; Die parallel ausgeführten Testkomponenten und können durch übergeordnete Testkomponenten dynamisch erstellt werden. In eingebaute Sprachkonstrukte können die Definition von Aktionen ergriffen werden, wenn eine erwartete Nachricht von der internen Nachrichtenwarteschlange empfangen wird, z. B. das Senden einer Nachricht an eine andere Peer-Entität oder das Erstellen neuer Testkomponenten.

Semantik für Nachrichten-Passing

Das Schauspielermodell handelt von der Semantik von Nachrichtenübergang.

Unbefragte Nichtdeterminismus -Kontroverse

Die ersten gleichzeitigen Programme waren wohl Interrupt Handler. Im Verlauf des normalen Betriebs musste ein Computer Informationen von außen empfangen können (Zeichen von einer Tastatur, Pakete aus einem Netzwerk, etc). Als die Informationen ankamen, war die Ausführung des Computers unterbrochen und spezieller Code (als Interrupt -Handler bezeichnet) wurde gerufen, um die Informationen in a zu setzen Datenpuffer wo es anschließend abgerufen werden konnte.

In den frühen 1960er Jahren wurden Interrupts verwendet, um die gleichzeitige Ausführung mehrerer Programme auf einem Prozessor zu simulieren.[17] Parallelität mit geteilte Erinnerung führte zu dem Problem von Parallelitätskontrolle. Ursprünglich wurde dieses Problem als eines von einem von konzipiert gegenseitiger Ausschluss auf einem einzigen Computer. Edsger Dijkstra aufgetreten Semaphoren und später zwischen 1971 und 1973,,[18] Tony Hoare[19] und Per Brinch Hansen[20] aufgetreten Monitore Um das gegenseitige Ausschlussproblem zu lösen. Keines dieser Lösungen lieferte jedoch ein Programmiersprache, das den Zugriff auf gemeinsam genutzte Ressourcen verkörperte. Diese Einkapselung wurde später von der erreicht Serializer Konstrukt ([Hewitt und Atkinson 1977, 1979] und [Atkinson 1980]).

Die ersten Berechnungsmodelle (z.B., Turing -Maschinen, Post -Produktionen, die Lambda -Kalkül, usw.) basierten auf Mathematik und nutzten einen globalen Staat, um eine Berechnung darzustellen Schritt (später verallgemeinert in [McCarthy und Hayes 1969] und [Dijkstra 1976] siehe Ereignisbestellungen gegen den globalen Staat). Jeder rechnerische Schritt stammte von einem globalen Zustand der Berechnung zum nächsten globalen Zustand. Der globale staatliche Ansatz wurde fortgesetzt in Automatenheorie zum Finite-State-Maschinen und nach unten drücken Stapelmaschinen, including their Nichtdeterministisch Versionen. Solche nichtterministischen Automaten haben die Eigenschaft von begrenzter Nichtdeterminismus; Das heißt, wenn eine Maschine immer angehalten wird, wenn sie in ihrem Anfangszustand gestartet wird, gibt es eine Grenze für die Anzahl der Zustände, in denen sie angehalten wird.

Edsger Dijkstra Weiter entwickelte der nichtdeterministische globale Zustandsansatz. Das Modell von Dijkstra führte zu einer Kontroverse bezüglich Unbefragter Nichtdeterminismus (auch genannt Unbeständige Unbestimmtheit) ein Eigentum von Parallelität durch die die Verzögerung bei der Wartung eines Antrags aufgrund des Schiedsgerichtsbarkeits für gemeinsame Ressourcen unbegrenzt werden kann Während der Anfrage immer noch garantiert, dass die Anfrage irgendwann gewartet wird. Hewitt argumentierte, dass das Schauspielermodell die Garantie des Dienstes liefern sollte. In Dijkstras Modell könnte ein (paralleles) Programm (parallel), das in einem gut definierten Zustand begann, zwar in einem Computer, das in einem gut definierten Zustand begann, in nur einer begrenzten Anzahl von Zuständen enden [Dijkstra 1976]. Infolgedessen konnte sein Modell nicht die Garantie des Dienstes liefern. Dijkstra argumentierte, dass es unmöglich sei, unbegrenzten Nichtdeterminismus umzusetzen.

Hewitt argumentierte etwas anderes: Es gibt keine Grenze, die darauf hingewiesen werden kann, wie lange es eine Rechenschaltung nennt Schiedsrichter sich niederlassen (siehe Metastabilität (Elektronik)).[21] Schiedsrichter werden in Computern verwendet, um mit den Umständen umzugehen, dass Computeruhren asynchron in Bezug auf Eingaben von außen arbeiten. z.B., Tastatureingabe, Festplattenzugriff, Netzwerkeingabe, usw. Daher könnte es eine unbegrenzte Zeit dauern, bis eine an einen Computer gesendete Nachricht empfangen wird, und in der Zwischenzeit könnte der Computer eine unbegrenzte Anzahl von Staaten durchqueren.

Das Schauspielermodell enthält unbegrenzte Nicht -Abeterminismus, der in einem mathematischen Modell von erfasst wurde Will klebern Verwendung Domain -Theorie.[2] Im Schauspielermodell gibt es keinen globalen Zustand.[zweifelhaft ]

Direkte Kommunikation und Asynchronität

Nachrichten im Schauspielermodell sind nicht unbedingt gepuffert. Dies war eine scharfe Pause mit früheren Ansätzen für Modelle der gleichzeitigen Berechnung. Der Mangel an Pufferung verursachte zum Zeitpunkt der Entwicklung des Schauspielermodells viel Missverständnis und ist immer noch ein kontroverses Thema. Einige Forscher argumentierten, dass die Botschaften im "Äther" oder in der "Umgebung" gepuffert sind. Auch Nachrichten im Schauspielermodell werden einfach gesendet (wie wie Pakete in IP); Es ist nicht erforderlich, mit dem Empfänger einen synchronen Handschlag zu erhalten.

Akteurerstellung plus Adressen in Nachrichten bedeutet variable Topologie

Eine natürliche Entwicklung des Schauspielermodells bestand darin, Adressen in Nachrichten zuzulassen. Beeinflusst von Paket -Switched Networks [1961 und 1964] schlug Hewitt die Entwicklung eines neuen Modells der gleichzeitigen Berechnung vor, bei dem die Kommunikation überhaupt keine erforderlichen Felder enthält: Sie könnten leer sein. Wenn der Absender einer Mitteilung einen Empfänger wünschte, müsste die Adresse in der Kommunikation zugänglich gemacht werden.

Zum Beispiel muss ein Akteur möglicherweise eine Nachricht an einen Empfängerakteur senden, von dem er später eine Antwort erhält, aber die Antwort wird tatsächlich von einer dritten Akteurkomponente behandelt, die für den Empfang und die Antwort der Antwort konfiguriert wurde (z. B. , ein anderer Akteur, der die implementiert Beobachtermuster). Der ursprüngliche Schauspieler könnte dies erreichen, indem er eine Kommunikation sendet, die die Nachricht enthält, die er senden möchte, zusammen mit der Adresse des dritten Schauspielers, der die Antwort behandelt. Dieser dritte Schauspieler, der die Antwort übernimmt Wiederaufnahme (manchmal auch als a genannt Fortsetzung oder Stapelrahmen). Wenn der Empfängerakteur bereit ist, eine Antwort zu senden, sendet er die Antwortnachricht an die Wiederaufnahme Akteuradresse, die in die ursprüngliche Kommunikation aufgenommen wurde.

Die Fähigkeit der Akteure, neue Akteure zu erstellen, mit denen sie die Kommunikation austauschen können, sowie die Fähigkeit, die Adressen anderer Akteure in Nachrichten einzubeziehen, gibt den Akteuren die Fähigkeit, willkürlich variable topologische Beziehungen miteinander zu schaffen und daran teilzunehmen, wie Die Objekte in Simula und anderen objektorientierten Sprachen können auch relational in variable Topologien von meldungsübergreifenden Objekten komponiert werden.

Von Natur aus gleichzeitlich

Im Gegensatz zu dem vorherigen Ansatz, der auf dem Komponieren sequentieller Prozesse basiert, wurde das Schauspielermodell als von Natur aus gleichzeitiger Modell entwickelt. Im Akteurmodell war Sequentialität ein Sonderfall, der aus der gleichzeitigen Berechnung abgeleitet wurde Schauspielermodelltheorie.

Keine Voraussetzung für die Reihenfolge der Ankunft der Nachricht

Hewitt argumentierte gegen das Hinzufügen der Anforderung, dass Nachrichten in der Reihenfolge eintreffen müssen, in der sie an den Schauspieler gesendet werden. Wenn die Ausgabemachmeldung bestellt wird, kann sie von einem Warteschlangenakteur modelliert werden, der diese Funktionalität liefert. Ein solcher Warteschlangeschauspieler würde die angegebenen Nachrichten anstellen, damit sie abgerufen werden konnten FIFO bestellen. Also wenn ein Schauspieler X eine Nachricht gesendet M1 zu einem Schauspieler Y, und später X Senden Sie eine andere Nachricht M2 zu YEs gibt keine Anforderung, dass M1 kommt an um Y Vor M2.

In dieser Hinsicht spiegelt das Schauspielermodell Spiegel Paketschaltung Systeme, die nicht garantieren, dass Pakete in der gesendeten Bestellung empfangen werden müssen. Wenn Sie nicht die Reihenfolge der Liefergarantie bereitstellen, können Sie Paketwechsel in Pufferpakete umstellen, mehrere Pfade verwenden, um Pakete zu senden, beschädigte Pakete wiederzugeben und andere Optimierungen bereitzustellen.

Beispielsweise dürfen Akteure die Verarbeitung von Nachrichten pipeline machen. Was dies bedeutet, ist, dass im Verlauf der Verarbeitung einer Nachricht M1, ein Schauspieler kann das Verhalten bezeichnen, das verwendet werden soll, um die nächste Nachricht zu verarbeiten, und dann tatsächlich mit der Verarbeitung einer anderen Nachricht beginnen M2 Bevor es die Verarbeitung beendet hat M1. Nur weil ein Akteur die Verarbeitung von Nachrichten pipeline darstellt, bedeutet dies nicht, dass dies dies bedeutet muss Pipeline die Verarbeitung. Ob eine Nachricht pipeliniert ist, ist ein technischer Kompromiss. Wie würde ein externer Beobachter wissen, ob die Verarbeitung einer Nachricht durch einen Schauspieler pipeliert wurde? Die Definition eines Akteurs, der durch die Möglichkeit der Pipelinierung erzeugt wird, gibt keine Unklarheit. Natürlich ist es möglich, die Pipeline -Optimierung in einigen Implementierungen falsch durchzuführen. In diesem Fall kann ein unerwartetes Verhalten auftreten.

Lokalität

Ein weiteres wichtiges Merkmal des Schauspielermodells ist die Lokalität.

Lokalität bedeutet, dass ein Akteur bei der Verarbeitung einer Nachricht Nachrichten nur an Adressen senden kann, die er in der Nachricht empfängt, Adressen, die er bereits hatte, bevor er die Nachricht erhalten hat, und Adressen für Schauspieler, die sie während der Verarbeitung der Nachricht erstellt hat. (Aber sehen Synthese von Adressen von Akteuren.))

Auch Lokalität bedeutet, dass sich an mehreren Orten keine gleichzeitige Änderung vorliegt. Auf diese Weise unterscheidet es sich von einigen anderen Modellen der Parallelität, z.B., das Petrischetz Modell, in dem Token gleichzeitig von mehreren Stellen entfernt und an anderen Stellen platziert werden.

Komponieren von Schauspielersystemen

Die Idee, Schauspielersysteme in größere zu komponieren, ist ein wichtiger Aspekt von Modularität Das wurde in der Dissertation von Gul Agha entwickelt,[6] später von Gul Agha, Ian Mason, Scott Smith und entwickelt Carolyn Talcott.[9]

Verhalten

Eine wichtige Innovation war die Einführung von Verhalten Als mathematische Funktion angegeben, um auszudrücken, was ein Akteur tut, wenn er eine Nachricht verarbeitet, einschließlich Angabe eines neuen Verhaltens, um die nächste Nachricht zu verarbeiten, die eintrifft. Verhaltensweisen lieferten einen Mechanismus, um die gemeinsame Nutzung der Parallelität mathematisch zu modellieren.

Verhaltensweisen befreit das Akteurmodell auch von Implementierungsdetails, z.B., der SmallTalk-72 Token Stream Interpreter. Es ist jedoch wichtig zu verstehen umfangreich Optimierung. Sehen Implementierung des Akteurmodells für Details.

Modellierung anderer Parallelitätssysteme

Andere Parallelitätssysteme (z.B., Prozesskalkül) kann im Schauspielermodell mit a modelliert werden Zweiphasen-Commit-Protokoll.[22]

Rechendarstellungssatz

Da ist ein Rechendarstellungssatz Im Schauspielermodell für Systeme, die in dem Sinne geschlossen sind, erhalten sie keine Mitteilungen von außen. Die durch ein geschlossenes System gekennzeichnete mathematische Bezeichnung ist aus einem anfänglichen Verhalten konstruiert ⊥s und eine Verhaltensfunktion Fortschritte. Diese erhalten zunehmend bessere Annäherungen und konstruieren eine Bezeichnung (Bedeutung) für wie folgt [Hewitt 2008; CLINGER 1981]:

Auf diese Weise, S kann mathematisch in Bezug auf all seine möglichen Verhaltensweisen charakterisiert werden (einschließlich solcher, die unbegrenzten Nichtdeterminismus betreffen). Obwohl ist keine Implementierung von Es kann verwendet werden, um eine Verallgemeinerung der These des Kirchen-Turing-Rosser-Kleene zu beweisen [Kleene 1943]:

Eine Folge des oben genannten Satzes ist, dass ein endlicher Schauspieler nicht deterministisch mit einem reagieren kann unzähliger[klären] Anzahl verschiedener Ausgänge.

Beziehung zur logischen Programmierung

Eine der wichtigsten Motivationen für die Entwicklung des Akteurmodells bestand darin, die Kontrollstrukturprobleme zu verstehen und zu behandeln Planer -Programmiersprache. Sobald das Schauspielermodell anfänglich definiert war, bestand eine wichtige Herausforderung darin, die Kraft des Modells im Vergleich zu verstehen zu verstehen Robert Kowalski"Die These, dass" Berechnung durch Abzug subsumiert werden kann ". Hewitt argumentierte, dass Kowalskis These für die gleichzeitige Berechnung im Schauspielermodell falsch sei (siehe Unbestimmtheit bei gleichzeitiger Berechnung).

Trotzdem wurden Versuche unternommen, sich zu verlängern Logikprogrammierung zur gleichzeitigen Berechnung. Hewitt und Agha [1991] behaupteten jedoch, dass die resultierenden Systeme im folgenden Sinne nicht deduktiv sei Unbestimmtheit bei gleichzeitiger Berechnung). In jüngster Zeit wurde die logische Programmierung auf eine Weise in das Schauspielermodell integriert, die die logische Semantik beibehält.[21]

Migration

Die Migration im Akteurmodell ist die Fähigkeit der Akteure, den Standorten zu ändern. Z.B.In seiner Dissertation modellierte Aki Yonezawa ein Postamt, das Kundenakteure eingeben, die Standorte während des Betriebs und des Ausstiegs ändern. Ein Akteur, der migrieren kann, kann modelliert werden, indem ein Standortakteur vorliegt, der sich ändert, wenn der Akteur migriert. Die Treue dieser Modellierung ist jedoch umstritten und untersucht.

Sicherheit

Die Sicherheit der Akteure kann auf folgende Weise geschützt werden:

Synthese von Adressen von Akteuren

Ein empfindlicher Punkt im Schauspielermodell ist die Fähigkeit, die Adresse eines Akteurs zu synthetisieren. In einigen Fällen kann Sicherheit verwendet werden, um die Synthese von Adressen zu verhindern (siehe Sicherheit). Wenn eine Schauspieleradresse jedoch einfach eine Bit -Zeichenfolge ist, kann sie eindeutig synthetisiert werden, obwohl es schwierig oder sogar nicht realisierbar ist, die Adresse eines Schauspielers zu erraten, wenn die Bit -Zeichenfolgen lang genug sind. SEIFE verwendet a URL für die Adresse eines Endpunkts, an dem ein Schauspieler erreicht werden kann. Seit einem URL ist eine Zeichenzeichenfolge, es kann eindeutig synthetisiert werden, obwohl die Verschlüsselung es praktisch unmöglich erraten kann.

Die Synthese der Adressen der Akteure wird normalerweise mit der Zuordnung modelliert. Die Idee ist, ein Akteursystem zu verwenden, um die Zuordnung an die tatsächlichen Akteuradressen durchzuführen. Auf einem Computer kann beispielsweise die Speicherstruktur des Computers als Schauspielersystem modelliert werden, das die Zuordnung durchführt. Im Falle des SEIFE Adressen, es modelliert die DNS und der Rest der URL Kartierung.

Kontrast zu anderen Modellen der Parallelitätsmodelle

Robin Milner's Erst veröffentlichte Arbeiten zur Parallelität[23] war auch insofern bemerkenswert, als es nicht auf dem Komponieren sequentieller Prozesse basierte. Seine Arbeit unterschied sich vom Schauspielermodell, da es auf einer festen Anzahl von Prozessen fester Topologie basierte, die Zahlen und Zeichenfolgen unter Verwendung der synchronen Kommunikation kommunizieren. Das Original Kommunizieren von sequentiellen Prozessen (CSP) Modell[24] herausgegeben von Tony Hoare unterschied sich vom Akteurmodell, da es auf der parallele Zusammensetzung einer festen Anzahl sequentieller Prozesse basierte, die in einer festen Topologie verbunden sind, und die Kommunikation mithilfe von synchronem Nachrichten-Passing basierend auf Prozessnamen (siehe siehe Akteurmodell und Prozessrechnung Geschichte). Spätere Versionen von CSP aufgegebener Kommunikation basierend auf Prozessnamen zugunsten der anonymen Kommunikation über Kanäle, ein Ansatz, der auch in Milners Arbeiten verwendet wird Berechnungskalkül der Kommunikationssysteme und die π-Kalkulus.

Diese frühen Modelle von Milner und Hoare hatten beide die Eigenschaft des begrenzten Nichtdeterminismus. Moderne, theoretische CSP ([Hoare 1985] und [Roscoe 2005]) liefert explizit unbegrenzten Nichtdeterminismus.

Petri Nets und ihre Erweiterungen (z. B. farbige Petri -Netze) sind wie Schauspieler, die auf asynchronen Nachrichten basieren, die über und unbegrenzten Nichtdeterminismus bestehen, während sie wie frühe CSP sind, da sie feste Topologien von Elementarverarbeitungsschritten (Übergänge) und Nachrichtenrepositories (Plätze (Plätze) definieren (Plätze ).

Beeinflussen

Das Akteurmodell hat sowohl die theoretische Entwicklung als auch die praktische Softwareentwicklung beeinflusst.

Theorie

Das Schauspielermodell hat die Entwicklung der beeinflusst π-Kalkulus und anschließend Prozesskalkül. In seinem Turing -Vortrag schrieb Robin Milner:[25]

Jetzt ist der reine Lambda-Kalkulus mit nur zwei Arten von Dingen gebaut: Begriffe und Variablen. Können wir die gleiche Wirtschaft für einen Prozesskalkül erreichen? Carl Hewitt, mit seinem Schauspielermodell, hat vor langer Zeit auf diese Herausforderung reagiert. Er erklärte, dass ein Wert, ein Bediener für Werte und ein Prozess alle die gleiche sein sollten: ein Schauspieler.

Dieses Ziel hat mich beeindruckt, weil es die Homogenität und Vollständigkeit des Ausdrucks impliziert ... aber es dauerte lange, bis ich sehen konnte, wie ich das Ziel in Bezug auf eine algebraische Berechnung erreichen konnte ...

Im Geiste von Hewitt ist es unser erster Schritt, zu fordern, dass alle Dinge, die durch Begriffe oder auf Namen zugegriffen werden - Werte, Register, Operatoren, Prozesse, Objekte - alles gleich sind; Sie sollten alle Prozesse sein.

Trainieren

Das Schauspielermodell hat einen umfassenden Einfluss auf die kommerzielle Praxis. Zum Beispiel hat Twitter Schauspieler zur Skalierbarkeit verwendet.[26] Außerdem hat Microsoft das Schauspielermodell bei der Entwicklung seiner asynchronen Agentenbibliothek verwendet.[27] Es gibt viele andere Akteurbibliotheken, die im Abschnitt Akteurbibliotheken und Frameworks unten aufgeführt sind.

Probleme mit Problemen

Laut Hewitt [2006] befasst sich das Schauspielermodell mit Fragen der Computer- und Kommunikationsarchitektur. Gleichzeitige Programmiersprachen, und Internetdienste Folgendes ist mit eingeschlossen:

  • Skalierbarkeit: Die Herausforderung, die Parallelität sowohl lokal als auch nicht -ohnewegs zu skalieren.
  • Transparenz: Überbrückung der Kluft zwischen lokaler und nichtlokaler Parallelität. Transparenz ist derzeit ein kontroverses Thema. Einige Forscher[wer?] haben eine strikte Trennung zwischen lokaler Parallelität unter Verwendung von gleichzeitigen Programmiersprachen (z. B.,, Java und C#) von nichtlokaler Parallelität mit SEIFE zum Internetdienste. Strenge Trennung erzeugt einen Mangel an Transparenz, der Probleme verursacht, wenn es wünschenswert/notwendig ist, zwischen lokalem und nichtlokalen Zugriff auf Webdienste zu ändern (siehe Verteiltes Computer).
  • Inkonsistenz: Inkonsistenz ist die Norm, da alle sehr großen Wissenssysteme über Interaktionen des menschlichen Informationssystems inkonsistent sind. Diese Inkonsistenz erstreckt sich auf die Dokumentation und Spezifikationen sehr großer Systeme (z. B. Microsoft Windows -Software usw.), die intern inkonsistent sind.

Viele der im Schauspielermodell eingeführten Ideen finden nun auch Anwendung in Multi-Agent-Systeme Aus den gleichen Gründen [Hewitt 2006b 2007b]. Der Hauptunterschied besteht darin, dass Agentensysteme (in den meisten Definitionen) den Akteuren zusätzliche Einschränkungen auferlegen, wobei in der Regel Verpflichtungen und Ziele eingesetzt werden müssen.

Programmierung mit Schauspielern

Eine Reihe verschiedener Programmiersprachen verwenden das Akteurmodell oder eine Variation davon. Diese Sprachen umfassen:

Frühe Schauspieler -Programmiersprachen

Spätere Schauspieler -Programmiersprachen

Akteurbibliotheken und Frameworks

Akteurbibliotheken oder Frameworks wurden auch implementiert, um das Programmieren im Schauspieler-Stil in Sprachen zu ermöglichen, in denen keine Akteure integriert sind. Einige dieser Frameworks sind:

Name Status Neueste Erscheinung Lizenz Sprachen
Reagiert Aktiv 2021-09-05 Apache 2.0 Java
Acteur Aktiv 2020-04-16[47] Apache-2.0 / MIT Rost
Bastion Aktiv 2020-08-12[48] Apache-2.0 / Mit Rost
Actix Aktiv 2020-09-11[49] MIT Rost
Aojet Aktiv 2016-10-17 MIT Schnell
Schauspieler Aktiv 2017-03-09 MIT Java
Schauspieler4j Aktiv 2020-01-31 Apache 2.0 Java
ACTR Aktiv 2019-04-09[50] Apache 2.0 Java
Vert.x Aktiv 2018-02-13 Apache 2.0 Java, Groovy, JavaScript, Ruby, Scala, Kotlin, Ceylon
Actorfx Inaktiv 2013-11-13 Apache 2.0 .NETZ
Akka (Toolkit) Aktiv 2019-05-21[51] Apache 2.0 Java und Scala
Akka.net Aktiv 2020-08-20[52] Apache 2.0 .NETZ
Dotnetaktoren Aktiv 2021-06-14 MIT .NET, C#, Azure Service Bus
Remact.net Inaktiv 2016-06-26 MIT .NET, JavaScript
Ateji px Inaktiv ? ? Java
CZMQ Aktiv 2016-11-10 MPL-2 C
F# MailboxProcessor Aktiv Gleich wie F# (integrierte Kernbibliothek) Apache -Lizenz F#
Korus Aktiv 2010-02-04 GPL 3 Java
Kilim[53] Aktiv 2018-11-09[54] MIT Java
ActorFoundry (basierend auf Kilim) Inaktiv 2008-12-28 ? Java
Actorkit Aktiv 2011-09-13[55] BSD Ziel c
Cloud Haskell Aktiv 2015-06-17[56] BSD Haskell
Cloudi Aktiv 2021-05-27[57] MIT ATS, C/C ++, Elixir/Erlang/Lfe, Go, Haskell, Java, JavaScript, Ocaml, Perl, Php, Python, Ruby
Unordnung Aktiv 2017-05-12[58] LGPL 2.1 C, C ++ (Cluttermm), Python (Pyclutter), Perl (Perl-Clutter)
Nakt Inaktiv 2012-02-28 LGPL 3.0 .NETZ
Nakt Aktiv 2018-06-06[59] Apache 2.0 JavaScript/Reasonml
Retlang Inaktiv 2011-05-18[60] Neues BSD .NETZ
Jaktor Inaktiv 2013-01-22 LGPL Java
Jetlang Aktiv 2013-05-30[61] Neues BSD Java
Haskell-Schauspieler Aktiv? 2008 Neues BSD Haskell
GPARS Aktiv 2014-05-09[62] Apache 2.0 Groovig
Oosmos Aktiv 2019-05-09[63] GPL 2.0 und kommerziell (Doppellizenzierung) C. C ++ freundlich
Panini Aktiv 2014-05-22 MPL 1.1 Programmiersprache für sich selbst
VERHANDELN Aktiv? 2007-22-07 GPL 2.1 Python
Penetisch Aktiv 2007-06-29 LGPL 3.0 Java
Picos Aktiv 2020-02-04 MIT Krl
Postsharp Aktiv 2014-09-24 Kommerziell / Freemium .NETZ
Pulsar Aktiv 2016-07-09[64] Neues BSD Python
Pulsar Aktiv 2016-02-18[65] LGPL/Finsternis Clojure
Pykka Aktiv 2019-05-07[66] Apache 2.0 Python
Termitenschema Aktiv? 2009-05-21 LGPL Schema (GAMBIT -Implementierung)
Theron Inaktiv[67] 2014-01-18[68] MIT[69] C ++
Thespianer Aktiv 2020-03-10 MIT Python
Quasar Aktiv 2018-11-02[70] LGPL/Finsternis Java
Libaktor Aktiv? 2009 GPL 2.0 C
Schauspieler-CPP Aktiv 2012-03-10[71] GPL 2.0 C ++
S4 Inaktiv 2012-07-31[72] Apache 2.0 Java
C ++ Actor Framework (CAF) Aktiv 2020-02-08[73] Steigerung der Softwarelizenz 1.0 und BSD 3-Klausel C ++ 11
Zelluloid Aktiv 2018-12-20[74] MIT Rubin
LABVIEW Actor Framework Aktiv 2012-03-01[75] Nationale Instrumente SLA Labor
LabView Messenger Library Aktiv 2021-05-24 BSD Labor
Orbit Aktiv 2019-05-28[76] Neues BSD Java
QP-Frameworks für in Echtzeit eingebettete Systeme Aktiv 2019-05-25[77] GPL 2.0 und kommerziell (Doppellizenzierung) C und C ++
libprocess Aktiv 2013-06-19 Apache 2.0 C ++
Schluchger Aktiv 2021-12-28[78] Neues BSD C ++ 17
Rotor Aktiv 2022-04-23[79] MIT -Lizenz C ++ 17
Orleans Aktiv 2021-09-03[80] MIT -Lizenz C#/. Netz
Skynet Aktiv 2020-12-10 MIT -Lizenz C/Lua
Reaktoren.io Aktiv 2016-06-14 BSD -Lizenz Java/Scala
libagents Aktiv 2020-03-08 Kostenlose Softwarelizenz C ++ 11
Proto.Aktor Aktiv 2021-01-05 Kostenlose Softwarelizenz Go, C#, Python, JavaScript, Java, Kotlin
Funktionaljava Aktiv 2018-08-18[81] BSD 3-Klausel Java
Riker Aktiv 2019-01-04 MIT -Lizenz Rost
Komödie Aktiv 2019-03-09 EPL 1.0 JavaScript
Vlingo Xoom Schauspieler Aktiv 2017-12-20 Mozilla Public Lizenz 2.0 Java, Kotlin, JVM -Sprachen, C# .net
Wasmcloud Aktiv 2021-03-23 Apache 2.0 WebAssembly (Rost, Tinygo, Zick, Assemblyskript)
Strahl Aktiv 2020-08-27 Apache 2.0 Python
Zelle Aktiv 2012-08-02 Neue BSD -Lizenz Python

Siehe auch

Verweise

  1. ^ Hewitt, Carl; Bischof, Peter; Steiger, Richard (1973). "Ein universeller modularer Schauspieler -Formalismus für künstliche Intelligenz". Ijcai. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  2. ^ a b c d William Cler (Juni 1981). "Grundlagen der Schauspielersemantik". Mathematik -Dissertation. MIT. HDL:1721.1/6935. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  3. ^ a b Irene Greif (August 1975). "Semantik der Kommunikation paralleler Prozesse". EECS -Dissertation. MIT. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  4. ^ a b Henry Baker; Carl Hewitt (August 1977). "Gesetze zur Kommunikation paralleler Prozesse". Ifip. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  5. ^ "Gesetze zur Kommunikation paralleler Prozesse" (PDF). 10. Mai 1977.
  6. ^ a b c Gul Agha (1986). "Akteure: Ein Modell der gleichzeitigen Berechnung in verteilten Systemen". Doktorarbeit. MIT Press. HDL:1721.1/6952. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  7. ^ "Heim". Osl.cs.uiuc.edu. Archiviert von das Original Am 2013-02-22. Abgerufen 2012-12-02.
  8. ^ Carl Hewitt. Betrachten von Steuerungsstrukturen als Muster des Übergebens von Nachrichten Zeitschrift für künstliche Intelligenz. Juni 1977.
  9. ^ a b Gul Agha; Ian Mason; Scott Smith; Carolyn Talcott (Januar 1993). "Eine Grundlage für die Berechnung des Schauspielers". Journal of Functional Programming.
  10. ^ Carl Hewitt (2006-04-27). "Was ist Engagement? Körperlich, organisatorisch und sozial" (PDF). Münze@AAMAS. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  11. ^ Mauro Gaspari; Gianluigi Zavattaro (Mai 1997). "Eine Algebra von Schauspielern" (PDF). Formale Methoden für offene objektbasierte verteilte Systeme. Technischer Bericht UBLCS-97-4. Universität Bologna. S. 3–18. doi:10.1007/978-0-387-35562-7_2. ISBN 978-1-4757-5266-3.
  12. ^ M. Gaspari; G. Zavattaro (1999). "Eine Algebra von Schauspielern". Formale Methoden für offene, objektbasierte Systeme. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  13. ^ Gul Agha; Prasanna Thati (2004). "Eine algebraische Theorie der Akteure und ihrer Anwendung auf eine einfache objektbasierte Sprache" (PDF). Von OO bis FM (Dahl Festschrift) LNCS 2635. archiviert von das Original (PDF) Am 2004-04-20. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  14. ^ John Darlington; Y. K. Guo (1994). "Formalende Akteure in der linearen Logik". Internationale Konferenz über objektorientierte Informationssysteme. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  15. ^ "Was ist das Schauspielermodell und wann sollten Sie es verwenden?". Matt Ferderer. Abgerufen 2021-08-25.
  16. ^ Cheung, Leo (2017-07-25). "Warum Akka und das Schauspielermodell für IoT -Anwendungen glänzen?". InfoWorld. Abgerufen 2021-08-25.
  17. ^ Hansen pro Brinch (2002). Die Ursprünge der gleichzeitigen Programmierung: von Semaphoren zu Remote -Verfahrensaufrufen. Springer. ISBN 978-0-387-95401-1.
  18. ^ Hansen pro Brinch (1996). "Monitore und gleichzeitiger Pascal: eine persönliche Geschichte". Kommunikation der ACM: 121–172.
  19. ^ Hoare, Tony (Oktober 1974). "Monitore: Ein Betriebssystemstrukturierungskonzept". Kommunikation der ACM. 17 (10): 549–557. doi:10.1145/355620.361161. S2CID 1005769.
  20. ^ Hansen pro Brinch (Juli 1973). Betriebssystemprinzipien. Prentice-Hall.
  21. ^ a b Hewitt, Carl (2012). "Was ist Berechnung? Akteurmodell gegen Turings Modell". In Zenil, Hector (Hrsg.). Ein berechnetes Universum: Berechnung und Erforschung der Natur als Berechnung. Gewidmet der Erinnerung an Alan M. Turing am 100. Jahrestag seiner Geburt. World Scientific Publishing Company.
  22. ^ Frederick Knabe. Ein verteiltes Protokoll für kanalbasierte Kommunikation mit Choice Parle 1992.
  23. ^ Robin Milner. Prozesse: Ein mathematisches Modell von Computing -Agenten in Logic Colloquium 1973.
  24. ^ WAGEN. Hoare. Kommunizieren von sequentiellen Prozessen CACM. August 1978.
  25. ^ Milner, Robin (1993). "Elemente der Interaktion". Kommunikation der ACM. 36: 78–89. doi:10.1145/151233.151240.
  26. ^ "Wie Twitter skaliert" Moks Blog ". Waimingmok.wordpress.com. 2009-06-27. Abgerufen 2012-12-02.
  27. ^ "Actor-basierte Programmierung mit der asynchronen Agentenbibliothek"MSDN September 2010.
  28. ^ Henry Lieberman (Juni 1981). "Eine Vorschau von Akt 1". MIT AI Memo 625. HDL:1721.1/6350. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  29. ^ Henry Lieberman (Juni 1981). "Über viele Dinge nachdenken, ohne verwirrt zu werden: Parallelität in Akt 1". MIT AI Memo 626. HDL:1721.1/6351. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  30. ^ Jean-Pierre Briot. ActTalk: Ein Rahmen für objektorientierte gleichzeitige Programmierdesign und Erfahrung im 2. Frankreich-Japan-Workshop. 1999.
  31. ^ Ken Kahn. Eine Computertheorie der Animation MIT EECS -Dissertation. August 1979.
  32. ^ William Athas und Nanette Boden Cantor: Ein Schauspieler -Programmiersystem für wissenschaftliches Computing In Proceedings des NSF-Workshops über objektbasierte gleichzeitige Programmierung. 1988. Sonderausgabe von Sigplan Notices.
  33. ^ Darrell Woelk. Entwicklung von Infosleuth -Agenten mit Rosette: Eine auf Schauspieler basierende Sprache Verfahren des CIKM '95 Workshops zu intelligenten Informationsagenten. 1995.
  34. ^ Dedecker J., Van Cutsem T., Mostinckx S., D'Hondt T., de Meuter W. Ambient-orientierte Programmierung in Ambienttalk. In "Proceedings der 20. Europäischen Konferenz über objektorientierte Programmierung (ECOOP), Dave Thomas (Hrsg.), Lecture Notes in Computer Science Vol. 4067, S. 230-254, Springer-Verlag.", 2006
  35. ^ Darryl K. Taft (2009-04-17). "Microsoft kochen neue parallele Programmiersprache". Eweek.com. Abgerufen 2012-12-02.
  36. ^ "Humus". Dalnefre.com. Abgerufen 2012-12-02.
  37. ^ Brandauer, Stephan; et al. (2015). "Parallele Objekte für Multicores: Ein Blick auf die parallele Sprachzugang". Formale Methoden für die Multicore -Programmierung. Springer International Publishing: 1–56.
  38. ^ "Die Ponysprache".
  39. ^ Cleebsch, Sylvan; Drossopoulou, Sophia; Segen, Sebastian; McNeil, Andy (2015). "Leugnen Sie die Fähigkeiten für sichere, schnelle Schauspieler". Verfahren des 5. Internationalen Workshops über Programmierung basierend auf Akteuren, Agenten und dezentralen Kontrolle - Agere! 2015. S. 1–12. doi:10.1145/2824815.2824816. ISBN 9781450339018. S2CID 415745. von Sylvan Cleebsch, Sophia Drosopoulou, Sebastian Segen, Andy McNeil
  40. ^ "Die P -Sprache". GitHub. 2019-03-08.
  41. ^ "Die P# Sprache". GitHub. 2019-03-12.
  42. ^ "Klassenraktor". Ruby-Lang.org. Abgerufen 2022-03-02.
  43. ^ Carlos Varela und Gul Agha (2001). "Programmieren dynamisch rekonfigurierbare offene Systeme mit Salsa". ACM Sigplan nennt. Oopsla'2001 faszinierende Technologie -Track -Verfahren. 36.
  44. ^ Philipp Haller und Martin Odensky (September 2006). "Ereignisbasierte Programmierung ohne Kontrolle der Kontrolle" (PDF). Proc. JMLC 2006. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  45. ^ Philipp Haller und Martin Odensky (Januar 2007). "Schauspieler, die Themen und Ereignisse vereinen" (PDF). Technischer Bericht Lampe 2007. archiviert aus das Original (PDF) Am 2011-06-07. Abgerufen 2007-12-10. {{}}: Journal zitieren erfordert |journal= (Hilfe)
  46. ^ "Swift Language Guide - Parallelität". Abgerufen 11. März 2022.
  47. ^ "Acteur - 0.9.1 · David Bonet · crate.io". crates.io. Abgerufen 2020-04-16.
  48. ^ Bulut, Mahmut (2019-12-15). "Bastion auf Kisten.io". Crates.io. Abgerufen 2019-12-15.
  49. ^ "Actix - 0.10.0 · Rob Ede · crates.io". crates.io. Abgerufen 2021-02-28.
  50. ^ "Releases · Zakgof/ACTR · GitHub". Github.com. Abgerufen 2019-04-16.
  51. ^ "Akka 2.5.23 veröffentlicht · akka". Akka. 2019-05-21. Abgerufen 2019-06-03.
  52. ^ Akka.net v1.4.10 Stabile Version Github - Akkadotnet/Akka.net: Port der Akka -Schauspieler für .NET., Akka.net, 2020-10-01, abgerufen 2020-10-01
  53. ^ Srinivasan, Sriram; Alan Mycroft (2008). "Kilim: Isolation-typische Schauspieler für Java" (PDF). Europäische Konferenz über objektorientierte Programmier ecoop 2008. Zypern. Abgerufen 2016-02-25.
  54. ^ "Releases · Kilim/Kilim · Github". Github.com. Abgerufen 2019-06-03.
  55. ^ "Feststellung Geschichte · Stevedekorte/Actorkit · Github". Github.com. Abgerufen 2016-02-25.
  56. ^ "Festungsgeschichte · Haskell-verteilt/verteilter Prozess · Github". Github.com. Abgerufen 2012-12-02.
  57. ^ "Releases · Cloudi/Cloudi · Github". Github.com. Abgerufen 2021-06-21.
  58. ^ "Tags · Gnom/Unordnung · GitLab". gitlab.gnome.org. Abgerufen 2019-06-03.
  59. ^ "Releases · NCTHBRT/NACT · GitHub". GitHub. Abgerufen 2019-06-03.
  60. ^ "Änderungen - Retlang - Nachrichtenbasierte Parallelität in .NET - Google Project Hosting". Abgerufen 2016-02-25.
  61. ^ "Jetlang -0.2.9 --Bin.zip - Jetlang - Jetlang -0.2.9 --Bin.zip - Nachrichtenbasierte Parallelität für Java - Google Project Hosting". 2012-02-14. Abgerufen 2016-02-25.
  62. ^ "GPARS veröffentlicht". Github. Abgerufen 2016-02-25.
  63. ^ "Releases · Oosmos/Oosmos · Github". Github. Abgerufen 2019-06-03.
  64. ^ "Pulsar Design und Schauspieler". Archiviert von das Original Am 2015-07-04.
  65. ^ "Pulsar -Dokumentation". Archiviert von das Original Am 2013-07-26.
  66. ^ "Änderungen - Pykka 2.0.0 Dokumentation". pykka.org. Abgerufen 2019-06-03.
  67. ^ "Theron - Ashton Mason". Abgerufen 2018-08-29.
  68. ^ "Theron - Version 6.00.02 veröffentlicht". Theron-library.com. Archiviert von das Original Am 2016-03-16. Abgerufen 2016-02-25.
  69. ^ "Theron". Theron-library.com. Archiviert von das Original am 2016-03-04. Abgerufen 2016-02-25.
  70. ^ "Releases · Punvlerse/Quasar · Github". GitHub. Abgerufen 2019-06-03.
  71. ^ "Änderungen - Actor -CPP - Eine Implementierung des Akteurmodells für C ++ - Google Project Hosting". Abgerufen 2012-12-02.
  72. ^ "Feststellung Geschichte · S4/S4 · Apache". apache.org. Archiviert von das Original am 2016-03-06. Abgerufen 2016-01-16.
  73. ^ "Releases · Schauspieler-Framework/Actor-Framework · GitHub". Github.com. Abgerufen 2020-03-07.
  74. ^ "Celluloid | Rubygems.org | Ihr Community -Edelstein -Host". Rubygemems.org. Abgerufen 2019-06-03.
  75. ^ "Community: Actor Framework, LV 2011 Revision (Version 3.0.7)". Decibel.ni.com. 2011-09-23. Abgerufen 2016-02-25.
  76. ^ "Releases · Orbit/Orbit · Github". Github. Abgerufen 2019-06-03.
  77. ^ "QP Echtzeit eingebettete Frameworks & Tools - Durchsuchen Sie Dateien bei". SourceForge.net. Abgerufen 2019-06-03.
  78. ^ "Releases · Steifstream/Sobjektizer · Github". Github. Abgerufen 2022-05-11.
  79. ^ "Releases · Basilisiscos/CPP-Rotor · Github". Github. Abgerufen 2022-05-17.
  80. ^ "Releases · Dotnet/Orleans · Github". Github. Abgerufen 2021-09-03.
  81. ^ "Funktionaljava veröffentlicht". Github. Abgerufen 2018-08-23.

Weitere Lektüre

Externe Links