Herec Model

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 6. července 2020; kontroly vyžadují 11 úprav .

Model herce  je matematický model paralelního počítání , postavený na konceptu herce ( angl.  herec  "herec; jednající subjekt"), který je považován za univerzální primitiv paralelního provádění. Aktér v tomto modelu interaguje tak, že si vyměňuje zprávy s ostatními aktéry a každý v reakci na přijaté zprávy může činit místní rozhodnutí, vytvářet nové aktéry, posílat vlastní zprávy a určovat, jak reagovat na následné zprávy.

Vytvořeno jako teoretický základ pro řadu praktických implementací paralelních systémů .

Historie

Hlavní myšlenky a základ modelu byly stanoveny v roce 1973 publikací Hewitta, Bishopa a Steigera [1] . Proces tvorby modelu ovlivnily programovací jazyky Lisp , Simula a rané verze Smalltalku , stejně jako metody parametrické ochrany a přepínání paketů . Hlavní motivací pro vytvoření modelu byl úkol vybudovat distribuované výpočetní systémy založené na stovkách a tisících nezávislých počítačů vybavených vlastní lokální pamětí a komunikačním rozhraním [2] . S příchodem víceprocesorových systémů a vícejádrových architektur se zájem o model aktéra zvýšil i mimo kontext distribuovaných systémů.

V roce 1975 byla vyvinuta operační sémantika pro model aktéra [3] [4] . V roce 1977 byl vyvinut systém axiomatických zákonů pro modely herců [5] . V roce 1981 byla vytvořena denotační sémantika modelu (sémantika přechodů) [2] [6] , rozvinuta a v roce 1985 zobecněna [7] ; v důsledku těchto prací je teorie hereckých modelů uznávána jako rozvinutá a propracovaná.

V 90. letech 20. století byly vytvořeny formalismy, které plně neodpovídají modelu aktérů (neformalizují zaručené doručování zpráv), ale jsou prakticky zajímavé, zejména několik různých algeber aktorů [8] [9] a interpretace založené na lineární logice [10] .

Základní pojmy

Analogicky s filozofií objektově orientovaného programování , kde je každé primitivum považováno za objekt, model aktéra vyčleňuje koncept „herce“ jako univerzální entity. Aktér je výpočetní entita, která v reakci na přijatou zprávu může současně:

Nepředpokládá se, že existuje určitá posloupnost výše uvedených akcí a že je lze všechny provádět paralelně.

Oddělení odesílatele od zasílaných zpráv bylo zásadním úspěchem modelu aktéra: zajišťuje asynchronní komunikaci a řízení struktur ve formě předávání zpráv [11] .

Příjemci zpráv jsou identifikováni adresou, někdy označovanou jako „poštovní adresa“. Herec tak může komunikovat pouze s těmi herci, jejichž adresy má, může adresy vytahovat z přijatých zpráv nebo je předem znát, pokud je herec sám vytvořil.

Model se vyznačuje inherentní paralelností výpočtů uvnitř a mezi aktéry, dynamickým vytvářením aktérů, zahrnutím adres aktérů do zpráv a interakcí pouze prostřednictvím přímého asynchronního zasílání zpráv bez jakéhokoli omezení pořadí příchodu zpráv.

Aplikace

Model aktéra lze použít jako základ pro modelování, porozumění a uvažování na široké škále souběžných systémů , například:

Sémantika předávání zpráv

Neomezené nedeterministické neshody

Snad první paralelní programy byly obsluhy přerušení . Během provozu musí počítač zpravidla reagovat na vnější události, které se mohou vyskytnout v předem neznámém časovém okamžiku (asynchronně s ohledem na aktuálně prováděný program) - například přijímat informace zvenčí (znaky z klávesnice , pakety ze sítě a tak dále). Nejúčinnější zpracování takových událostí je realizováno pomocí tzv. přerušení. Když nastane událost, provádění aktuálního programu se „přeruší“ a spustí se obsluha přerušení , která provede akce nutné k reakci na událost (například přijímá příchozí informace a ukládá je do vyrovnávací paměti, odkud lze později přečíst), poté hlavní program pokračuje v práci tam, kde skončil .

Počátkem 60. let se přerušení začala používat k simulaci současného provádění několika programů na jednom procesoru [13] . Přítomnost paralelismu se sdílenou pamětí vedla k problému řízení souběžnosti. Zpočátku byl tento úkol koncipován jako jeden z mutexů na samostatném počítači. Edsger Dijkstra vyvinul semafory a později, v letech 1971 až 1973, byly Charlesem Hoareem a Perem Hansenem vyvinuty monitory [14] [15] [16] k vyřešení problému mutexu . Žádné z těchto řešení však nevytvořilo konstrukce v programovacích jazycích, které by zapouzdřovaly přístup ke sdíleným zdrojům. Zapouzdření později provedli Hewitt a Atkinson pomocí konstruktů serializátoru ([Hewitt, Atkinson 1977, 1979] a [Atkinson 1980]).

První modely počítání (např. Turingův stroj , Postův stroj , lambda počet atd.) byly založeny na matematice a využívaly konceptu globálního stavu k definování „výpočtového kroku“ (později byly tyto pojmy zobecněny v pracích McCarthyho a Dijkstra [17] [18] ). Každý výpočetní krok šel z jednoho globálního výpočetního stavu do dalšího. Přístup globálního stavu pokračuje v teorii automatů pro konečné automaty a zásobníkové stroje, včetně jejich nedeterministických verzí. Takové nedeterministické automaty mají vlastnost omezeného nedeterminismu. To znamená, že pokud stroj vždy stojí předtím, než přejde do počátečního stavu, pak existuje omezení počtu stavů, ve kterých může být.

Dijkstra dále rozvinul nedeterministický přístup globálního stavu. Dijkstrův model vyvolal polemiku o neomezeném nedeterminismu, což je vlastnost paralelního počítání , díky níž se latence při vyřizování požadavku může stát neomezeným v důsledku arbitrážní soutěže o sdílené zdroje, přičemž zároveň zaručuje, že požadavek bude nakonec splněn. servisováno. Hewitt tvrdil, že model aktéra by měl poskytovat záruky za poskytování služby. I když v Dijkstrově modelu nemůže být neomezené množství času mezi prováděním sekvenčních operací na počítači, paralelně běžící program, který zahájil svou práci v přesně definovaném stavu, může být přerušen pouze v omezeném počtu stavů [18 ] . Proto model Dijkstra nemůže poskytnout záruky za poskytování služby. Dijkstra tvrdil, že je nemožné implementovat neomezený nedeterminismus.

Hewitt argumentoval jinak: neexistuje žádný limit pro čas, který je vynaložen na práci sekce výpočtů, nazývané arbitr pro řešení konfliktů. Řešením takových situací se zabývají rozhodci. Hodiny počítače pracují asynchronně s externími vstupy: vstup z klávesnice, přístup na disk, síťový vstup atd. Přijetí zprávy odeslané do počítače tedy může trvat neomezeně dlouho a za tu dobu může počítač projít neomezeným počtem stavů.

Neomezený nedeterminismus je charakteristickým rysem modelu aktéra, který využívá Klingerův matematický model založený na teorii regionů [2] . V hereckém modelu neexistuje žádný globální stav.

Přímá komunikace a asynchronie

Zprávy v modelu aktéra nemusí být nutně ukládány do vyrovnávací paměti. To je jeho ostrý rozdíl od předchozích přístupů k simultánnímu výpočetnímu modelu. Nedostatek vyrovnávací paměti způsobil mnoho nedorozumění během vývoje modelu herce a dodnes je předmětem sporů. Někteří výzkumníci tvrdí, že zprávy jsou uloženy ve „vzduchu“ nebo „prostředí“. Také se jednoduše odesílají zprávy v modelu aktéra (například pakety v IP ). Neexistuje žádný požadavek na synchronní podání ruky s příjemcem.

