Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Actor model

From Wikipedia, the free encyclopedia
Model of concurrent computation

Theactor model incomputer science is amathematical model ofconcurrent computation that treats anactor as the basic building block of concurrent computation. In response to amessage it receives, an actor can: make local decisions, create more actors, send more messages, and determine how to respond to the next message received. Actors may modify their ownprivate state, but can only affect each other indirectly through messaging (removing the need forlock-based synchronization).

The actor model originated in 1973.[1] It has been used both as a framework for atheoretical understanding ofcomputation and as the theoretical basis for severalpractical implementations ofconcurrent systems. The relationship of the model to other work is discussed inactor model and process calculi.

History

[edit]
Main article:History of the Actor model

According toCarl Hewitt, unlike previous models of computation, the actor model was inspired byphysics, includinggeneral relativity andquantum mechanics.[citation needed] It was also influenced by the programming languagesLisp,Simula, early versions ofSmalltalk,capability-based systems, andpacket switching.

Its development was "motivated by the prospect of highlyparallel computing machines consisting of dozens, hundreds, or even thousands of independentmicroprocessors, each with its own local memory andcommunications processor, communicating via a high-performancecommunications network."[2] Since that time, the advent of massive concurrency throughmulti-core andmanycorecomputer architectures has revived interest in the actor model.

Following Hewitt, Bishop, and Steiger's 1973 publication,Irene Greif developed anoperational semantics for the actor model as part of herdoctoral research.[3] Two years later,Henry Baker and Hewitt published a set of axiomatic laws for actor systems.[4][5] Other major milestones includeWilliam Clinger's 1981 dissertation introducing adenotational semantics based onpower domains[2] andGul Agha's 1985 dissertation which further developed a transition-based semantic model complementary to Clinger's.[6] This resulted in the full development ofactor model theory.

Major softwareimplementation work was done by Russ Atkinson, Giuseppe Attardi, Henry Baker, Gerry Barber, Peter Bishop, Peter de Jong, Ken Kahn,Henry Lieberman, Carl Manning, Tom Reinhardt, Richard Steiger and Dan Theriault in the Message Passing Semantics Group atMassachusetts Institute of Technology (MIT). Research groups led by Chuck Seitz atCalifornia Institute of Technology (Caltech) andBill Dally at MIT constructed computer architectures that further developed the message passing in the model. SeeActor model implementation.

Research on the actor model has been carried out atCalifornia Institute of Technology,Kyoto University Tokoro Laboratory,Microelectronics and Computer Technology Corporation (MCC),MIT Artificial Intelligence Laboratory,SRI,Stanford University,University of Illinois at Urbana–Champaign,[7]Pierre and Marie Curie University (University of Paris 6),University of Pisa,University of Tokyo Yonezawa Laboratory,Centrum Wiskunde & Informatica (CWI) and elsewhere.

Fundamental concepts

[edit]

The actor model adopts the philosophy thateverything is an actor. This is similar to theeverything is an object philosophy used by someobject-oriented programming languages.

An actor is a computational entity that, in response to a message it receives, can concurrently:

  • send a finite number of messages to other actors;
  • create a finite number of new actors;
  • designate the behavior to be used for the next message it receives.

There is no assumed sequence to the above actions and they could be carried out in parallel.

Decoupling the sender from communications sent was a fundamental advance of the actor model enablingasynchronous communication and control structures as patterns ofpassing messages.[8]

Recipients of messages are identified by address, sometimes called "mailing address". Thus an actor can only communicate with actors whose addresses it has. It can obtain those from a message it receives, or if the address is for an actor it has itself created.

The actor model is characterized by inherent concurrency of computation within and among actors, dynamic creation of actors, inclusion of actor addresses in messages, and interaction only through direct asynchronousmessage passing with no restriction on message arrival order.

Formal systems

[edit]

Over the years, several different formal systems have been developed which permit reasoning about systems in the actor model. These include:

There are also formalisms that are not fully faithful to the actor model in that they do not formalize the guaranteed delivery of messages including the following (SeeAttempts to relate actor semantics to algebra and linear logic):

Applications

[edit]

