演 员模型
基本 概念
编辑
- 发送
有限 数量 的 消息 给其他 演 员; - 创建
有限 数量 的 新 演 员; 指定 接收 到 下 一个消息时要用到的行为。
发送
历史
编辑使用 演 员模型 编程
编辑
一些编程语言使用了演员模型或变种。这些语言
早期 的 演 员模型 编程语言
编辑
后 期 的 演 员模型 编程语言
编辑
演 员模型 库及框 架
编辑
许可证 | 语言 | |||
---|---|---|---|---|
ReActed[26] | 2022-11-30 | Apache 2.0 | Java | |
Acteur[27] | 2020-04-16[28] | Apache-2.0 / MIT | Rust | |
Bastion[29] | 2020-08-12[30] | Apache-2.0 / MIT | Rust | |
Actix[31] | 2019-05-30[32] | MIT | Rust | |
Aojet[33] | 2016-10-17 | MIT | Swift | |
Actor[34] | 2017-03-09 | MIT | Java | |
Actor4j[35] | 2020-01-31 | Apache 2.0 | Java | |
Actr[36] | 2019-04-09[37] | Apache 2.0 | Java | |
Vert.x[38] | 2018-02-13 | Apache 2.0 | Java, Groovy, Javascript, Ruby, Scala, Kotlin, Ceylon | |
ActorFx[39] | 2013-11-13 | Apache 2.0 | .NET | |
Akka | 2022-09-06[40] | Apache 2.0 | Java and Scala | |
Akka.NET[41] | 2020-08-20[42] | Apache 2.0 | .NET | |
Apache Pekko[43] | 2023-07-26[44] | Apache 2.0 | Java and Scala | |
Remact.Net[45] | 2016-06-26 | MIT | .NET, Javascript | |
Ateji PX[46] | ? | ? | Java | |
czmq[47] | 2016-11-10 | MPL-2 | C | |
F# MailboxProcessor | Apache License | F# | ||
Korus[48] | 2010-02-04 | GPL 3 | Java | |
Kilim[49][50] | 2018-11-09[51] | MIT | Java | |
ActorFoundry ( |
2008-12-28 | ? | Java | |
ActorKit[52] | 2011-09-13[53] | BSD | Objective-C | |
Cloud Haskell[54] | 2015-06-17[55] | BSD | Haskell | |
CloudI[56] | 2023-10-27[57] | MIT | ATS, C/C++, Elixir/Erlang/LFE, Go, Haskell, Java, Javascript, OCaml, Perl, PHP, Python, Ruby | |
Clutter[58] | 2017-05-12[59] | LGPL 2.1 | C, C++ (cluttermm), Python (pyclutter), Perl (perl-Clutter) | |
NAct[60] | 2012-02-28 | LGPL 3.0 | .NET | |
Nact[61] | 2018-06-06[62] | Apache 2.0 | JavaScript/ReasonML | |
Retlang[63] | 2011-05-18[64] | New BSD | .NET | |
JActor[65] | 2013-01-22 | LGPL | Java | |
Jetlang[66] | 2013-05-30[67] | New BSD | Java | |
Haskell-Actor[68] | 2008 | New BSD | Haskell | |
GPars[69] | 2014-05-09[70] | Apache 2.0 | Groovy | |
OOSMOS[71] | 2019-05-09[72] | GPL 2.0 |
C. C++ friendly | |
Panini[73] | 2014-05-22 | MPL 1.1 | ||
PARLEY[74] | 2007-22-07 | GPL 2.1 | Python | |
Peernetic[75] | 2007-06-29 | LGPL 3.0 | Java | |
PostSharp[76] | 2014-09-24 | .NET | ||
Pulsar[77] | 2016-07-09[78] | New BSD | Python | |
Pulsar[79] | 2016-02-18[80] | LGPL/Eclipse | Clojure | |
Pykka[81] | 2019-05-07[82] | Apache 2.0 | Python | |
Termite Scheme[83] | 2009-05-21 | LGPL | Scheme (Gambit实现) | |
Theron[84] | 2014-01-18[86] | MIT[87] | C++ | |
Thespian[88] | 2020-03-10 | MIT | Python | |
Quasar[89] | 2018-11-02[90] | LGPL/Eclipse | Java | |
Libactor[91] | 2009 | GPL 2.0 | C | |
Actor-CPP[92] | 2012-03-10[93] | GPL 2.0 | C++ | |
S4[94] | 2012-07-31[95] | Apache 2.0 | Java | |
C++ Actor Framework (CAF)[96] | 2020-02-08[97] | Boost Software License 1.0 and BSD 3-Clause | C++11 | |
Celluloid[98] | 2018-12-20[99] | MIT | Ruby | |
LabVIEW Actor Framework[100] | 2012-03-01[101] | National Instruments SLA[102] | LabVIEW | |
LabVIEW Messenger Library[103] | 2021-05-24 | BSD | LabVIEW | |
Otavia[104] | 2024-01-02 | Apache 2.0 | Scala | |
Orbit[105] | 2019-05-28[106] | New BSD | Java | |
QP |
2019-05-25[107] | GPL 2.0 |
C and C++ | |
libprocess[108] | 2013-06-19 | Apache 2.0 | C++ | |
SObjectizer[109] | 2021-12-28[110] | New BSD | C++11 | |
rotor[111] | 2022-04-23[112] | MIT License | C++17 | |
Orleans[113] | 2023-07-11[114] | MIT License | C#/.NET | |
Skynet[115] | 2016-07-11 | MIT License | C/Lua | |
Reactors.IO[116] | 2016-06-14 | BSD License | Java/Scala | |
libagents[117] | 2020-03-08 | Free software license | C++11 | |
Proto.Actor[118] | 2021-01-05 | Free software license | Go, C#, Python, JavaScript, Java, Kotlin | |
FunctionalJava[119] | 2018-08-18[120] | BSD 3-Clause | Java | |
Riker[121] | 2019-01-04 | MIT License | Rust | |
Comedy[122] | 2019-03-09 | EPL 1.0 | JavaScript | |
VLINGO XOOM Actors[123] | 2023-02-15 | Mozilla Public License 2.0 | Java, Kotlin, JVM languages, C# .NET | |
wasmCloud[124] | 2021-03-23 | Apache 2.0 | WebAssembly (Rust, TinyGo, Zig, AssemblyScript) | |
ray[125] | 2020-08-27 | Apache 2.0 | Python | |
DOTNETACTORS[126] | 2021-06-14 | MIT | .NET, C#, Azure Service Bus | |
go-actor[127] | 2022-08-16 | GPL 3.0 | Golang | |
Sento[128] | 2022-11-21 | Apache 2.0 | Common Lisp | |
Xcraft Goblins[129] | 2022-08-30 | MIT | JavaScript | |
Tarant[130] | 2023-04-17 | MIT | Typescript, Javascript |
并发编程语言用例
编辑
receive
% 建立 一个进程并启用函数web:start_server(Port, MaxConnections)
ServerProcess = spawn(web, start_server, [Port, MaxConnections]),
% 在 机 器 RemoteNode上 建立 一个远程进程并启用函数web:start_server(Port, MaxConnections)
RemoteProcess = spawn(RemoteNode, web, start_server, [Port, MaxConnections]),
% (异步的 )发送消息 到 ServerProcess。消息 包含 一 个元组,它具有 原子 "pause"和 数 "10"。
ServerProcess ! {pause, 10},
% 接收 发给这个进程的 消息
receive
a_message -> do_something;
{data, DataContent} -> handle(DataContent);
{hello, Text} -> io:format("Got hello message: ~s", [Text]);
{goodbye, Text} -> io:format("Got goodbye message: ~s", [Text])
end.
原型 的 演 员编程 语言
编辑
Hewitt
- <标签>[<
元素 >1 ... <元素 >n]
编程语言
环境演 员
编辑
当 一 个environment演 员收到 Request[Bind[identifier value] customer]的 时候,建立 一个新的环境演员environment’发送给customer,使 得 这个新 环境演 员收到 Request[Lookup[identifier’] customer’]的 时候,如果identifier同 于identifier’,则发送给customer’一 个Returned[value],否 则发送给environment一 个Request[Lookup[identifier’] customer’]。当 一 个environment演 员收到 Request[Bind[<模 式 > String] customer]的 时候,如果此<模 式 >形 如Request[msg[paramerer] customer],匹 配 于String形 如Request[msg[argument] customer],则建立 一个新的环境演员environment’发送给customer,使 得 这个新 环境演 员收到 Request[Lookup[parameter’] customer’]的 时候,如果parameter’同 于parameter,则发送给customer’一 个Returned[argument],否 则发送给customer一 个Thrown[NotFound[<模 式 >]]。当 一 个environment演 员收到 Request[Bind[identifier(parameter) value] customer]的 时候,建立 一个新的环境演员environment’发送给customer,使 得 这个新 环境演 员收到 Request[Lookup[identifier’(argument)] customer’]的 时候,如果identifier同 于identifier’,则建立 一个新的环境演员environment’’,发送给customer’一 个Returned[value]和 一 个Returned[environment’’],否 则发送给environment一 个Request[Lookup[identifier’(argument)] customer’]。这个新 环境演 员environment’’在 收 到 Request[Lookup[parameter’] customer’]的 时候,如果parameter’同 于parameter,则发送给customer’一 个Returned[argument],否 则发送给environment’一 个Request[Lookup[parameter’] customer’]。
表 达式
编辑
- <标识
符 > 在 收 到 Request[Eval[environment] customer]的 时候,发送给environment一 个Request[Lookup[<标识符 >] customer]。
- send <
接收 者 > <通信 > 在 收 到 Request[Eval[environment] customer]的 时候,建立 一个新演员evalCustomer1,发送给<接收 者 >一 个Request[Eval[environment] evalCustomer1],使 得 在 evalCustomer1收 到 通信 Returned[theRecipient]的 时候,建立 一个新演员evalCustomer2,发送给<通信 >一 个Request[Eval[environment] evalCustomer2],使 得 在 evalCustomer2收 到 通信 Returned[theCommunication]的 时候,发送给theRecipient一 个theCommunication。
- <
接收 者 >.<消息 > 在 收 到 Request[Eval[environment] customer]的 时候,建立 一个新演员evalCustomer1,发送<接收 者 >一 个Request[Eval[environment] evalCustomer1],使 得 在 evalCustomer1收 到 通信 Returned[theRecipient]的 时候,建立 一个新演员evalCustomer2,发送给<消息 >一 个Request[Eval[environment] evalCustomer2],使 得 在 evalCustomer2收 到 通信 Returned[theMessage]的 时候,发送给theRecipient一 个Request[theMessage customer]。
- receiver ... <
模 式 >i <表 达式>i ... 在 收 到 Request[Eval[environment] customer]的 时候,发送给customer一个新演员theReceiver,使 得 在 theReceiver收 到 通信 内容 com的 时候,建立 一个新演员bindingCustomer,并发送给environment一 个Request[Bind[<模 式 >i com] bindingCustomer],而且- 如果bindingCustomer
收 到 Returned[environment’],发送给<表 达式>i一 个Request[Eval[environment’]] 不 然 如果bindingCustomer收 到 Thrown[...],尝试<模 式 >i+1。
- 如果bindingCustomer
- behavior ... <
模 式 >i <表 达式>i ... 在 收 到 Request[Eval[environment] customer]的 时候,发送给customer一个新演员theReceiver,使 得 在 theReceiver收 到 Request[message customer’]的 时候,建立 一个新演员bindingCustomer,并发送给environment一 个Request[bind[<模 式 >i message] customer’],而且- 如果bindingCustomer
收 到 Returned[environment’],发送给<表 达式>i一 个Request[Eval[environment’] customer’] 不 然 如果bindingCustomer收 到 Thrown[...],尝试<模 式 >i+1。
- 如果bindingCustomer
- {<
表 达式>1, <表 达式>2} 在 收 到 Request[Eval[environment] customer]的 时候,发送给<表 达式>1一 个Request[Eval[environment]],而且并发的 发送给<表 达式>2一 个Request[Eval[environment] customer]。
- let <标识
符 > = <表 达式>值 in <表 达式>体 在 收 到 message[Eval[environment] customer]的 时候,建立 一个新演员evalCustomer,并发送给<表 达式>值一 个Request[Eval[environment] evalCustomer]。在 evalCustomer收 到 Returned[theValue]的 时候,建立 一个新演员bindingCustomer,并发送给environment一 个Request[bind[<标识符 > theValue] bindingCustomer]。在 bindingCustomer收 到 Returned[environment’]的 时候,发送给<expression>体 一 个Request[Eval[environment’] customer]。
- serializer <
表 达式> 在 收 到 Request[Eval[environment] customer]的 时候,发送给customer一 个Returned[theSerializer],这里的 theSerializer是 新 演 员,使 得 发送到 theSerializer的 通信 按FIFO次序 由行 为演员处理 ,行 为演员初始 是 <表 达式>.Eval[environment],而且在 theSerializer收 到 通信 内容 com的 时候,建立 一个新演员customer’,发送给行为演员一个Request[com customer’],使 得 在 customer’收 到 Returned[value]和 Returned[theNextBehavior]的 时候,Returned[value]被 发送给customer,而theNextBehavior被 theSerializer用作 下 次 通信 的 行 为演员。
例 子 程 序
编辑
- Cell ≡
- receiver
- Request[Create[initial] customer]
- send customer Returned[serializer ReadWrite(initial)]
- Request[Create[initial] customer]
- receiver
- ReadWrite(contents) ≡
- behavior
- Request[read[] customer]
- {send customer Returned[contents], Returned[ReadWrite(contents)]}
- Request[write[x] customer]
- {send customer Returned[], Returned[ReadWrite(x)]}
- Request[read[] customer]
- behavior
- let x = Cell.Create[5] in {x.write[7], x.write[9], x.read[]}
影 响
编辑
理 论
编辑
纯lambda
演算 现在只 使用 两种东西来 建造 :项和变量。我 们在进程演算 上 也能实现同 样的经济性 吗?Carl Hewitt凭 借 其演员模型 ,很久以前 就应对了这个挑战;他 宣告 了 值、在 值上的 算 子 和 进程,都 应该是 同一 种东西 :即 演 员。这个
目 标打动了我 ,因 为它蕴涵了 表 达式有 着 同 质性和 完 整 性 ...但 是 很久以后我 才 明白 了 如何 依 据 代数 演算 来 达成这个目 标 ...
因 此本着 Hewitt的 精神 ,我 们的第一步 ,就是要求 由 项指示 或 由 名字 访问的 所有 东西,包括 值、寄 存 器 、算 子 、进程、对象,都 是 同 一 种东西 ;它们都 应当是 进程。
实践
编辑参 见
编辑
引用
编辑
- ^ Carl Hewitt; Peter Bishop and Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence (PDF). IJCAI. 1973 [2020-05-06]. (
原始 内容 存 档 (PDF)于2021-02-25). - ^ Carl Hewitt. Viewing Control Structures as Patterns of Passing Messages (页面
存 档备份,存 于互联网档案 馆). Journal of Artificial Intelligence. June 1977. - ^ 3.0 3.1 William Clinger. Foundations of Actor Semantics. Mathematics Doctoral Dissertation. MIT. June 1981. hdl:1721.1/6935.
- ^ Irene Greif. Semantics of Communicating Parallel Processes. EECS Doctoral Dissertation. MIT. August 1975.
- ^ Henry Baker; Carl Hewitt. Laws for Communicating Parallel Processes. IFIP. August 1977.
- ^ Laws for Communicating Parallel Processes (PDF). 10 May 1977 [2020-05-04]. (
原始 内容 存 档 (PDF)于2016-06-24). - ^ Gul Agha. Actors: A Model of Concurrent Computation in Distributed Systems. Doctoral Dissertation. MIT Press. 1986. hdl:1721.1/6952.
- ^ Home. Osl.cs.uiuc.edu. [2012-12-02]. (
原始 内容 存 档于2013-02-22). - ^ Henry Lieberman. A Preview of Act 1. MIT AI memo 625. June 1981.
- ^ Henry Lieberman. Thinking About Lots of Things at Once without Getting Confused: Parallelism in Act 1. MIT AI memo 626. June 1981.
- ^ Jean-Pierre Briot. Acttalk: A framework for object-oriented concurrent programming-design and experience 2nd France-Japan workshop. 1999.
- ^ Ken Kahn. A Computational Theory of Animation MIT EECS Doctoral Dissertation. August 1979.
- ^ William Athas and Nanette Boden Cantor: An Actor Programming System for Scientific Computing in Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices.
- ^ Darrell Woelk. Developing InfoSleuth Agents Using Rosette: An Actor Based Language Proceedings of the CIKM '95 Workshop on Intelligent Information Agents. 1995.
- ^ Dedecker J., Van Cutsem T., Mostinckx S., D'Hondt T., De Meuter W. Ambient-oriented Programming in AmbientTalk. In “Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP), Dave Thomas (Ed.), Lecture Notes in Computer Science Vol. 4067, pp. 230-254, Springer-Verlag.”, 2006
- ^ Darryl K. Taft. Microsoft Cooking Up New Parallel Programming Language. Eweek.com. 2009-04-17 [2012-12-02]. (
原始 内容 存 档于2012-07-29). - ^ Brandauer, Stephan; et al. Parallel objects for multicores: A glimpse at the parallel language encore.. Formal Methods for Multicore Programming. (Springer International Publishing). 2015: 1–56.
- ^ Humus. Dalnefre.com. [2012-12-02]. (
原始 内容 存 档于2021-02-07). - ^ The Pony Language. [2022-01-11]. (
原始 内容 存 档于2018-09-04). - ^ Clebsch, Sylvan; Drossopoulou, Sophia; Blessing, Sebastian; McNeil, Andy. Deny capabilities for safe, fast actors. Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control - AGERE! 2015. 2015: 1–12. ISBN 9781450339018. doi:10.1145/2824815.2824816. by Sylvan Clebsch, Sophia Drossopoulou, Sebastian Blessing, Andy McNeil
- ^ The P Language. 2019-03-08 [2020-05-06]. (
原始 内容 存 档于2021-01-15). - ^ The P# Language. 2019-03-12 [2020-05-06]. (
原始 内容 存 档于2021-03-23). - ^ Carlos Varela and Gul Agha. Programming Dynamically Reconfigurable Open Systems with SALSA. ACM SIGPLAN Notices. OOPSLA'2001 Intriguing Technology Track Proceedings. 2001, 36.
- ^ Philipp Haller and Martin Odersky. Event-Based Programming without Inversion of Control (PDF). Proc. JMLC 2006. September 2006 [2014-08-04]. (
原始 内容 存 档 (PDF)于2020-11-09). - ^ Philipp Haller and Martin Odersky. Actors that Unify Threads and Events (PDF). Technical report LAMP 2007. January 2007 [2014-08-04]. (
原始 内容 (PDF)存 档于2011-06-07). - ^ ReActed (页面
存 档备份,存 于互联网档案 馆) - ^ Acteur (页面
存 档备份,存 于互联网档案 馆) - ^ acteur - 0.9.1· David Bonet · Crates.io. crates.io. [2020-04-16]. (
原始 内容 存 档于2021-02-05). - ^ Bastion (页面
存 档备份,存 于互联网档案 馆) - ^ Bulut, Mahmut. Bastion on Crates.io. Crates.io. 2019-12-15 [2019-12-15]. (
原始 内容 存 档于2021-02-05). - ^ Actix (页面
存 档备份,存 于互联网档案 馆) - ^ actix - 0.8.3· Nikolay Kim · Crates.io. crates.io. [2019-06-03]. (
原始 内容 存 档于2021-02-05). - ^ Aojet (页面
存 档备份,存 于互联网档案 馆) - ^ Actor (页面
存 档备份,存 于互联网档案 馆) - ^ Actor4j (页面
存 档备份,存 于互联网档案 馆) - ^ Actr (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · zakgof/actr · GitHub. Github.com. [2019-04-16]. (
原始 内容 存 档于2020-10-26). - ^ Vert.x (页面
存 档备份,存 于互联网档案 馆) - ^ ActorFx (页面
存 档备份,存 于互联网档案 馆) - ^ Akka 2.6.20 Released · Akka. Akka. 2022-09-06 [2022-12-23]. (
原始 内容 存 档于2022-09-24). - ^ Akka.NET (页面
存 档备份,存 于互联网档案 馆) - ^ Akka.NET v1.4.10 Stable Release GitHub - akkadotnet/akka.net: Port of Akka actors for .NET., Akka.NET, 2020-10-01 [2020-10-01], (
原始 内容 存 档于2021-02-24) - ^ Apache Pekko. [2024-02-13]. (
原始 内容 存 档于2024-02-10). - ^ Apache Pekko (Incubating), Apache Software Foundation, [2024-02-13], (
原始 内容 存 档于2023-12-04) - ^ Remact.Net (页面
存 档备份,存 于互联网档案 馆) - ^ Ateji PX
- ^ czmq (页面
存 档备份,存 于互联网档案 馆) - ^ Korus (页面
存 档备份,存 于互联网档案 馆) - ^ Kilim (页面
存 档备份,存 于互联网档案 馆) - ^ Srinivasan, Sriram; Alan Mycroft. Kilim: Isolation-Typed Actors for Java (PDF). European Conference on Object Oriented Programming ECOOP 2008. Cyprus. 2008 [2016-02-25]. (
原始 内容 存 档 (PDF)于2020-10-28). - ^ Releases · kilim/kilim · GitHub. Github.com. [2019-06-03]. (
原始 内容 存 档于2020-10-16). - ^ ActorKit (页面
存 档备份,存 于互联网档案 馆) - ^ Commit History · stevedekorte/ActorKit · GitHub. Github.com. [2016-02-25].
- ^ Cloud Haskell[
失效 連結 ] - ^ Commit History · haskell-distributed/distributed-process · GitHub. Github.com. [2012-12-02]. (
原始 内容 存 档于2017-03-24). - ^ CloudI (页面
存 档备份,存 于互联网档案 馆) - ^ CloudI: A Cloud at the lowest level · Activity. sourceforge.net. [2024-01-03]. (
原始 内容 存 档于2024-01-04). - ^ Clutter (页面
存 档备份,存 于互联网档案 馆) - ^ Tags · GNOME/clutter · GitLab. gitlab.gnome.org. [2019-06-03]. (
原始 内容 存 档于2019-06-03). - ^ NAct (页面
存 档备份,存 于互联网档案 馆) - ^ Nact (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · ncthbrt/nact · GitHub. [2019-06-03]. (
原始 内容 存 档于2020-11-27). - ^ Retlang (页面
存 档备份,存 于互联网档案 馆) - ^ Changes - retlang - Message based concurrency in .NET - Google Project Hosting. [2016-02-25]. (
原始 内容 存 档于2015-11-24). - ^ JActor
- ^ Jetlang (页面
存 档备份,存 于互联网档案 馆) - ^ jetlang-0.2.9-bin.zip - jetlang - jetlang-0.2.9-bin.zip - Message based concurrency for Java - Google Project Hosting. 2012-02-14 [2016-02-25]. (
原始 内容 存 档于2016-01-14). - ^ Haskell-Actor (页面
存 档备份,存 于互联网档案 馆) - ^ GPars (页面
存 档备份,存 于互联网档案 馆) - ^ GPars Releases. GitHub. [2016-02-25]. (
原始 内容 存 档于2020-09-04). - ^ OOSMOS (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · oosmos/oosmos · GitHub. GitHub. [2019-06-03]. (
原始 内容 存 档于2020-11-13). - ^ Panini (页面
存 档备份,存 于互联网档案 馆) - ^ PARLEY
- ^ Peernetic
- ^ PostSharp (页面
存 档备份,存 于互联网档案 馆) - ^ Pulsar (页面
存 档备份,存 于互联网档案 馆) - ^ Pulsar Design and Actors. (
原始 内容 存 档于2015-07-04). - ^ Pulsar (页面
存 档备份,存 于互联网档案 馆) - ^ Pulsar documentation. (
原始 内容 存 档于2013-07-26). - ^ Pykka (页面
存 档备份,存 于互联网档案 馆) - ^ Changes – Pykka 2.0.0 documentation. pykka.org. [2019-06-03]. (
原始 内容 存 档于2021-02-05). - ^ Termite Scheme (页面
存 档备份,存 于互联网档案 馆) - ^ Theron
- ^ Theron – Ashton Mason. [2018-08-29]. (
原始 内容 存 档于2019-03-31). - ^ Theron - Version 6.00.02 released. Theron-library.com. [2016-02-25]. (
原始 内容 存 档于2016-03-16). - ^ Theron. Theron-library.com. [2016-02-25]. (
原始 内容 存 档于2016-03-04). - ^ Thespian (页面
存 档备份,存 于互联网档案 馆) - ^ Quasar (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · puniverse/quasar · GitHub. [2019-06-03]. (
原始 内容 存 档于2020-12-15). - ^ Libactor (页面
存 档备份,存 于互联网档案 馆) - ^ Actor-CPP (页面
存 档备份,存 于互联网档案 馆) - ^ Changes - actor-cpp - An implementation of the actor model for C++ - Google Project Hosting. [2012-12-02]. (
原始 内容 存 档于2015-11-18). - ^ S4 (页面
存 档备份,存 于互联网档案 馆) - ^ Commit History · s4/s4 · Apache. apache.org. [2016-01-16]. (
原始 内容 存 档于2016-03-06). - ^ C++ Actor Framework (CAF) (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · actor-framework/actor-framework · GitHub. Github.com. [2020-03-07]. (
原始 内容 存 档于2021-03-26). - ^ Celluloid (页面
存 档备份,存 于互联网档案 馆) - ^ celluloid | RubyGems.org | your community gem host. RubyGems.org. [2019-06-03]. (
原始 内容 存 档于2020-09-29). - ^ LabVIEW Actor Framework
- ^ Community: Actor Framework, LV 2011 revision (version 3.0.7). Decibel.ni.com. 2011-09-23 [2016-02-25]. (
原始 内容 存 档于2016-10-13). - ^ National Instruments SLA (页面
存 档备份,存 于互联网档案 馆) - ^ LabVIEW Messenger Library (页面
存 档备份,存 于互联网档案 馆) - ^ Otavia. [2024-02-13]. (
原始 内容 存 档于2024-01-10). - ^ Orbit (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · orbit/orbit · GitHub. GitHub. [2019-06-03].
- ^ QP Real-Time Embedded Frameworks & Tools - Browse Files at. Sourceforge.net. [2019-06-03]. (
原始 内容 存 档于2021-02-24). - ^ libprocess (页面
存 档备份,存 于互联网档案 馆) - ^ SObjectizer (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · Stiffstream/sobjectizer · GitHub. GitHub. [2022-05-11]. (
原始 内容 存 档于2020-10-19). - ^ rotor (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · basiliscos/cpp-rotor· GitHub. GitHub. [2022-05-17]. (
原始 内容 存 档于2020-09-15). - ^ Orleans (页面
存 档备份,存 于互联网档案 馆) - ^ Releases · dotnet/orleans · GitHub. GitHub. [2022-09-21]. (
原始 内容 存 档于2020-12-04). - ^ Skynet (页面
存 档备份,存 于互联网档案 馆) - ^ Reactors.IO (页面
存 档备份,存 于互联网档案 馆) - ^ libagents (页面
存 档备份,存 于互联网档案 馆) - ^ Proto.Actor (页面
存 档备份,存 于互联网档案 馆) - ^ FunctionalJava (页面
存 档备份,存 于互联网档案 馆) - ^ FunctionalJava releases. GitHub. [2018-08-23]. (
原始 内容 存 档于2021-01-15). - ^ Riker (页面
存 档备份,存 于互联网档案 馆) - ^ Comedy (页面
存 档备份,存 于互联网档案 馆) - ^ VLINGO XOOM Actors. [2021-01-15]. (
原始 内容 存 档于2020-11-29). - ^ wasmCloud. [2023-07-02]. (
原始 内容 存 档于2023-07-02). - ^ ray (页面
存 档备份,存 于互联网档案 馆) - ^ DOTNETACTORS. [2022-12-23]. (
原始 内容 存 档于2022-12-24). - ^ go-actor. [2022-12-23]. (
原始 内容 存 档于2022-12-23). - ^ Sento. [2022-12-23]. (
原始 内容 存 档于2023-04-05). - ^ Xcraft Goblins. [2022-12-23]. (
原始 内容 存 档于2023-06-07). - ^ Tarant. [2023-07-02]. (
原始 内容 存 档于2023-05-27). - ^ Armstrong, Joe. Erlang. Communications of the ACM. September 2010, 53 (9): 68–75 [2020-05-07]. doi:10.1145/1810891.1810910. (
原始 内容 存 档于2020-06-09).Erlang is conceptually similar to the occam programming language, though it recasts the ideas of CSP in a functional framework and uses asynchronous message passing instead of the synchronous message passing in CSP.
- ^ Carl Hewitt. The repeated demise of logic programming and why it will be reincarnated. What Went Wrong and Why: Lessons from AI Research and Applications. Technical Report SS-06-08. AAAI Press. March 2006.
- ^ Milner, Robin. Elements of interaction. Communications of the ACM. 1993, 36: 78–89. doi:10.1145/151233.151240.
- ^ How Twitter Is Scaling « Waiming Mok's Blog. Waimingmok.wordpress.com. 2009-06-27 [2012-12-02]. (
原始 内容 存 档于2021-02-05). - ^ "Actor-Based Programming with the Asynchronous Agents Library (页面
存 档备份,存 于互联网档案 馆)" MSDN September 2010.
延伸 阅读
编辑
- Gul Agha. Actors: A Model of Concurrent Computation in Distributed Systems (页面
存 档备份,存 于互联网档案 馆). MIT Press 1985. - Paul Baran. On Distributed Communications Networks IEEE Transactions on Communications Systems. March 1964.
- William A. Woods. Transition network grammars for natural language analysis (页面
存 档备份,存 于互联网档案 馆) CACM. 1970. - Carl Hewitt. Procedural Embedding of Knowledge In Planner (页面
存 档备份,存 于互联网档案 馆) IJCAI 1971. - G.M. Birtwistle, Ole-Johan Dahl, B. Myhrhaug and Kristen Nygaard. SIMULA Begin Auerbach Publishers Inc, 1973.
- Carl Hewitt, et al. Actor Induction and Meta-evaluation Conference Record of ACM Symposium on Principles of Programming Languages, January 1974.
- Carl Hewitt, Behavioral Semantics of Nonrecursive Control Structure (页面
存 档备份,存 于互联网档案 馆) Proceedings of Colloque sur la Programmation, April 1974. - Irene Greif and Carl Hewitt. Actor Semantics of PLANNER-73 (页面
存 档备份,存 于互联网档案 馆) Conference Record of ACM Symposium on Principles of Programming Languages. January 1975. - Carl Hewitt. How to Use What You Know (页面
存 档备份,存 于互联网档案 馆) IJCAI. September, 1975. - Alan Kay and Adele Goldberg. Smalltalk-72 Instruction Manual. Xerox PARC Memo SSL-76-6. May 1976.
- Edsger Dijkstra. A discipline of programming Prentice Hall. 1976.
- Carl Hewitt and Henry Baker Actors and Continuous Functionals Proceeding of IFIP Working Conference on Formal Description of Programming Concepts. August 1–5, 1977.
- Carl Hewitt and Russ Atkinson. Synchronization in Actor Systems Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages. 1977
- Carl Hewitt and Russ Atkinson. Specification and Proof Techniques for Serializers (页面
存 档备份,存 于互联网档案 馆) IEEE Journal on Software Engineering. January 1979. - Ken Kahn. A Computational Theory of Animation (页面
存 档备份,存 于互联网档案 馆) MIT EECS Doctoral Dissertation. August 1979. - Carl Hewitt, Beppe Attardi, and Henry Lieberman. Delegation in Message Passing Proceedings of First International Conference on Distributed Systems Huntsville, AL. October 1979.
- Nissim Francez, C.A.R. Hoare, Daniel Lehmann, and Willem-Paul de Roever. Semantics of nondetermiism, concurrency, and communication Journal of Computer and System Sciences. December 1979.
- George Milne and Robin Milner. Concurrent processes and their syntax JACM. April 1979.
- Daniel Theriault. A Primer for the Act-1 Language MIT AI memo 672. April 1982.
- Daniel Theriault. Issues in the Design and Implementation of Act 2 (页面
存 档备份,存 于互联网档案 馆) MIT AI technical report 728. June 1983. - Henry Lieberman. An Object-Oriented Simulator for the Apiary Conference of the American Association for Artificial Intelligence, Washington, D. C., August 1983
- Carl Hewitt and Peter de Jong. Analyzing the Roles of Descriptions and Actions in Open Systems (页面
存 档备份,存 于互联网档案 馆) Proceedings of the National Conference on Artificial Intelligence. August 1983. - Carl Hewitt and Henry Lieberman. Design Issues in Parallel Architecture for Artificial Intelligence MIT AI memo 750. Nov. 1983.
- C.A.R. Hoare. Communicating Sequential Processes (页面
存 档备份,存 于互联网档案 馆) Prentice Hall. 1985. - Carl Hewitt. The Challenge of Open Systems Byte. April 1985. Reprinted in The foundation of artificial intelligence: a sourcebook Cambridge University Press. 1990.
- Carl Manning. Traveler: the actor observatory ECOOP 1987. Also appears in Lecture Notes in Computer Science, vol. 276.
- William Athas and Charles Seitz Multicomputers: message-passing concurrent computers (页面
存 档备份,存 于互联网档案 馆) IEEE Computer August 1988. - William Athas and Nanette Boden Cantor: An Actor Programming System for Scientific Computing in Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices.
- Jean-Pierre Briot. From objects to actors: Study of a limited symbiosis in Smalltalk-80 (页面
存 档备份,存 于互联网档案 馆) Rapport de Recherche 88-58, RXF-LITP, Paris, France, September 1988 - William Dally and Wills, D. Universal mechanisms for concurrency (页面
存 档备份,存 于互联网档案 馆) PARLE 1989. - W. Horwat, A. Chien, and W. Dally. Experience with CST: Programming and Implementation PLDI. 1989.
- Carl Hewitt. Towards Open Information Systems Semantics Proceedings of 10th International Workshop on Distributed Artificial Intelligence. October 23–27, 1990. Bandera, Texas.
- Akinori Yonezawa, Ed. ABCL: An Object-Oriented Concurrent System MIT Press. 1990.
- K. Kahn and Vijay A. Saraswat, "Actors as a special case of concurrent constraint (logic) programming", in SIGPLAN Notices, October 1990. Describes Janus.
- Carl Hewitt. Open Information Systems Semantics Journal of Artificial Intelligence. January 1991.
- Carl Hewitt and Jeff Inman. DAI Betwixt and Between: From "Intelligent Agents" to Open Systems Science (页面
存 档备份,存 于互联网档案 馆) IEEE Transactions on Systems, Man, and Cybernetics. Nov./Dec. 1991. - Carl Hewitt and Gul Agha. Guarded Horn clause languages: are they deductive and Logical? International Conference on Fifth Generation Computer Systems, Ohmsha 1988. Tokyo. Also in Artificial Intelligence at MIT, Vol. 2. MIT Press 1991.
- William Dally, et al. The Message-Driven Processor: A Multicomputer Processing Node with Efficient Mechanisms (页面
存 档备份,存 于互联网档案 馆) IEEE Micro. April 1992. - S. Miriyala, G. Agha, and Y.Sami. Visualizing actor programs using predicate transition nets (页面
存 档备份,存 于互联网档案 馆) Journal of Visual Programming. 1992. - Carl Hewitt and Carl Manning. Negotiation Architecture for Large-Scale Crisis Management AAAI-94 Workshop on Models of Conflict Management in Cooperative Problem Solving. Seattle, WA. Aug. 4, 1994.
- Carl Hewitt and Carl Manning. Synthetic Infrastructures for Multi-Agency Systems Proceedings of ICMAS '96. Kyoto, Japan. December 8–13, 1996.
- S. Frolund. Coordinating Distributed Objects: An Actor-Based Approach for Synchronization MIT Press. November 1996.
- W. Kim. ThAL: An Actor System for Efficient and Scalable Concurrent Computing (页面
存 档备份,存 于互联网档案 馆) PhD thesis. University of Illinois at Urbana Champaign. 1997. - Jean-Pierre Briot. Acttalk: A framework for object-oriented concurrent programming-design and experience 2nd France-Japan workshop. 1999.
- N. Jamali, P. Thati, and G. Agha. An actor based architecture for customizing and controlling agent ensembles (页面
存 档备份,存 于互联网档案 馆) IEEE Intelligent Systems. 14(2). 1999. - Don Box, David Ehnebuske, Gopal Kakivaya, Andrew Layman, Noah Mendelsohn, Henrik Nielsen, Satish Thatte, Dave Winer. Simple Object Access Protocol (SOAP) 1.1 W3C Note. May 2000.
- M. Astley, D. Sturman, and G. Agha. Customizable middleware for modular distributed software (页面
存 档备份,存 于互联网档案 馆) CACM. 44(5) 2001. - Edward Lee, S. Neuendorffer, and M. Wirthlin. Actor-oriented design of embedded hardware and software systems (页面
存 档备份,存 于互联网档案 馆) Journal of Circuits, Systems, and Computers. 2002. - P. Thati, R. Ziaei, and G. Agha. A Theory of May Testing for Actors Formal Methods for Open Object-based Distributed Systems. March 2002.
- P. Thati, R. Ziaei, and G. Agha. A theory of may testing for asynchronous calculi with locality and no name matching Algebraic Methodology and Software Technology. Springer Verlag. September 2002. LNCS 2422.
- Stephen Neuendorffer. Actor-Oriented Metaprogramming (页面
存 档备份,存 于互联网档案 馆) PhD Thesis. University of California, Berkeley. December, 2004 - Carl Hewitt (2006a) The repeated demise of logic programming and why it will be reincarnated What Went Wrong and Why: Lessons from AI Research and Applications. Technical Report SS-06-08. AAAI Press. March 2006.
- Carl Hewitt (2006b) What is Commitment? Physical, Organizational, and Social (页面
存 档备份,存 于互联网档案 馆) COIN@AAMAS. April 27, 2006b. - Carl Hewitt (2007a) What is Commitment? Physical, Organizational, and Social (Revised) Pablo Noriega .et al. editors. LNAI 4386. Springer-Verlag. 2007.
- Carl Hewitt (2007b) Large-scale Organizational Computing requires Unstratified Paraconsistency and Reflection (页面
存 档备份,存 于互联网档案 馆) COIN@AAMAS'07. - D. Charousset, T. C. Schmidt, R. Hiesgen and M. Wählisch. Native actors: a scalable software platform for distributed, heterogeneous environments in AGERE! '13 Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control.