Vytváření nových aktérů a předávání adres ve zprávách znamená měnitelnou topologii

Přirozeným vývojem hereckého modelu byla schopnost předávat adresy ve zprávách. Pod vlivem sítí s přepojováním paketů navrhl Hewitt vyvinout nový souběžný výpočetní model, ve kterém by linka neměla vůbec žádná povinná pole a všechna by mohla být prázdná. Pokud si odesílatel zprávy přeje, aby měl příjemce přístup k adresám, které ještě nemá, musí být adresa odeslána ve zprávě.

Během výpočtu může být nutné odeslat zprávu příjemci, od kterého má být později obdržena odpověď. Způsob, jak toho dosáhnout, je odeslat zprávu obsahující adresu jiného aktéra, nazývanou resumé (někdy také nazývané pokračování nebo zásobník hovorů ). Příjemce pak může vytvořit zprávu s odpovědí, která bude odeslána jako životopis .

Vytvoření aktérů plus zahrnutí adres účastníků do zpráv znamená, že model aktéra má potenciálně proměnlivou topologii v jejich vzájemném vztahu, podobně jako objekty v jazyce Simula, které mají také proměnnou topologii ve svém vzájemném vztahu.

V podstatě současně

Na rozdíl od předchozího přístupu založeného na kombinování sekvenčních procesů byl herecký model ve své podstatě navržen jako simultánní. Jak je psáno v teorii hereckých modelů, sekvence v ní je speciální případ vznikající ze simultánních výpočtů.

Žádné požadavky na objednávku zpráv

Hewitt byl proti zahrnutí požadavků, že zprávy musí dorazit v pořadí, v jakém byly odeslány hereckému modelu. Pokud je požadováno seřadit příchozí zprávy, lze to modelovat pomocí fronty aktérů, která tuto funkcionalitu poskytuje. Takové fronty aktérů by seřadily příchozí zprávy tak, aby byly přijímány v pořadí FIFO . Obecně platí, že pokud aktér X pošle zprávu M1 aktéru Y a poté stejný aktér X pošle další zprávu M2 do Y , pak není žádný požadavek, aby M1 dorazil do Y před M2 .

V tomto ohledu model aktéra zrcadlí systém přepínání paketů, který nezaručuje, že pakety budou přijaty v pořadí, v jakém byly odeslány. Nedostatek záruk pořadí doručení zpráv umožňuje systému přepínání paketů ukládat pakety do vyrovnávací paměti, používat více cest k odesílání paketů, znovu odesílat poškozené pakety a používat další optimalizační techniky.

Herci mohou například použít kanál pro zpracování zpráv. To znamená, že v procesu zpracování zprávy M1 může aktér měnit chování, které bude použito pro zpracování další zprávy. Konkrétně to znamená, že může začít zpracovávat ještě jednu zprávu M2 před dokončením zpracování M1 . To, že je aktérovi uděleno právo používat kanál pro zpracování zpráv, neznamená, že musí tento kanál používat. Zda bude zpráva zpracována nebo ne, je věcí technického kompromisu. Jak může vnější pozorovatel vědět, že zpracování zprávy herce prošlo potrubím? V tomto ohledu neexistuje žádná nejednoznačnost ohledně využití schopnosti zřetězení ze strany aktéra. Pouze pokud je v konkrétní implementaci implementace zřetězené optimalizace provedena nesprávně, může dojít k něčemu jinému než očekávanému chování.

Lokalita

Další důležitou charakteristikou modelu aktéra je lokalita: při zpracování zprávy může aktér posílat zprávy pouze na adresy, které obdržel ze zprávy, na adresy, které měl již před přijetím zprávy, a na adresy, které vytvořil při zpracování zprávy. zpráva.

Lokalita také znamená, že nelze změnit více adres současně. V tomto ohledu se model aktéra liší od některých jiných souběžných modelů, jako jsou Petriho sítě , ve kterých mohou být implementace současně odstraněny z více pozic a umístěny na různé adresy.