The actor model can be used as a framework for modeling, understanding, and reasoning about a wide range ofconcurrent systems.[15] For example:

  • Electronic mail (email) can be modeled as an actor system. Accounts are modeled as actors andemail addresses as actor addresses.
  • Web services can be modeled as actors with Simple Object Access Protocol (SOAP) endpoints modeled as actor addresses.
  • Objects withlocks (e.g., as inJava andC#) can be modeled as aserializer, provided that their implementations are such that messages can continually arrive (perhaps by being stored in an internalqueue). A serializer is an important kind of actor defined by the property that it is continually available to the arrival of new messages; every message sent to a serializer is guaranteed to arrive.[16]
  • Testing and Test Control Notation (TTCN), both TTCN-2 andTTCN-3, follows actor model rather closely. In TTCN actor is a test component: either parallel test component (PTC) or main test component (MTC). Test components can send and receive messages to and from remote partners (peer test components or test system interface), the latter being identified by its address. Each test component has a behaviour tree bound to it; test components run in parallel and can be dynamically created by parent test components. Built-in language constructs allow the definition of actions to be taken when an expected message is received from the internal message queue, like sending a message to another peer entity or creating new test components.

Message-passing semantics

[edit]

The actor model is about the semantics ofmessage passing.

Unbounded nondeterminism controversy

[edit]

Arguably, the first concurrent programs wereinterrupt handlers. During the course of its normal operation a computer needed to be able to receive information from outside (characters from a keyboard, packets from a network,etc). So when the information arrived the execution of the computer wasinterrupted and special code (called an interrupt handler) was called to put the information in adata buffer where it could be subsequently retrieved.

In the early 1960s, interrupts began to be used to simulate the concurrent execution of several programs on one processor.[17] Having concurrency withshared memory gave rise to the problem ofconcurrency control. Originally, this problem was conceived as being one ofmutual exclusion on a single computer.Edsger Dijkstra developedsemaphores and later, between 1971 and 1973,[18]Tony Hoare[19] andPer Brinch Hansen[20] developedmonitors to solve the mutual exclusion problem. However, neither of these solutions provided a programming language construct that encapsulated access to shared resources. This encapsulation was later accomplished by the serializer construct ([Hewitt and Atkinson 1977, 1979] and [Atkinson 1980]).

The first models of computation (e.g.,Turing machines, Post productions, thelambda calculus,etc.) were based on mathematics and made use of a global state to represent a computationalstep (later generalized in [McCarthy and Hayes 1969] and [Dijkstra 1976] seeEvent orderings versus global state). Each computational step was from one global state of the computation to the next global state. The global state approach was continued inautomata theory forfinite-state machines and push downstack machines, including theirnondeterministic versions. Such nondeterministic automata have the property ofbounded nondeterminism; that is, if a machine always halts when started in its initial state, then there is a bound on the number of states in which it halts.

Edsger Dijkstra further developed the nondeterministic global state approach. Dijkstra's model gave rise to a controversy concerningunbounded nondeterminism (also calledunbounded indeterminacy), a property ofconcurrency by which the amount of delay in servicing a request can become unbounded as a result of arbitration of contention for shared resourceswhile still guaranteeing that the request will eventually be serviced. Hewitt argued that the actor model should provide the guarantee of service. In Dijkstra's model, although there could be an unbounded amount of time between the execution of sequential instructions on a computer, a (parallel) program that started out in a well defined state could terminate in only a bounded number of states [Dijkstra 1976]. Consequently, his model could not provide the guarantee of service. Dijkstra argued that it was impossible to implement unbounded nondeterminism.

Hewitt argued otherwise: there is no bound that can be placed on how long it takes a computational circuit called anarbiter to settle (seemetastability (electronics)).[21] Arbiters are used in computers to deal with the circumstance that computer clocks operate asynchronously with respect to input from outside,e.g., keyboard input, disk access, network input,etc. So it could take an unbounded time for a message sent to a computer to be received and in the meantime the computer could traverse an unbounded number of states.

The actor model features unbounded nondeterminism which was captured in a mathematical model byWill Clinger usingdomain theory.[2] In the actor model, there is no global state.[dubiousdiscuss]

Direct communication and asynchrony

[edit]

Messages in the actor model are not necessarily buffered. This was a sharp break with previous approaches to models of concurrent computation. The lack of buffering caused a great deal of misunderstanding at the time of the development of the actor model and is still a controversial issue. Some researchers argued that the messages are buffered in the "ether" or the "environment". Also, messages in the actor model are simply sent (likepackets inIP); there is no requirement for a synchronous handshake with the recipient.

Actor creation plus addresses in messages means variable topology

[edit]

A natural development of the actor model was to allow addresses in messages. Influenced bypacket switched networks [1961 and 1964], Hewitt proposed the development of a new model of concurrent computation in which communications would not have any required fields at all: they could be empty. Of course, if the sender of a communication desired a recipient to have access to addresses which the recipient did not already have, the address would have to be sent in the communication.

For example, an actor might need to send a message to a recipient actor from which it later expects to receive a response, but the response will actually be handled by a third actor component that has been configured to receive and handle the response (for example, a different actor implementing theobserver pattern). The original actor could accomplish this by sending a communication that includes the message it wishes to send, along with the address of the third actor that will handle the response. This third actor that will handle the response is called theresumption (sometimes also called acontinuation orstack frame). When the recipient actor is ready to send a response, it sends the response message to theresumption actor address that was included in the original communication.

So, the ability of actors to create new actors with which they can exchange communications, along with the ability to include the addresses of other actors in messages, gives actors the ability to create and participate in arbitrarily variable topological relationships with one another, much as the objects in Simula and other object-oriented languages may also be relationally composed into variable topologies of message-exchanging objects.

Inherently concurrent

[edit]

As opposed to the previous approach based on composing sequential processes, the actor model was developed as an inherently concurrent model. In the actor model sequentiality was a special case that derived from concurrent computation as explained inactor model theory.

No requirement on order of message arrival

[edit]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(March 2012) (Learn how and when to remove this message)

Hewitt argued against adding the requirement that messages must arrive in the order in which they are sent to the actor. If output message ordering is desired, then it can be modeled by a queue actor that provides this functionality. Such a queue actor would queue the messages that arrived so that they could be retrieved inFIFO order. So if an actorX sent a messageM1 to an actorY, and laterX sent another messageM2 toY, there is no requirement thatM1 arrives atY beforeM2.

In this respect the actor model mirrorspacket switching systems which do not guarantee that packets must be received in the order sent. Not providing the order of delivery guarantee allows packet switching to buffer packets, use multiple paths to send packets, resend damaged packets, and to provide other optimizations.

For more example, actors are allowed to pipeline the processing of messages. What this means is that in the course of processing a messageM1, an actor can designate the behavior to be used to process the next message, and then in fact begin processing another messageM2 before it has finished processingM1. Just because an actor is allowed to pipeline the processing of messages does not mean that itmust pipeline the processing. Whether a message is pipelined is an engineering tradeoff. How would an external observer know whether the processing of a message by an actor has been pipelined? There is no ambiguity in the definition of an actor created by the possibility of pipelining. Of course, it is possible to perform the pipeline optimization incorrectly in some implementations, in which case unexpected behavior may occur.

Locality

[edit]

Another important characteristic of the actor model is locality.

Locality means that in processing a message, an actor can send messages only to addresses that it receives in the message, addresses that it already had before it received the message, and addresses for actors that it creates while processing the message. (But seeSynthesizing addresses of actors.)

Also locality means that there is no simultaneous change in multiple locations. In this way it differs from some other models of concurrency,e.g., thePetri net model in which tokens are simultaneously removed from multiple locations and placed in other locations.

Composing actor systems

[edit]

The idea of composing actor systems into larger ones is an important aspect ofmodularity that was developed in Gul Agha's doctoral dissertation,[6] developed later by Gul Agha, Ian Mason, Scott Smith, andCarolyn Talcott.[9]

Behaviors

[edit]

A key innovation was the introduction ofbehavior specified as a mathematical function to express what an actor does when it processes a message, including specifying a new behavior to process the next message that arrives. Behaviors provided a mechanism to mathematically model the sharing in concurrency.

Behaviors also freed the actor model from implementation details,e.g., the Smalltalk-72 token stream interpreter. However, the efficient implementation of systems described by the actor model requireextensive optimization. SeeActor model implementation for details.

Modeling other concurrency systems

[edit]

Other concurrency systems (e.g.,process calculi) can be modeled in the actor model using atwo-phase commit protocol.[22]

Computational Representation Theorem

[edit]
See also:Denotational semantics of the Actor model

There is aComputational Representation Theorem in the actor model for systems which are closed in the sense that they do not receive communications from outside. The mathematical denotation denoted by a closed systemS{\displaystyle {\mathtt {S}}} is constructed from an initial behaviorS{\displaystyle \bot _{\mathtt {S}}} and a behavior-approximating functionprogressionS.{\displaystyle \mathbf {progression} _{\mathtt {S}}.} These obtain increasingly better approximations and construct a denotation (meaning) forS{\displaystyle {\mathtt {S}}} as follows [Hewitt 2008; Clinger 1981]:

DenoteSlimiprogressionSi(S){\displaystyle \mathbf {Denote} _{\mathtt {S}}\equiv \lim _{i\to \infty }\mathbf {progression} _{{\mathtt {S}}^{i}}(\bot _{\mathtt {S}})}

In this way,S{\displaystyle {\mathtt {S}}} can be mathematically characterized in terms of all its possible behaviors (including those involving unbounded nondeterminism). AlthoughDenoteS{\displaystyle \mathbf {Denote} _{\mathtt {S}}} is not an implementation ofS{\displaystyle {\mathtt {S}}}, it can be used to prove a generalization of the Church-Turing-Rosser-Kleene thesis [Kleene 1943]:

A consequence of the above theorem is that a finite actor can nondeterministically respond with anuncountable[clarify] number of different outputs.

Relationship to logic programming

[edit]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(March 2012) (Learn how and when to remove this message)

One of the key motivations for the development of the actor model was to understand and deal with the control structure issues that arose in development of thePlanner programming language.[citation needed] Once the actor model was initially defined, an important challenge was to understand the power of the model relative toRobert Kowalski's thesis that "computation can be subsumed by deduction". Hewitt argued that Kowalski's thesis turned out to be false for the concurrent computation in the actor model (seeIndeterminacy in concurrent computation).

Nevertheless, attempts were made to extendlogic programming to concurrent computation. However, Hewitt and Agha [1991] claimed that the resulting systems were not deductive in the following sense: computational steps of the concurrent logic programming systems do not follow deductively from previous steps (seeIndeterminacy in concurrent computation). Recently, logic programming has been integrated into the actor model in a way that maintains logical semantics.[21]

Migration

[edit]

Migration in the actor model is the ability of actors to change locations.E.g., in his dissertation, Aki Yonezawa modeled a post office that customer actors could enter, change locations within while operating, and exit. An actor that can migrate can be modeled by having a location actor that changes when the actor migrates. However the faithfulness of this modeling is controversial and the subject of research.[citation needed]

Security

[edit]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(August 2021) (Learn how and when to remove this message)

The security of actors can be protected in the following ways:

Synthesizing addresses of actors

[edit]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(March 2012) (Learn how and when to remove this message)

A delicate point in the actor model is the ability to synthesize the address of an actor. In some cases security can be used to prevent the synthesis of addresses (seeSecurity). However, if an actor address is simply a bit string then clearly it can be synthesized although it may be difficult or even infeasible to guess the address of an actor if the bit strings are long enough.SOAP uses aURL for the address of an endpoint where an actor can be reached. Since aURL is a character string, it can clearly be synthesized although encryption can make it virtually impossible to guess.

Synthesizing the addresses of actors is usually modeled using mapping. The idea is to use an actor system to perform the mapping to the actual actor addresses. For example, on a computer the memory structure of the computer can be modeled as an actor system that does the mapping. In the case ofSOAP addresses, it's modeling theDNS and the rest of theURL mapping.

Contrast with other models of message-passing concurrency

[edit]

Robin Milner's initial published work on concurrency[23] was also notable in that it was not based on composing sequential processes. His work differed from the actor model because it was based on a fixed number of processes of fixed topology communicating numbers and strings using synchronous communication. The originalcommunicating sequential processes (CSP) model[24] published byTony Hoare differed from the actor model because it was based on the parallel composition of a fixed number of sequential processes connected in a fixed topology, and communicating using synchronous message-passing based on process names (seeActor model and process calculi history). Later versions of CSP abandoned communication based on process names in favor of anonymous communication via channels, an approach also used in Milner's work on thecalculus of communicating systems (CCS) and theπ-calculus.

These early models by Milner and Hoare both had the property of bounded nondeterminism. Modern, theoretical CSP ([Hoare 1985] and [Roscoe 2005]) explicitly provides unbounded nondeterminism.

Petri nets and their extensions (e.g., coloured Petri nets) are like actors in that they are based on asynchronous message passing and unbounded nondeterminism, while they are like early CSP in that they define fixed topologies of elementary processing steps (transitions) and message repositories (places).

Influence

[edit]

The actor model has been influential on both theory development and practical software development.

Theory

[edit]

The actor model has influenced the development of theπ-calculus and subsequentprocess calculi. In his Turing lecture, Robin Milner wrote:[25]

Now, the pure lambda-calculus is built with just two kinds of thing: terms and variables. Can we achieve the same economy for a process calculus? Carl Hewitt, with his actors model, responded to this challenge long ago; he declared that a value, an operator on values, and a process should all be the same kind of thing: an actor.

This goal impressed me, because it implies the homogeneity and completeness of expression ... But it was long before I could see how to attain the goal in terms of an algebraic calculus...

So, in the spirit of Hewitt, our first step is to demand that all things denoted by terms or accessed by names—values, registers, operators, processes, objects—are all of the same kind of thing; they should all be processes.

Practice

[edit]

The actor model has had extensive influence on commercial practice. For example, Twitter has used actors for scalability.[26] Also, Microsoft has used the actor model in the development of its Asynchronous Agents Library.[27] There are multiple other actor libraries listed in the actor libraries and frameworks section below.

Addressed issues

[edit]

According to Hewitt [2006], the actor model addresses issues in computer and communications architecture,concurrent programming languages, andWeb services including the following:

  • Scalability: the challenge of scaling up concurrency both locally and nonlocally.
  • Transparency: bridging the chasm between local and nonlocal concurrency. Transparency is currently a controversial issue. Some researchers[who?] have advocated a strict separation between local concurrency using concurrent programming languages (e.g.,Java andC#) from nonlocal concurrency usingSOAP forWeb services. Strict separation produces a lack of transparency that causes problems when it is desirable/necessary to change between local and nonlocal access to Web services (seeDistributed computing).
  • Inconsistency: inconsistency is the norm because all large knowledge systems about human information system interactions are inconsistent. This inconsistency extends to the documentation and specifications of large systems (e.g., Microsoft Windows software, etc.), which are internally inconsistent.

Many of the ideas introduced in the actor model are now also finding application inmulti-agent systems for these same reasons [Hewitt 2006b 2007b]. The key difference is that agent systems (in most definitions) impose extra constraints upon the actors, typically requiring that they make use of commitments and goals.

Programming with actors

[edit]

A number of different programming languages employ the actor model or some variation of it. These languages include:

Early actor programming languages

[edit]

Later actor programming languages

[edit]

Actor libraries and frameworks

[edit]

Actor libraries or frameworks have also been implemented to permit actor-style programming in languages that don't have actors built-in. Some of these frameworks are:

NameStatusLatest releaseLicenseLanguages
ex_actorActive2025-10-23Apache 2.0C++20
OtaviaActive2024-01-02Apache 2.0Scala
Goblins-RacketGoblins-GuileActive2024-12-10Apache 2.0Racket, Guile Scheme
AbstractorActive2024-03-04Apache 2.0Java
Xcraft GoblinsActive2022-08-30MITJavaScript
ReActedActive2022-11-30Apache 2.0Java
ActeurActive2020-04-16[47]Apache-2.0 /MITRust
BastionActive2020-08-12[48]Apache-2.0 / MITRust
ActixActive2020-09-11[49]MITRust
AojetActive2016-10-17MITSwift
ActorActive2017-03-09MITJava
Actor4jActive2020-01-31Apache 2.0Java
ActrActive2019-04-09[50]Apache 2.0Java
Vert.xActive2018-02-13Apache 2.0Java, Groovy, JavaScript, Ruby, Scala, Kotlin, Ceylon
ActorFxInactive2013-11-13Apache 2.0.NET
Akka (toolkit) from Lightbend Inc.Active2022-09-06[51]Commercial[52] (from 2.7.0,Apache 2.0 up to 2.6.20)Java and Scala
Akka.NETActive2020-08-20[53]Apache 2.0.NET
Apache Pekko is fork of the Akka from version 2.6.xActive2023-07-26[54]Apache 2.0Java andScala
DaprActive2019-10-16Apache 2.0Java, .NET Core, Go, JavaScript, Python, Rust and C++
DOTNETACTORSActive2021-06-14MIT.NET, C#, Azure Service Bus
Remact.NetInactive2016-06-26MIT.NET, JavaScript
Ateji PXInactive??Java
czmqActive2016-11-10MPL-2C
F# MailboxProcessorActivesame as F# (built-in core library)Apache LicenseF#
KorusActive2010-02-04GPL 3Java
Kilim[55]Active2018-11-09[56]MITJava
ActorFoundry (based on Kilim)Inactive2008-12-28?Java
ActorKitActive2011-09-13[57]BSDObjective-C
Cloud HaskellActive2024-04-30[58]BSDHaskell
CloudIActive2023-10-27[59]MITATS, C/C++, Elixir/Erlang/LFE, Go, Haskell, Java, JavaScript, OCaml, Perl, PHP, Python, Ruby, Rust
ClutterActive2017-05-12[60] LGPL 2.1C, C++ (cluttermm), Python (pyclutter), Perl (perl-Clutter)
NActInactive2012-02-28 LGPL 3.0.NET
NactArchived 2021-02-05 at theWayback MachineActive2018-06-06[61]Apache 2.0JavaScript/ReasonML
RetlangInactive2011-05-18[62]New BSD.NET
JActorInactive2013-01-22LGPLJava
JetlangActive2013-05-30[63]New BSDJava
Haskell-ActorActive?2008New BSDHaskell
GParsActive2014-05-09[64]Apache 2.0Groovy
OOSMOSActive2019-05-09[65]GPL 2.0 and commercial (dual licensing)C. C++ friendly
PaniniActive2014-05-22MPL 1.1Programming Language by itself
PARLEYActive?2007-22-07GPL 2.1Python
PeerneticActive2007-06-29LGPL 3.0Java
PicosActive2020-02-04MITKRL
PostSharpActive2014-09-24Commercial /Freemium.NET
PulsarActive2016-07-09[66]New BSDPython
PulsarActive2016-02-18[67]LGPL/EclipseClojure
PykkaActive2019-05-07[68]Apache 2.0Python
Termite SchemeActive?2009-05-21LGPLScheme (Gambit implementation)
TheronInactive[69]2014-01-18[70]MIT[71]C++
ThespianActive2020-03-10MITPython
QuasarActive2018-11-02[72]LGPL/EclipseJava
LibactorActive?2009 GPL 2.0C
Actor-CPPActive2012-03-10[73]GPL 2.0C++
S4Inactive2012-07-31[74]Apache 2.0Java
C++ Actor Framework (CAF)Active2020-02-08[75]Boost Software License 1.0 andBSD 3-ClauseC++11
CelluloidActive2018-12-20[76]MITRuby
LabVIEW Actor FrameworkActive2012-03-01[77]National Instruments SLALabVIEW
LabVIEW Messenger LibraryActive2021-05-24BSDLabVIEW
OrbitActive2019-05-28[78]New BSDJava
QP frameworks for real-time embedded systemsActive2019-05-25[79]GPL 2.0 and commercial (dual licensing)C and C++
libprocessActive2013-06-19Apache 2.0C++
SObjectizerActive2024-11-02[80]New BSDC++17
rotorActive2025-01-26[81]MIT LicenseC++17
OrleansActive2023-07-11[82]MIT LicenseC#/.NET
SkynetActive2020-12-10MIT LicenseC/Lua
Reactors.IOActive2016-06-14BSD LicenseJava/Scala
libagentsActive2020-03-08Free software licenseC++11
Proto.ActorActive2021-01-05Free software licenseGo, C#, Python, JavaScript, Kotlin
FunctionalJavaArchived 2021-04-22 at theWayback MachineActive2018-08-18[83]BSD 3-ClauseJava
RikerActive2019-01-04MIT LicenseRust
ComedyActive2019-03-09EPL 1.0JavaScript
VLINGO XOOM ActorsActive2023-02-15Mozilla Public License 2.0Java, Kotlin, JVM languages, C# .NET
wasmCloudActive2021-03-23Apache 2.0WebAssembly (Rust, TinyGo, Zig, AssemblyScript)
rayActive2020-08-27Apache 2.0Python
cellActive2012-08-02New BSD LicensePython
go-actorActive2022-08-16MIT LicenseGo
SentoActive2022-11-21Apache 2.0Common Lisp
TarantActive2023-04-17MITTypeScript, JavaScript

See also

[edit]

References

[edit]
  1. ^Hewitt, Carl; Bishop, Peter; Steiger, Richard (1973). "A Universal Modular Actor Formalism for Artificial Intelligence". IJCAI.{{cite journal}}:Cite journal requires|journal= (help)
  2. ^abcdWilliam Clinger (June 1981). "Foundations of Actor Semantics". Mathematics Doctoral Dissertation. MIT.hdl:1721.1/6935.{{cite journal}}:Cite journal requires|journal= (help)
  3. ^abIrene Greif (August 1975). "Semantics of Communicating Parallel Processes". EECS Doctoral Dissertation. MIT.{{cite journal}}:Cite journal requires|journal= (help)
  4. ^abHenry Baker;Carl Hewitt (August 1977). "Laws for Communicating Parallel Processes". IFIP.{{cite journal}}:Cite journal requires|journal= (help)
  5. ^"Laws for Communicating Parallel Processes"(PDF). 10 May 1977.Archived(PDF) from the original on 24 June 2016. Retrieved11 June 2014.
  6. ^abcGul Agha (1986). "Actors: A Model of Concurrent Computation in Distributed Systems". Doctoral Dissertation. MIT Press.hdl:1721.1/6952.{{cite journal}}:Cite journal requires|journal= (help)
  7. ^"Home". Osl.cs.uiuc.edu. Archived fromthe original on 2013-02-22. Retrieved2012-12-02.
  8. ^Carl Hewitt.Viewing Control Structures as Patterns of Passing Messages Journal of Artificial Intelligence. June 1977.
  9. ^abGul Agha; Ian Mason; Scott Smith; Carolyn Talcott (January 1993). "A Foundation for Actor Computation".Journal of Functional Programming.
  10. ^Carl Hewitt (2006-04-27)."What is Commitment? Physical, Organizational, and Social"(PDF).Archived(PDF) from the original on 2021-02-11. Retrieved2006-05-26.{{cite journal}}:Cite journal requires|journal= (help)
  11. ^Mauro Gaspari; Gianluigi Zavattaro (May 1997)."An Algebra of Actors"(PDF).Formal Methods for Open Object-Based Distributed Systems. Technical Report UBLCS-97-4. University of Bologna. pp. 3–18.doi:10.1007/978-0-387-35562-7_2.ISBN 978-1-4757-5266-3.Archived(PDF) from the original on 2018-07-26. Retrieved2019-04-08.
  12. ^M. Gaspari; G. Zavattaro (1999). "An Algebra of Actors". Formal Methods for Open Object Based Systems.{{cite journal}}:Cite journal requires|journal= (help)
  13. ^Gul Agha; Prasanna Thati (2004)."An Algebraic Theory of Actors and Its Application to a Simple Object-Based Language"(PDF). From OO to FM (Dahl Festschrift) LNCS 2635. Archived fromthe original(PDF) on 2004-04-20.{{cite journal}}:Cite journal requires|journal= (help)
  14. ^John Darlington; Y. K. Guo (1994). "Formalizing Actors in Linear Logic". International Conference on Object-Oriented Information Systems.{{cite journal}}:Cite journal requires|journal= (help)
  15. ^"What is the Actor Model & When Should You Use it?".Matt Ferderer.Archived from the original on 2021-08-25. Retrieved2021-08-25.
  16. ^Cheung, Leo (2017-07-25)."Why Akka and the actor model shine for IoT applications".InfoWorld.Archived from the original on 2021-08-25. Retrieved2021-08-25.
  17. ^Hansen, Per Brinch (2002).The Origins of Concurrent Programming: From Semaphores to Remote Procedure Calls. Springer.ISBN 978-0-387-95401-1.
  18. ^Hansen, Per Brinch (1996). "Monitors and Concurrent Pascal: A Personal History".Communications of the ACM:121–172.
  19. ^Hoare, Tony (October 1974)."Monitors: An Operating System Structuring Concept".Communications of the ACM.17 (10):549–557.doi:10.1145/355620.361161.S2CID 1005769.
  20. ^Hansen, Per Brinch (July 1973).Operating System Principles. Prentice-Hall.
  21. ^abHewitt, Carl (2012). "What is computation? Actor Model versus Turing's Model". In Zenil, Hector (ed.).A Computable Universe: Understanding Computation & Exploring Nature as Computation. Dedicated to the memory of Alan M. Turing on the 100th anniversary of his birth. World Scientific Publishing Company.
  22. ^Frederick Knabe.A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992Archived 2017-08-31 at theWayback Machine.
  23. ^Robin Milner. Processes: A Mathematical Model of Computing Agents in Logic Colloquium 1973.
  24. ^C.A.R. Hoare.Communicating sequential processes CACM. August 1978.
  25. ^Milner, Robin (1993)."Elements of interaction".Communications of the ACM.36:78–89.doi:10.1145/151233.151240.
  26. ^"How Twitter Is Scaling « Waiming Mok's Blog". Waimingmok.wordpress.com. 2009-06-27.Archived from the original on 2021-02-05. Retrieved2012-12-02.
  27. ^"Actor-Based Programming with the Asynchronous Agents LibraryArchived 2017-08-31 at theWayback Machine" MSDN September 2010.
  28. ^Henry Lieberman (June 1981). "A Preview of Act 1". MIT AI memo 625.hdl:1721.1/6350.{{cite journal}}:Cite journal requires|journal= (help)
  29. ^Henry Lieberman (June 1981). "Thinking About Lots of Things at Once without Getting Confused: Parallelism in Act 1". MIT AI memo 626.hdl:1721.1/6351.{{cite journal}}:Cite journal requires|journal= (help)
  30. ^Jean-Pierre Briot.Acttalk: A framework for object-oriented concurrent programming-design and experience 2nd France-Japan workshop. 1999.Archived 2018-06-28 at theWayback Machine
  31. ^Ken Kahn.A Computational Theory of AnimationArchived 2017-08-18 at theWayback Machine MIT EECS Doctoral Dissertation. August 1979.
  32. ^William Athas and Nanette BodenCantor: An Actor Programming System for Scientific ComputingArchived 2019-04-08 at theWayback Machine in Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices.
  33. ^Darrell Woelk.Developing InfoSleuth Agents Using Rosette: An Actor Based Language Proceedings of the CIKM '95 Workshop on Intelligent Information Agents. 1995.
  34. ^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
  35. ^Darryl K. Taft (2009-04-17)."Microsoft Cooking Up New Parallel Programming Language". Eweek.com. Archived fromthe original on July 29, 2012. Retrieved2012-12-02.
  36. ^"Humus". Dalnefre.com.Archived from the original on 2021-02-07. Retrieved2012-12-02.
  37. ^Brandauer, Stephan; et al. (2015). "Parallel objects for multicores: A glimpse at the parallel language encore".Formal Methods for Multicore Programming. Springer International Publishing:1–56.
  38. ^"The Pony Language".Archived from the original on 2018-09-04. Retrieved2016-03-21.
  39. ^Clebsch, Sylvan; Drossopoulou, Sophia; Blessing, Sebastian; McNeil, Andy (2015). "Deny capabilities for safe, fast actors".Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control - AGERE! 2015. pp. 1–12.doi:10.1145/2824815.2824816.ISBN 9781450339018.S2CID 415745. by Sylvan Clebsch, Sophia Drossopoulou, Sebastian Blessing, Andy McNeil
  40. ^"The P Language".GitHub. 2019-03-08.Archived from the original on 2021-01-15. Retrieved2017-02-01.
  41. ^"The P# Language".GitHub. 2019-03-12.Archived from the original on 2021-03-23. Retrieved2017-02-01.
  42. ^"class Ractor". Ruby-lang.org.Archived from the original on 2022-03-02. Retrieved2022-03-02.
  43. ^Varela, Carlos; Agha, Gul (2001). "Programming dynamically reconfigurable open systems with SALSA".ACM SIGPLAN Notices.36 (12):20–34.doi:10.1145/583960.583964.
  44. ^Philipp Haller and Martin Odersky (September 2006)."Event-Based Programming without Inversion of Control"(PDF). Proc. JMLC 2006.Archived(PDF) from the original on 2020-11-09. Retrieved2007-04-05.{{cite journal}}:Cite journal requires|journal= (help)
  45. ^Philipp Haller and Martin Odersky (January 2007)."Actors that Unify Threads and Events"(PDF). Technical report LAMP 2007. Archived fromthe original(PDF) on 2011-06-07. Retrieved2007-12-10.{{cite journal}}:Cite journal requires|journal= (help)
  46. ^"Swift Language Guide - Concurrency".Archived from the original on 1 March 2022. Retrieved11 March 2022.
  47. ^"acteur - 0.9.1· David Bonet · Crates.io". crates.io.Archived from the original on 2021-02-05. Retrieved2020-04-16.
  48. ^Bulut, Mahmut (2019-12-15)."Bastion on Crates.io".Crates.io.Archived from the original on 2021-02-05. Retrieved2019-12-15.
  49. ^"actix - 0.10.0· Rob Ede · Crates.io". crates.io.Archived from the original on 2021-05-14. Retrieved2021-02-28.
  50. ^"Releases · zakgof/actr · GitHub". Github.com.Archived from the original on 2020-10-26. Retrieved2019-04-16.
  51. ^"Akka 2.6.20 Released · Akka". Akka. 2022-09-06.Archived from the original on 2022-09-24. Retrieved2022-09-24.
  52. ^"Akka License FAQ | @lightbend".Archived from the original on 2022-09-22. Retrieved2022-09-24.
  53. ^Akka.NET v1.4.10 Stable ReleaseGitHub - akkadotnet/akka.net: Port of Akka actors for .NET., Akka.NET, 2020-10-01,archived from the original on 2021-02-24, retrieved2020-10-01
  54. ^Apache Pekko (Graduated), Apache Software Foundation
  55. ^Srinivasan, Sriram; Alan Mycroft (2008)."Kilim: Isolation-Typed Actors for Java"(PDF).European Conference on Object Oriented Programming ECOOP 2008. Cyprus.Archived(PDF) from the original on 2020-10-28. Retrieved2016-02-25.
  56. ^"Releases · kilim/kilim · GitHub". Github.com.Archived from the original on 2020-10-16. Retrieved2019-06-03.
  57. ^"Commit History · stevedekorte/ActorKit · GitHub". Github.com. Retrieved2016-02-25.
  58. ^"Hackage: The Haskell Package Repository".Hackage. Retrieved1 May 2024.
  59. ^"CloudI: A Cloud at the lowest level · Activity". sourceforge.net. Retrieved2024-01-03.
  60. ^"Tags · GNOME/clutter · GitLab". gitlab.gnome.org.Archived from the original on 2019-06-03. Retrieved2019-06-03.
  61. ^"Releases · ncthbrt/nact · GitHub".GitHub.Archived from the original on 2020-11-27. Retrieved2019-06-03.
  62. ^"Changes - retlang - Message based concurrency in .NET - Google Project Hosting".Archived from the original on 2015-11-24. Retrieved2016-02-25.
  63. ^"jetlang-0.2.9-bin.zip - jetlang - jetlang-0.2.9-bin.zip - Message based concurrency for Java - Google Project Hosting". 2012-02-14.Archived from the original on 2016-01-14. Retrieved2016-02-25.
  64. ^"GPars Releases". GitHub.Archived from the original on 2020-09-04. Retrieved2016-02-25.
  65. ^"Releases · oosmos/oosmos · GitHub". GitHub.Archived from the original on 2020-11-13. Retrieved2019-06-03.
  66. ^"Pulsar Design and Actors". Archived fromthe original on 2015-07-04.
  67. ^"Pulsar documentation". Archived fromthe original on 2013-07-26.
  68. ^"Changes – Pykka 2.0.0 documentation". pykka.org.Archived from the original on 2021-02-05. Retrieved2019-06-03.
  69. ^"Theron – Ashton Mason".Archived from the original on 2019-03-31. Retrieved2018-08-29.
  70. ^"Theron - Version 6.00.02 released". Theron-library.com. Archived from the original on 2016-03-16. Retrieved2016-02-25.
  71. ^"Theron". Theron-library.com. Archived from the original on 2016-03-04. Retrieved2016-02-25.
  72. ^"Releases · puniverse/quasar · GitHub".GitHub.Archived from the original on 2020-12-15. Retrieved2019-06-03.
  73. ^"Changes - actor-cpp - An implementation of the actor model for C++ - Google Project Hosting".Archived from the original on 2015-11-18. Retrieved2012-12-02.
  74. ^"Commit History · s4/s4 · Apache". apache.org. Archived fromthe original on 2016-03-06. Retrieved2016-01-16.
  75. ^"Releases · actor-framework/actor-framework · GitHub". Github.com.Archived from the original on 2021-03-26. Retrieved2020-03-07.
  76. ^"celluloid | RubyGems.org | your community gem host". RubyGems.org.Archived from the original on 2020-09-29. Retrieved2019-06-03.
  77. ^"Community: Actor Framework, LV 2011 revision (version 3.0.7)". Decibel.ni.com. 2011-09-23.Archived from the original on 2016-10-13. Retrieved2016-02-25.
  78. ^"Releases · orbit/orbit · GitHub". GitHub. Retrieved2019-06-03.
  79. ^"QP Real-Time Embedded Frameworks & Tools - Browse Files at". Sourceforge.net.Archived from the original on 2021-02-24. Retrieved2019-06-03.
  80. ^"Releases · Stiffstream/sobjectizer · GitHub". GitHub.Archived from the original on 2020-10-19. Retrieved2022-05-11.
  81. ^"Releases · basiliscos/cpp-rotor· GitHub". GitHub.Archived from the original on 2020-09-15. Retrieved2025-01-26.
  82. ^"Releases · dotnet/orleans · GitHub". GitHub.Archived from the original on 2020-12-04. Retrieved2022-09-21.
  83. ^"FunctionalJava releases". GitHub.Archived from the original on 2021-01-15. Retrieved2018-08-23.

Further reading

[edit]

External links

[edit]
Imperative
Structured
Object-oriented
(comparison,list)
Declarative
Functional
(comparison)
Dataflow
Logic
Domain-
specific
language

(DSL)
Concurrent,
distributed,
parallel
Metaprogramming
Separation
of concerns
Retrieved from "https://en.wikipedia.org/w/index.php?title=Actor_model&oldid=1319974342"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp