Actor model

Actors may modify their own private state, but can only affect each other indirectly through messaging (removing the need for lock-based synchronization).[citation needed] It was also influenced by the programming languages Lisp, Simula, early versions of Smalltalk, capability-based systems, and packet switching."[2] Since that time, the advent of massive concurrency through multi-core and manycore computer architectures has revived interest in the actor model.Following Hewitt, Bishop, and Steiger's 1973 publication, Irene Greif developed an operational semantics for the actor model as part of her doctoral research.[3] Two years later, Henry Baker and Hewitt published a set of axiomatic laws for actor systems.Major software implementation 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 at Massachusetts Institute of Technology (MIT).Research groups led by Chuck Seitz at California Institute of Technology (Caltech) and Bill Dally at MIT constructed computer architectures that further developed the message passing in the model.An actor is a computational entity that, in response to a message it receives, can concurrently: There is no assumed sequence to the above actions and they could be carried out in parallel.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).Hewitt argued otherwise: there is no bound that can be placed on how long it takes a computational circuit called an arbiter to settle (see metastability (electronics)).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.Also, messages in the actor model are simply sent (like packets in IP); there is no requirement for a synchronous handshake with the recipient.Influenced by packet 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, it is possible to perform the pipeline optimization incorrectly in some implementations, in which case unexpected behavior may occur.[22] There is a Computational Representation Theorem in the actor model for systems which are closed in the sense that they do not receive communications from outside., 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 an uncountable[clarify] number of different outputs.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 (see Indeterminacy in concurrent computation).E.g., in his dissertation, Aki Yonezawa modeled a post office that customer actors could enter, change locations within while operating, and exit.Robin Milner's initial published work on concurrency[23] was also notable in that it was not based on composing sequential processes.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).In his Turing lecture, Robin Milner wrote:[25] Now, the pure lambda-calculus is built with just two kinds of thing: terms and variables.According to Hewitt [2006], the actor model addresses issues in computer and communications architecture, concurrent programming languages, and Web services including the following: Many of the ideas introduced in the actor model are now also finding application in multi-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.
computer sciencemathematical modelconcurrent computationmessageprivate statelock-based synchronizationtheoretical understandingcomputationpractical implementationsconcurrent systemsactor model and process calculiHistory of the Actor modelCarl Hewittphysicsgeneral relativityquantum mechanicsSimulaSmalltalkcapability-based systemspacket switchingparallel computingmicroprocessorscommunications processorcommunications networkmulti-coremanycorecomputer architecturesIrene Greifoperational semanticsdoctoralHenry BakerWilliam Clinger'sdenotational semanticspower domainsGul Aghaactor model theoryimplementationHenry LiebermanMassachusetts Institute of TechnologyCalifornia Institute of TechnologyBill DallyActor model implementationKyoto UniversityMicroelectronics and Computer Technology CorporationMIT Artificial Intelligence LaboratoryStanford UniversityUniversity of Illinois at Urbana–ChampaignPierre and Marie Curie UniversityUniversity of PisaUniversity of TokyoCentrum Wiskunde & Informaticaobject-oriented programmingasynchronous communicationpassing messagesmessage passingLinear logicemail addressesWeb servicesTTCN-3interrupt handlersdata buffershared memoryconcurrency controlmutual exclusionEdsger DijkstrasemaphoresTony HoarePer Brinch HansenmonitorsserializerTuring machineslambda calculusautomata theoryfinite-state machinesstack machinesnondeterministicbounded nondeterminismunbounded nondeterminismconcurrencyarbitermetastability (electronics)Will Clingerdomain theorypacketspacket switched networksobserver patterncontinuationstack framePetri netmodularityCarolyn Talcottprocess calculitwo-phase commit protocolDenotational semantics of the Actor modelPlanner programming languageRobert KowalskiIndeterminacy in concurrent computationlogic programminghardwiringcomputer hardwareBurroughs B5000Lisp machinevirtual machinesJava virtual machineCommon Language Runtimeoperating systemssigningencryptionRobin Milnercommunicating sequential processescalculus of communicating systems (CCS)π-calculusPetri netsconcurrent programming languagesScalabilityTransparencyDistributed computingInconsistencymulti-agent systemsAmbientTalkCAL Actor LanguageElixirErlangFantomPtolemy ProjectRebeca Modeling LanguageSwift (programming language)LicenseApache 2.0Apache-2.0Apache-2.0 / MITAkka (toolkit)Apache License LGPL 2.1 LGPL 3.0Wayback MachineNew BSDGPL 2.0MPL 1.1GPL 2.1LGPL 3.0FreemiumEclipsePython GPL 2.0Boost Software License 1.0BSD 3-ClauseQP frameworks for real-time embedded systemsMIT LicenseBSD LicenseFree software licenseEPL 1.0Mozilla Public License 2.0New BSD LicenseAutonomous agentData flowGordon PaskInput/output automatonScientific community metaphorHewitt, CarlWilliam ClingerHansen, Per BrinchHoare, TonyGitHubIEEE Transactions on Communications SystemsOle-Johan DahlKristen NygaardNissim FrancezGeorge MilneC.A.R. HoareLecture Notes in Computer ScienceIEEE MicroJournal of Circuits, Systems, and ComputersYouTubeLightbend Inc.Programming paradigmsComparison by languageImperativeStructuredJackson structuresBlock-structuredModularNon-structuredProceduralProgramming in the large and in the smallDesign by contractInvariant-basedNested functionObject-orientedcomparisonClass-basedPrototype-basedObject-basedImmutable objectPersistentUniform Function Call SyntaxDeclarativeFunctionalRecursiveAnonymous functionPartial applicationHigher-orderPurely functionalStrictDependent typesFunctional logicPoint-free styleExpression-orientedApplicativeConcatenativeFunction-levelValue-levelDataflowFlow-basedReactiveFunctional reactiveSignalsStreamsSynchronousAbductive logicAnswer setConstraintConstraint logicInductive logicOntologyProbabilistic logicAlgebraic modelingAutomata-basedActionCommandSpacecraftDifferentiableEnd-userGrammar-orientedInterface descriptionLanguage-orientedList comprehensionLow-codeModelingNatural languageNon-English-basedPage descriptionfiltersProbabilisticQuantumScientificScriptingSet-theoreticSimulationStack-basedSystemTactileTemplatingTransformationGraph rewritingProductionPatternVisualConcurrentdistributedparallelAutomatic mutual exclusionChoreographic programmingConcurrent logicConcurrent constraint logicConcurrent OOMacroprogrammingMultitier programmingOrganic computingParallel programming modelsPartitioned global address spaceProcess-orientedRelativistic programmingService-orientedStructured concurrencyMetaprogrammingAttribute-orientedAutomaticInductiveDynamicExtensibleGenericHomoiconicityInteractiveHygienicMetalinguistic abstractionMulti-stageProgram synthesisBayesianInferentialby demonstrationby exampleReflectiveSelf-modifying codeSymbolicTemplateSeparationof concernsAspectsComponentsData-drivenData-orientedEvent-drivenFeaturesIntentionalLiterateSubjects