Složení hereckých systémů

Myšlenka skládání systémů aktérů do větších celků je důležitým aspektem modularity, který byl vyvinut v Gool Ag 's Ph.D.

Chování

Hlavní inovací modelu aktéra bylo zavedení konceptu chování, definovaného jako matematická funkce vyjadřující jednání aktéra při zpracování zpráv, včetně definice nového chování pro zpracování další příchozí zprávy. Chování zajišťuje fungování matematického modelu paralelismu.

Toto chování také osvobozuje model aktéra od implementačních detailů, jako to dělá například ve Smalltalku-72 značka interpretu vláken. Je však důležité pochopit, že efektivní implementace systémů popsaných modelem aktéra vyžaduje pokročilou optimalizaci.

Simulace jiných paralelních systémů

Jiné systémy souběžnosti (jako je procesní počet ) lze modelovat v modelu aktéra pomocí dvoufázového potvrzovacího protokolu [19] .

Věta o výpočetní reprezentaci

V modelu aktéra existuje teorém výpočetní reprezentace pro uzavřené systémy v tom smyslu, že nepřijímají zprávy zvenčí. V matematické notaci je uzavřený systém, označený jako S , sestaven jako nejlepší aproximace pro počáteční chování, nazvaný ⊥ S , pomocí aproximující funkce chování S progrese sestavené pro S následovně (podle publikace Hewitt z roku 2008):

Označme S ≡ ⊔ i∈ω progresi S i (⊥ S )

S lze tedy matematicky charakterizovat z hlediska všech možných způsobů chování (včetně zohlednění neomezeného nedeterminismu). Přestože Denote S není implementací S , lze jej použít k prokázání následujícího zobecnění Church-Turingovy teze [20] : je-li aktor primitiv uzavřeného systému aktérů efektivní, pak jsou jeho možné výstupy rekurzivně spočetné. Důkaz vyplývá přímo z věty o výpočetní reprezentaci.

Vztah s matematickou logikou

Vývoj hereckého modelu má zajímavou souvislost s matematickou logikou. Jednou z klíčových motivací pro jeho vývoj byla potřeba řídit aspekty, které vznikly při vývoji programovacího jazyka Planner . Jakmile byl model herce původně formulován, stalo se důležité určit sílu modelu ve vztahu k tezi Roberta Kowalského , že „výpočty lze seskupit podle závěrů“. Kowalského teze se ukázala jako nepravdivá pro simultánní výpočty v modelu herce. Tento výsledek je stále diskutabilní a je v rozporu s některými předchozími myšlenkami, protože Kowalského teze platí pro sekvenční výpočty a dokonce i pro některé druhy paralelních výpočtů, například pro lambda výpočty.

Nicméně byly učiněny pokusy rozšířit logické programování na souběžné výpočty. Hewitt a Aga však v článku z roku 1999 tvrdí, že výsledný systém není deduktivní v následujícím smyslu: výpočetní kroky systémů paralelního logického programování nenásledují deduktivně z předchozích kroků.

Migrace

Migrace v hereckém modelu je schopnost herce změnit své umístění. Například Aki Yonezawa ve své diplomové práci modeloval poštovní službu, do které mohli klientští herci vstupovat, měnit místo při běhu a vystupovat. Herec, který by mohl migrovat, byl modelován jako herec se specifickou polohou, která se mění, když herec migruje. Spolehlivost této simulace je však kontroverzní a je předmětem výzkumu.

Zabezpečení

Herci mohou být zajištěni jedním z následujících způsobů:

Syntéza adresy herce

