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:
- Betriebssemantik[3][9]
- Gesetze für Schauspielersysteme[4]
- Denotationssemantik[2][10]
- Übergangssemantik[6]
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):
- Mehrere verschiedene Schauspieleralgebren[11][12][13]
- Lineare Logik[14]
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 Y
Es 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:
- Hardwire in denen Schauspieler physisch verbunden sind
- Computerhardware wie in Burroughs B5000, Lisp -Maschine, usw.
- virtuelle Maschinen wie in Java virtuelle Maschine, Gemeinsame Sprachlaufzeit, usw.
- Betriebssysteme wie in Fähigkeiten basierende Systeme
- Unterzeichnung und/oder Verschlüsselung von Schauspielern und ihren Adressen
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
- ^ Hewitt, Carl; Bischof, Peter; Steiger, Richard (1973). "Ein universeller modularer Schauspieler -Formalismus für künstliche Intelligenz". Ijcai.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ a b c d William Cler (Juni 1981). "Grundlagen der Schauspielersemantik". Mathematik -Dissertation. MIT. HDL:1721.1/6935.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ a b Irene Greif (August 1975). "Semantik der Kommunikation paralleler Prozesse". EECS -Dissertation. MIT.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ a b Henry Baker; Carl Hewitt (August 1977). "Gesetze zur Kommunikation paralleler Prozesse". Ifip.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "Gesetze zur Kommunikation paralleler Prozesse" (PDF). 10. Mai 1977.
- ^ 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) - ^ "Heim". Osl.cs.uiuc.edu. Archiviert von das Original Am 2013-02-22. Abgerufen 2012-12-02.
- ^ Carl Hewitt. Betrachten von Steuerungsstrukturen als Muster des Übergebens von Nachrichten Zeitschrift für künstliche Intelligenz. Juni 1977.
- ^ a b Gul Agha; Ian Mason; Scott Smith; Carolyn Talcott (Januar 1993). "Eine Grundlage für die Berechnung des Schauspielers". Journal of Functional Programming.
- ^ Carl Hewitt (2006-04-27). "Was ist Engagement? Körperlich, organisatorisch und sozial" (PDF). Münze@AAMAS.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ 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.
- ^ M. Gaspari; G. Zavattaro (1999). "Eine Algebra von Schauspielern". Formale Methoden für offene, objektbasierte Systeme.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ 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) - ^ John Darlington; Y. K. Guo (1994). "Formalende Akteure in der linearen Logik". Internationale Konferenz über objektorientierte Informationssysteme.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "Was ist das Schauspielermodell und wann sollten Sie es verwenden?". Matt Ferderer. Abgerufen 2021-08-25.
- ^ Cheung, Leo (2017-07-25). "Warum Akka und das Schauspielermodell für IoT -Anwendungen glänzen?". InfoWorld. Abgerufen 2021-08-25.
- ^ Hansen pro Brinch (2002). Die Ursprünge der gleichzeitigen Programmierung: von Semaphoren zu Remote -Verfahrensaufrufen. Springer. ISBN 978-0-387-95401-1.
- ^ Hansen pro Brinch (1996). "Monitore und gleichzeitiger Pascal: eine persönliche Geschichte". Kommunikation der ACM: 121–172.
- ^ Hoare, Tony (Oktober 1974). "Monitore: Ein Betriebssystemstrukturierungskonzept". Kommunikation der ACM. 17 (10): 549–557. doi:10.1145/355620.361161. S2CID 1005769.
- ^ Hansen pro Brinch (Juli 1973). Betriebssystemprinzipien. Prentice-Hall.
- ^ 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.
- ^ Frederick Knabe. Ein verteiltes Protokoll für kanalbasierte Kommunikation mit Choice Parle 1992.
- ^ Robin Milner. Prozesse: Ein mathematisches Modell von Computing -Agenten in Logic Colloquium 1973.
- ^ WAGEN. Hoare. Kommunizieren von sequentiellen Prozessen CACM. August 1978.
- ^ Milner, Robin (1993). "Elemente der Interaktion". Kommunikation der ACM. 36: 78–89. doi:10.1145/151233.151240.
- ^ "Wie Twitter skaliert" Moks Blog ". Waimingmok.wordpress.com. 2009-06-27. Abgerufen 2012-12-02.
- ^ "Actor-basierte Programmierung mit der asynchronen Agentenbibliothek"MSDN September 2010.
- ^ Henry Lieberman (Juni 1981). "Eine Vorschau von Akt 1". MIT AI Memo 625. HDL:1721.1/6350.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ 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) - ^ Jean-Pierre Briot. ActTalk: Ein Rahmen für objektorientierte gleichzeitige Programmierdesign und Erfahrung im 2. Frankreich-Japan-Workshop. 1999.
- ^ Ken Kahn. Eine Computertheorie der Animation MIT EECS -Dissertation. August 1979.
- ^ 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.
- ^ Darrell Woelk. Entwicklung von Infosleuth -Agenten mit Rosette: Eine auf Schauspieler basierende Sprache Verfahren des CIKM '95 Workshops zu intelligenten Informationsagenten. 1995.
- ^ 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
- ^ Darryl K. Taft (2009-04-17). "Microsoft kochen neue parallele Programmiersprache". Eweek.com. Abgerufen 2012-12-02.
- ^ "Humus". Dalnefre.com. Abgerufen 2012-12-02.
- ^ 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.
- ^ "Die Ponysprache".
- ^ 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
- ^ "Die P -Sprache". GitHub. 2019-03-08.
- ^ "Die P# Sprache". GitHub. 2019-03-12.
- ^ "Klassenraktor". Ruby-Lang.org. Abgerufen 2022-03-02.
- ^ Carlos Varela und Gul Agha (2001). "Programmieren dynamisch rekonfigurierbare offene Systeme mit Salsa". ACM Sigplan nennt. Oopsla'2001 faszinierende Technologie -Track -Verfahren. 36.
- ^ Philipp Haller und Martin Odensky (September 2006). "Ereignisbasierte Programmierung ohne Kontrolle der Kontrolle" (PDF). Proc. JMLC 2006.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ 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) - ^ "Swift Language Guide - Parallelität". Abgerufen 11. März 2022.
- ^ "Acteur - 0.9.1 · David Bonet · crate.io". crates.io. Abgerufen 2020-04-16.
- ^ Bulut, Mahmut (2019-12-15). "Bastion auf Kisten.io". Crates.io. Abgerufen 2019-12-15.
- ^ "Actix - 0.10.0 · Rob Ede · crates.io". crates.io. Abgerufen 2021-02-28.
- ^ "Releases · Zakgof/ACTR · GitHub". Github.com. Abgerufen 2019-04-16.
- ^ "Akka 2.5.23 veröffentlicht · akka". Akka. 2019-05-21. Abgerufen 2019-06-03.
- ^ 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
- ^ 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.
- ^ "Releases · Kilim/Kilim · Github". Github.com. Abgerufen 2019-06-03.
- ^ "Feststellung Geschichte · Stevedekorte/Actorkit · Github". Github.com. Abgerufen 2016-02-25.
- ^ "Festungsgeschichte · Haskell-verteilt/verteilter Prozess · Github". Github.com. Abgerufen 2012-12-02.
- ^ "Releases · Cloudi/Cloudi · Github". Github.com. Abgerufen 2021-06-21.
- ^ "Tags · Gnom/Unordnung · GitLab". gitlab.gnome.org. Abgerufen 2019-06-03.
- ^ "Releases · NCTHBRT/NACT · GitHub". GitHub. Abgerufen 2019-06-03.
- ^ "Änderungen - Retlang - Nachrichtenbasierte Parallelität in .NET - Google Project Hosting". Abgerufen 2016-02-25.
- ^ "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.
- ^ "GPARS veröffentlicht". Github. Abgerufen 2016-02-25.
- ^ "Releases · Oosmos/Oosmos · Github". Github. Abgerufen 2019-06-03.
- ^ "Pulsar Design und Schauspieler". Archiviert von das Original Am 2015-07-04.
- ^ "Pulsar -Dokumentation". Archiviert von das Original Am 2013-07-26.
- ^ "Änderungen - Pykka 2.0.0 Dokumentation". pykka.org. Abgerufen 2019-06-03.
- ^ "Theron - Ashton Mason". Abgerufen 2018-08-29.
- ^ "Theron - Version 6.00.02 veröffentlicht". Theron-library.com. Archiviert von das Original Am 2016-03-16. Abgerufen 2016-02-25.
- ^ "Theron". Theron-library.com. Archiviert von das Original am 2016-03-04. Abgerufen 2016-02-25.
- ^ "Releases · Punvlerse/Quasar · Github". GitHub. Abgerufen 2019-06-03.
- ^ "Änderungen - Actor -CPP - Eine Implementierung des Akteurmodells für C ++ - Google Project Hosting". Abgerufen 2012-12-02.
- ^ "Feststellung Geschichte · S4/S4 · Apache". apache.org. Archiviert von das Original am 2016-03-06. Abgerufen 2016-01-16.
- ^ "Releases · Schauspieler-Framework/Actor-Framework · GitHub". Github.com. Abgerufen 2020-03-07.
- ^ "Celluloid | Rubygems.org | Ihr Community -Edelstein -Host". Rubygemems.org. Abgerufen 2019-06-03.
- ^ "Community: Actor Framework, LV 2011 Revision (Version 3.0.7)". Decibel.ni.com. 2011-09-23. Abgerufen 2016-02-25.
- ^ "Releases · Orbit/Orbit · Github". Github. Abgerufen 2019-06-03.
- ^ "QP Echtzeit eingebettete Frameworks & Tools - Durchsuchen Sie Dateien bei". SourceForge.net. Abgerufen 2019-06-03.
- ^ "Releases · Steifstream/Sobjektizer · Github". Github. Abgerufen 2022-05-11.
- ^ "Releases · Basilisiscos/CPP-Rotor · Github". Github. Abgerufen 2022-05-17.
- ^ "Releases · Dotnet/Orleans · Github". Github. Abgerufen 2021-09-03.
- ^ "Funktionaljava veröffentlicht". Github. Abgerufen 2018-08-23.
Weitere Lektüre
- Gul Agha. Akteure: Ein Modell der gleichzeitigen Berechnung in verteilten Systemen Archiviert 2020-11-12 am Wayback -Maschine. MIT Press 1985.
- Paul Baran. Auf verteilte Kommunikationsnetzwerke IEEE -Transaktionen zu Kommunikationssystemen. März 1964.
- William A. Woods. Übergangsnetzwerkgrammatiken für die natürliche Sprachanalyse CACM. 1970.
- Carl Hewitt. Verfahrensbettung von Wissen in den Planer Ijcai 1971.
- G.M. Birtwistle, Ole-Johan Dahl, B. myhrhaug und Kristen Nygaard. Simula beginnen Auerbach Publishers Inc, 1973.
- Carl Hewitt, et al. Akteurinduktion und Meta-Bewertung[Dead Link] Konferenzaufzeichnung des ACM -Symposiums über Prinzipien von Programmiersprachen, Januar 1974.
- Carl Hewitt, ET https://link.springer.com/chapter/10.1007/3-540-06859-7_147Al.[Permanent Dead Link] Verhaltensemantik der nicht rezisiven Kontrollstruktur Verfahren der Colloque Sur La Programmation, April 1974.
- Irene Greif und Carl Hewitt. Schauspielersemantik von Planer-73 Konferenzaufzeichnung des ACM -Symposiums über Prinzipien von Programmiersprachen. Januar 1975.
- Carl Hewitt. Wie man das benutzt, was Sie wissen Ijcai. September 1975.
- Alan Kay und Adele Goldberg. SmallTalk-72 Bedienungsanleitung[Permanent Dead Link] Xerox PARC Memo SSL-76-6. Mai 1976.
- Edsger Dijkstra. Eine Disziplin der Programmierung Prentice Hall. 1976.
- Carl Hewitt und Henry Baker Akteure und kontinuierliche Funktionale Verfahren der IFIP -Arbeitskonferenz zur formellen Beschreibung von Programmierkonzepten. 1. bis 5. August 1977.
- Carl Hewitt und Russ Atkinson. Synchronisation in Akteursystemen Verfahren des 4. ACM Sigact-Sigplan-Symposiums über Prinzipien von Programmiersprachen. 1977
- Carl Hewitt und Russ Atkinson. Spezifikation und Beweistechniken für Serialisierer IEEE Journal über Software Engineering. Januar 1979.
- Ken Kahn. Eine Computertheorie der Animation MIT EECS -Dissertation. August 1979.
- Carl Hewitt, Beppe Attardi und Henry Lieberman. Delegation in der Nachrichtentwicklung Proceedings der First International Conference on Distributed Systems Huntsville, Al. Oktober 1979.
- Nissim Francez, WAGEN. Hoare, Daniel Lehmann und Willem-Paul de Roever. Semantik des Nichtminismus, Parallelität und Kommunikation Journal of Computer and System Sciences. Dezember 1979.
- George Milne und Robin Milner. Gleichzeitige Prozesse und ihre Syntax Jacm. April 1979.
- Daniel Theriault. Eine Grundierung für die ACT-1-Sprache MIT AI Memo 672. April 1982.
- Daniel Theriault. Probleme bei der Gestaltung und Implementierung von Gesetz 2 Archiviert 2019-04-08 bei der Wayback -Maschine MIT AI Technischer Bericht 728. Juni 1983.
- Henry Lieberman. Ein objektorientierter Simulator für das Bienenhaus Konferenz der American Association for Artificial Intelligence, Washington, D. C., August 1983
- Carl Hewitt und Peter de Jong. Analyse der Rollen von Beschreibungen und Aktionen in offenen Systemen Verfahren der Nationalen Konferenz über künstliche Intelligenz. August 1983.
- Carl Hewitt und Henry Lieberman. Entwurfsprobleme in paralleler Architektur für künstliche Intelligenz MIT AI Memo 750. Nov. 1983.
- WAGEN. Hoare. Kommunizieren von sequentiellen Prozessen Prentice Hall. 1985.
- Carl Hewitt. Die Herausforderung von offenen Systemen Byte. April 1985. Nachdruck in Die Grundlage der künstlichen Intelligenz: Ein Quellbuch Cambridge University Press. 1990.
- Carl Manning. Reisender: das Schauspieler Observatorium Ecoop 1987. erscheint auch in Vorlesungsnotizen in Informatik, vol. 276.
- William Athas und Charles Seitz Multikomputer: Gleichzeitige Computer-Computer-Computer IEEE Computer August 1988.
- 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.
- Jean-Pierre Briot. Von Objekten zu Akteuren: Untersuchung einer begrenzten Symbiose in SmallTalk-80 Rapport de Recherreche 88–58, Rxf-Litp, Paris, Frankreich, September 1988
- William Dally und Wills, D. Universelle Mechanismen für die Parallelität Parle 1989.
- W. Horwat, A. Chien und W. Dally. Erfahrung mit CST: Programmierung und Implementierung[Dead Link] Pldi. 1989.
- Carl Hewitt. Auf dem Weg offener Informationssysteme Semantik Proceedings of 10. International Workshop über verteilte künstliche Intelligenz. 23. bis 27. Oktober 1990. Bandera, Texas.
- Akinori Yonezawa, hrsg. ABCL: Ein objektorientiertes gleichzeitiges System MIT Press. 1990.
- K. Kahn und Vijay A. Saraswat, "Akteure als Sonderfall der Programmierung der gleichzeitigen Einschränkung (Logik)", in Sigplan Mitteilungen, Oktober 1990. Beschreibt Janus.
- Carl Hewitt. Offene Informationssystemsemantik Zeitschrift für künstliche Intelligenz. Januar 1991.
- Carl Hewitt und Jeff Inman. Dai zwischen und dazwischen: von "intelligenten Agenten" bis zur offenen Systeme Science IEEE -Transaktionen zu Systemen, Mann und Kybernetik. Nov./dec. 1991.
- Carl Hewitt und Gul Agha. Guarded Horn -Klausel Sprachen: Sind sie deduktiv und logisch? Internationale Konferenz über Computersysteme der fünften Generation, Ohmsha 1988. Tokio. Auch in Künstliche Intelligenz am MIT, Vol. 2. MIT Press 1991.
- William Dally, et al. Der meldungsgesteuerte Prozessor: ein Multicomputer-Verarbeitungsknoten mit effizienten Mechanismen IEEE MICRO. April 1992.
- S. Miriyala, G. Agha und Y.sami. Visualisierung von Akteurprogrammen mithilfe von Prädikatübergangsnetzen Journal of Visual Programming. 1992.
- Carl Hewitt und Carl Manning. Verhandlungsarchitektur für groß angelegte Krisenmanagement AAAI-94-Workshop zu Modellen des Konfliktmanagements bei der kooperativen Problemlösung. Seattle, WA. 4. August 1994.
- Carl Hewitt und Carl Manning. Synthetische Infrastrukturen für Systeme mit mehreren Behörden Proceedings of ICMAS '96. Kyoto, Japan. 8. bis 13. Dezember 1996.
- S. Frolund. Koordination verteilter Objekte: Ein auf Akteure basierender Ansatz für die Synchronisation MIT Press. November 1996.
- W. Kim. Thal: Ein Akteursystem für effizientes und skalierbares gleichzeitiges Computing Doktorarbeit. Universität von Illinois bei Urbana Champaign. 1997.
- Jean-Pierre Briot. ActTalk: Ein Rahmen für objektorientierte gleichzeitige Programmierdesign und Erfahrung 2. Frankreich-Japan Workshop. 1999.
- N. Jamali, P. Thati und G. Agha. Eine auf Akteur basierende Architektur zum Anpassen und Steuerungsagenten -Ensembles IEEE Intelligente Systeme. 14 (2). 1999.
- Don Box, David Ehnebuske, Gopal Kakivaya, Andrew Layman, Noah Mendelsohn, Henrik Nielsen, Satish Thatte, Dave Winer. Einfaches Objektzugriffsprotokoll (SOAP) 1.1 W3c Notiz. Mai 2000.
- M. Astley, D. Sturman und G. Agha. Anpassbare Middleware für modulare verteilte Software CACM. 44 (5) 2001.
- Edward Lee, S. Neuendorffer und M. Wirdlin. Actor-orientiertes Design von eingebetteten Hardware- und Softwaresystemen Journal of Circuits, Systeme und Computers. 2002.
- P. Thati, R. Ziaei und G. Agha. Eine Theorie des Mai -Tests für Schauspieler Formale Methoden für offene objektbasierte verteilte Systeme. März 2002.
- P. Thati, R. Ziaei und G. Agha. Eine Theorie des Mai -Tests auf asynchrone Kalkül mit Lokalität und ohne Namensübereinstimmung Algebraische Methodik und Softwaretechnologie. Springer Verlag. September 2002. LNCs 2422.
- Stephen Neuendorffer. Akteurorientierte Metaprogrammierung Doktorarbeit. Universität von Kalifornien, Berkeley. Dezember 2004
- Carl Hewitt (2006a) Der wiederholte Niedergang der logischen Programmierung und warum es wiedergeboren wird Was schief gelaufen ist und warum: Lehren aus KI -Forschung und Anwendungen. Technischer Bericht SS-06-08. AAAI -Presse. März 2006.
- Carl Hewitt (2006b) Was ist Engagement? Physisch, organisatorisch und sozial Münze@AAMAS. 27. April 2006b.
- Carl Hewitt (2007a) Was ist Engagement? Physisch, organisatorisch und sozial (überarbeitet) Pablo Noriega .et al. Redakteure. LNAI 4386. Springer-Verlag. 2007.
- Carl Hewitt (2007b) Das groß angelegte Organisation Computing erfordert eine unstratifizierte Paraconsistenz und Reflexion Münze@AAMAS'07.
- D. CharousSet, T. C. Schmidt, R. Hiesgen und M. Wählisch. Native Akteure: Eine skalierbare Softwareplattform für verteilte, heterogene Umgebungen in agere! '13 Proceedings des Workshops 2013 über Programmierung basierend auf Akteuren, Agenten und dezentralen Kontrolle.
Externe Links
- Hewitt, Meijer und Szyperski: Das Schauspielermodell (alles, was Sie wissen wollten, aber Angst hatten, zu fragen) Microsoft Channel 9. 9. April 2012. Video an Youtube
- Funktionaler Java - Eine Java -Bibliothek, die eine Implementierung gleichzeitiger Akteure mit Code -Beispielen im Standard -Java- und Java 7 -BGGA -Stil enthält.
- Schauspieler -Eine Java-basierte Bibliothek für Schauspielerprogrammierung. Die vertraute Java -Syntax, eine Ameisenaufbaudatei und eine Reihe von Beispielen machen die Eingangssperre sehr niedrig.
- Activejava - Ein Prototyp Java -Spracherweiterung für die Schauspielerprogrammierung.
- Akka - Schauspielerbasierte Bibliothek in Scala und Java, von Lightbend Inc.
- GPARS - Eine gleichzeitige Bibliothek für Apache Groovy und Java
- Asynchronous Agents Library - Microsoft Actor Library für Visual C ++. "Die Agentenbibliothek ist eine C ++-Vorlagenbibliothek, die ein auf Akteur basierendes Programmiermodell und eine In-Process-Nachricht für grobkörnige Datenfluss- und Pipelining-Aufgaben fördert."
- ActortHread in C ++ 11 - Basisvorlage, die den Kern des Schauspielermodells über nackte Threads in Standard C ++ 11 liefert