Jemným bodem v modelu herce je schopnost syntetizovat adresu herce. V některých případech může bezpečnostní systém zakázat syntézu adres. Vzhledem k tomu, že adresa aktéra je pouze bitový řetězec, je samozřejmě možné jej syntetizovat, ačkoli pokud je bitový řetězec dostatečně dlouhý, je poměrně obtížné nebo dokonce nemožné najít adresu aktéra. SOAP používá adresu URL , kde se nachází aktér , jako adresu koncového bodu . Vzhledem k tomu, že adresa URL je řetězec znaků, je samozřejmě možné ji syntetizovat, ačkoli pokud je použito šifrování, je téměř nemožné řetězec zachytit.

Syntéza adresy aktéra je obvykle modelována pomocí mapování. Cílem je použít herecký systém k mapování na skutečné adresy herců. Například paměťovou strukturu počítače lze modelovat jako systém aktérů, který poskytuje mapování. V případě SOAP adres se jedná o DNS modelování a mapování URL .

Rozdíl od ostatních modelů souběžného zasílání zpráv

První publikovaná práce Robina Milnera o souběžnosti [21] byla pozoruhodná tím, že nebyla založena na sekvenčním složení procesu, což se lišilo od modelu aktéra, protože bylo založeno na pevném počtu procesů, pevném počtu odkazů v topologii řádků používané k synchronizovat odkaz. Původní model Cooperating Serial Processes (CSP) publikovaný Anthony Hoare [22] se liší od modelu aktéra, protože je založen na paralelním složení pevného počtu sekvenčních procesů spojených v pevné topologii a komunikujících pomocí synchronního předávání zpráv na základě procesu. jména. Pozdější verze CSP ustoupily od komunikace založené na názvech procesů a přijaly princip anonymní komunikace přes kanály. Tento přístup je také použit v Milnerově práci o kalkulu komunikujících systémů a pi-kalkulu .

Oba tyto rané modely Milnera a Hoarea mají omezený nedeterminismus. Moderní teoretické modely interagujících systémů [23] přímo umožňují neomezený nedeterminismus.

Relevance

Čtyřicet let po zveřejnění Moorova zákona je pokračující nárůst výkonu čipu způsoben metodami lokálního a globálního masivního paralelismu. Lokální paralelismus se používá v nových čipech pro 64bitové vícejádrové mikroprocesory, ve vícečipových modulech a ve vysoce výkonných komunikačních systémech. Globální souběžnost je v současnosti umožněna v novém drátovém a bezdrátovém širokopásmovém hardwaru pro přepínání paketů. Kapacita úložiště díky lokálnímu i globálnímu paralelismu exponenciálně roste.

Model je zaměřen na řešení následujících problémů budování výpočetních systémů:

Mnoho myšlenek představených v modelech aktérů se nyní ze stejných důvodů používá také v multiagentních systémech [24] . Klíčový rozdíl je v tom, že agent systému (ve většině definic) ukládá aktérům další omezení, obvykle po nich vyžaduje, aby používali závazky a cíle.

Model aktéra se také používá v klientech cloud computingu [25] .

Programování s herci

Mezi rané programovací jazyky s podporou herců patří Act 1, 2 a 3 [26] [27] , Acttalk [28] , Ani [29] , Cantor [30] , Rosette [31]

Novější jazyky orientované na model herce: Actor-Based Concurrent Language (ABCL), ActorScript, AmbientTalk [32] , Axum [33] . Mezi univerzální programovací jazyky, které využívají koncept herce, patří E , Elixir [34] , Erlang , Io , SALSA [35] , Scala [36] [37] .

Knihovny a struktury tabulek s herci byly vyvinuty tak, aby poskytovaly herecký styl programování v jazycích, které nemají vestavěné herce.

Knihovny a stolní struktury s herci
název Datum posledního vydání Licence Programovací jazyky
Aktivní Java 2008 ? Jáva
Herec 2013-05-31 MIT Jáva
Herec-CPP 2012-03-10 [38] GPL 2.0 C++
Actor Framework 2013-11-13 Apache 2.0 .SÍŤ
ActorKit 2011-09-13 [39] BSD Cíl-C
Akka 2015-04-23 Apache 2.0 Java a Scala
Akka.NET 2016-01-18 Apache 2.0 .SÍŤ
C++ Actor Framework (CAF) 25. 11. 2015 [40] Licence Boost Software 1.0 a BSD 3-klauzule C++11
Celuloid 2016-01-19 [41] MIT rubín
Cloud Haskell 2015-06-17 [42] BSD Haskell
CloudI 24. 12. 2015 [43] BSD C/C++, Elixir/Erlang/LFE, Java, Javascript, Perl, PHP, Python, Ruby
Funkční Java 2016-02-15 [44] BSD Jáva
GPars 2014-05-09 [45] Apache 2.0 Báječný
jetlang 2013-05-30 [46] NewBSD Jáva
Korus 2010-02-04 GPL 3 Jáva
[ 47 ] 2011-10-13 [48] MIT Jáva
LabVIEW Actor Framework 2012-03-01 [49] ? LabVIEW
libprocess 2013-06-19 Apache 2.0 C++
NAct 2012-02-28 LGPL 3.0 .SÍŤ
OOSMOS 2016-02-17 [50] GPL 2.0 a komerční C, C++
Obíhat 2016-02-16 [51] NewBSD Jáva
Orleans 2019-06-04 [52] MIT .SÍŤ
Panini 2014-05-22 MPL 1.1 Vlastní programovací jazyk
Peernetický 2007-06-29 LGPL 3.0 Jáva
PostSharp 2014-09-24 Komerční / Freemium .SÍŤ
Pulsar 24. 11. 2016 [53] NewBSD Krajta
Pulsar 2016-02-18 [54] LGPL / Eclipse Clojure
Pykka 2022-05-28 [55] Apache 2.0 Krajta
React.Net ? MIT .SÍŤ
Retlang 2011-05-18 [56] NewBSD .SÍŤ
rotor 2022-05-23 MIT C++17
S4 2012-07-31 [57] Apache 2.0 Jáva
SObjectizer 2016-02-11 NewBSD C++11
Schéma termitů 2009-05-21 LGPL Systém
Theron 2014-01-18 [58] M.I.T. [59] C++
Thespian 2019-09-11 [60] Veřejné vydání GoDaddy [61] Krajta
QP 2015-09-29 [62] GPL 2.0 a komerční C a C++
Quasar 2016-01-18 [63] LGPL / Eclipse Jáva

Poznámky

  1. Carl Hewitt, Peter Bishop, Richard Steiger: Univerzální modulární herec, formalismus pro umělou inteligenci. IJCAI , 1973 
  2. 1 2 3 William Klinger, Základy herecké sémantiky. MIT PhD v matematice červen 1981 Archivováno 25. července 2019 na Wayback Machine 
  3. [Irene Greif, Sémantika komunikačních paralelních procesů. MIT, PhD, srpen 1975  ]
  4. 1 2 G. Aga, I. Mason, S. Smith, C. Talcott. Důvody pro výpočet herců. Journal of Functional Programming, leden  1993
  5. G. Baker, C. Hewitt. Zákony interagujících paralelních procesů. IFIP, srpen 1977 
  6. Carl Hewitt. Co je to povinnost? Fyzické, organizační a sociální. Archivováno 11. února 2021 na Wayback Machine 
  7. 1 2 Gul Agha, Actors: Model of Parallel Computing in Distributed Systems. MIT Press, PhD, 1986 Archivováno 4. června 2011 na Wayback Machine 
  8. M. Gaspari, G. Zavattaro. Algebra herců. Technická zpráva UBLCS-97-4. Univerzita v Bologni, 1997
  9. G. Agha, P. Thati. Algebraická teorie herců a její aplikace na jednoduchý objektově založený jazyk. (nedostupný odkaz) . Získáno 14. února 2011. Archivováno z originálu 20. dubna 2004. 
  10. John Darlington; YK Guo. Formalizující aktéři v lineární logice  (neurčité) . - Mezinárodní konference o objektově orientovaných informačních systémech, 1994.
  11. Carl Hewitt. Zobrazení řídicích struktur jako vzorů předávání zpráv Journal of Artificial Intelligence. června 1977
  12. SmallTalk Runtime jako příklad moderní implementace (stránka projektu Pharo) . Získáno 31. října 2018. Archivováno z originálu 7. června 2017.
  13. P. Hansen. Původ paralelního programování: od semaforů po vzdálená volání procedur. Springer , 2002 
  14. Per Hansen, Monitory a souběžný Pascal: Osobní historie , Comm. ACM 1996, s. 121-172
  15. Hansen, P., Principy operačního systému , Prentice-Hall, červenec 1973.
  16. CAR Hoare, Monitors: An Operating System Structuring Concept , Comm. ACM sv. 17, č. 10. října 1974, str. 549-557
  17. [McCarthy a Hayes 1969]
  18. 1 2 [Dijkstra 1976]
  19. Frederick Knabe. Distribuovaný protokol pro kanálovou komunikaci s volbou PARLE 1992.
  20. Kleene, 1943
  21. Robin Milner. Procesy: Mathematical Model of Computing Agents in Logic Colloquium 1973.
  22. CAR Hoare. Komunikace sekvenčních procesů srpna 1978
  23. [Hoare 1985], [Roscoe 2005]
  24. Hewitt, 2006b, 2007b
  25. Carl Hewitt. Organizace škálovatelných, spolehlivých a důvěrných klientů pro cloud computing. IEEE Internet Computing, v. 12 (5), 2008  (anglicky)
  26. Henry Lieberman. Review Act 1. MIT AI, červen 1981  (odkaz není dostupný  )
  27. Henry Lieberman. Myšlení mnoha věcí najednou bez zmatku: Souběžnost v aktu 1. MIT AI, červen 1981  (odkaz není k dispozici  )
  28. Jean-Pierre Briot. Acttalk: Rámec pro objektově orientované souběžné programování-design a zkušenost 2. francouzsko-japonský workshop. 1999.
  29. Ken Kahn. Výpočetní teorie animace Doktorská disertační práce MIT EECS. srpna 1979
  30. William Athas a Nanette Boden Cantor: Actor Programming System for Scientific Computing ve sborníku NSF Workshop on Object-Based Concurrent Programming. 1988. Zvláštní vydání oznámení SIGPLAN.
  31. Darrell Woelk. Vývoj agentů InfoSleuth pomocí Rosette: Jazykový sborník z workshopu CIKM '95 o inteligentních informačních agentech. 1995.
  32. Dedecker J., Van Cutsem T., Mostinckx S., D'Hondt T., De Meuter W. Ambient-oriented Programming in AmbientTalk. In „Sborník z 20. evropské konference o objektově orientovaném programování (ECOOP), Dave Thomas (Ed.), Lecture Notes in Computer Science Vol. 4067, str. 230-254, Springer-Verlag., 2006
  33. Microsoft připravuje nový paralelní programovací jazyk – Vývoj aplikací – Novinky a recenze – eWeek.com
  34. Dave Thomas. Kapitola 14. Práce s více procesy // Programování elixíru. - Pragmatická knihovnička, 2014. - 280 s. — ISBN 978-1-937785-58-1 .
  35. Carlos Varela a Gul Agha. Programování dynamicky rekonfigurovatelných otevřených systémů pomocí SALSA. Upozornění ACM SIGPLAN. OOPSLA'2001 Intriguing Technology Track Proceedings, 2001
  36. Philipp Haller a Martin Odersky, Event-Based Programming without Inversion of Control, Proc. JMLC, září 2006 . Získáno 14. února 2011. Archivováno z originálu dne 9. listopadu 2020.
  37. Philipp Haller a Martin Odersky, herci, kteří sjednocují vlákna a události. Technická zpráva LAMP, leden 2007 (mrtvý odkaz) . Získáno 14. února 2011. Archivováno z originálu 7. června 2011. 
  38. Změny - actor-cpp - Implementace modelu aktéra pro C++ - Google Project Hosting . code.google.com. Datum přístupu: 25. února 2016. Archivováno z originálu 18. listopadu 2015.
  39. Commit History stevedekorte/ActorKit GitHub . Github.com. Staženo: 25. února 2016.
  40. Tagy actor-framework/actor-framework GitHub . Github.com. Získáno 25. února 2016. Archivováno z originálu dne 20. listopadu 2020.
  41. celuloid | RubyGems.org | váš komunitní klenot hostitele . rubygems.org. Získáno 25. února 2016. Archivováno z originálu dne 29. září 2020.
  42. Cloud Haskell: Souběžné a distribuované programování ve stylu Erlang v Haskell . Github.com. Získáno 25. února 2016. Archivováno z originálu 3. března 2016.
  43. CloudI Dowanloads . sourceforge.net. Získáno 25. února 2016. Archivováno z originálu 14. března 2016.
  44. Funkční verze Java . GitHub. Staženo: 25. února 2016.  (nedostupný odkaz)
  45. Vydání GPars . GitHub. Získáno 25. února 2016. Archivováno z originálu dne 4. září 2020.
  46. jetlang ke stažení . code.google.com. Získáno 25. února 2016. Archivováno z originálu 12. března 2016.
  47. Srinivasan, Sriram; Alan Mycroft (2008). „Kilim: Aktéři typu izolace pro Javu“ (PDF) . Evropská konference o objektově orientovaném programování ECOOP 2008 . Kypr. Archivováno (PDF) z originálu dne 28.10.2020 . Staženo 25. 2. 2016 . Použitý zastaralý parametr |deadlink=( nápověda )
  48. Commit History kilim/kilim GitHub . Github.com. Datum přístupu: 25. února 2016. Archivováno z originálu 27. dubna 2010.
  49. Komunita: Actor Framework, revize LV 2011 (verze 3.0.7) . decibel.ni.com. Získáno 25. února 2016. Archivováno z originálu 13. října 2016.
  50. Historie verzí OOSMOS (downlink) . OOSMOS. Získáno 25. února 2016. Archivováno z originálu 10. března 2016. 
  51. Orbit, GitHub, vydání tagu 0.7.1 . GitHub. Staženo: 25. února 2016.  (nedostupný odkaz)
  52. Orleans, GitHub, vydání tagu 2.3.4 . GitHub. Získáno 4. června 2019. Archivováno z originálu dne 4. prosince 2020.
  53. Poznámky k vydání Pulsaru . Staženo 17. ledna 2019. Archivováno z originálu 17. ledna 2019.
  54. Pulsar na GitHubu . Získáno 25. února 2016. Archivováno z originálu 17. listopadu 2020.
  55. Změny – Pykka v3.1.1 . pykka.org. Datum přístupu: 2022-26-08.
  56. Změny - retlang - Souběžnost založená na zprávách v .NET - Google Project Hosting . code.google.com. Datum přístupu: 25. února 2016. Archivováno z originálu 24. listopadu 2015.
  57. Commit History s4/s4 Apache (downlink) . apache.org. Získáno 25. února 2016. Archivováno z originálu 6. března 2016. 
  58. Theron - Vydána verze 6.00.02 (downlink) . Theron-library.com. Získáno 25. února 2016. Archivováno z originálu 16. března 2016. 
  59. Theron (downlink) . Theron-library.com. Datum přístupu: 25. února 2016. Archivováno z originálu 4. března 2016. 
  60. Historie vydání Thespian na PyPI . Staženo 27. ledna 2020. Archivováno z originálu 1. května 2019.
  61. Thespian Releases . godaddy.com Získáno 29. září 2015. Archivováno z originálu 30. listopadu 2018.
  62. QP Active Object Frameworks – Procházet soubory na . sourceforge.net. Získáno 25. února 2016. Archivováno z originálu dne 24. února 2021.
  63. Quasar GitHub . Získáno 25. února 2016. Archivováno z originálu 15. prosince 2020.

Literatura