============================================================================== Special Series on Actors and Agents -- IEEE Concurrency Guest editors: Dennis Kafura and Jean-Pierre Briot INTRODUCTION The terms "actor" and "agent" are used widely in the literature on concurrent and distributed programming both because the underlying concepts to which they refer are fundamental, powerful, and interesting and also because these terms admit of varying interpretations in different technical settings. Historically, the terms "actor" and "agent" have a long association. In the definition of an actor, Hewitt wrote that an actor "is a computational agent which has a mail address and a behaviour." [Hewitt 1977]. Some initial study about the relations between actors and agents may be found in [Gasser and Briot 1992]. The ubiquity and malleability of these terms - the term "agent" in particular - are simultaneously a help and a hindrance to those who work in these areas and for us in organizing a series of papers on current research involving actors and agents. It is clearly helpful to avoid introducing new terminology for distinct, but closely related, concepts. However, confusion is fostered when the term has so many meanings that it is difficult to see the common thread which relates them. The intent of the special series of papers on current work with actors and agents is not to resolve the varying meanings of the terms actor and agent, but to illustrate the spectrum of possibilities, to identify some essential similarities among these concepts, and to indicate the relevance of actor and agent research to concurrency. WHAT IS AN ACTOR The actor model, defined originally by Hewitt [Hewitt 1977] and Agha [Agha 1986], is most often described in terms of an actor's structure and operation as shown in Figure 1. As shown, an actor is a message-processing entity that receives incoming messages at a mailbox whose "address" serves to name the actor. The reaction of an actor to a message is determined by the current behavior of the actor when the message is processed. The behavior is defined by a script. In processing a message, an actor may send messages to other actors whose address it knows, create new actors, and determine its own subsequent, or replacement, behavior that will process the next message from the actor's mailbox. Message passing is asynchronous, non-blocking, reliable, and subject to unbounded delay. Ordering and synchrony can be, and often are, introduced by additional constructs or implementation mechanisms. <
> Concurrency arises in the actor model in two ways: each actor can process its own messages concurrently with the message processing of other actors (inter-actor concurrency) and, within a single actor, the behavior processing one message may create its replacement to process concurrently another message (intra-actor concurrency). The actor model has made essential contributions to the general study of concurrent object-oriented programming [Kafura 1994] where the model has been interpreted and implemented in various object-oriented languages ranging from Smalltalk [Briot 1989, 1996] to C++ [Kafura et al. 1993] and has been a fundamental principle in the design of several experimental languages (e.g., ABCL [Yonezawa 1990]). Actor-based applications and systems have been developed for concurrent, parallel, and distributed programming on distributed memory parallel processors, single workstations, and networks of workstations. WHAT IS AN AGENT The breadth of the use of the term "agent" defines a simple or universally agreeable definition or even a comprehensive taxonomy. Several attempts at characterizing agents [Nwana 1996] [Wooldridge and Jennings 1995] list some of the numerous attributes associated with agents: autonomous (independence of action) continuous (persistence over time) intelligent (reasoning ability) mobile (across machine boundaries) personal (possessing a human-like persona) adaptable (able to learn) knowledgeable (about some domain) conversational (directed at a high-level) authoritative (has the rights of its human sponsor) collaborative (interacts with other agents and people) One agent taxonomy, due to Nwana, that involves some of these attributes is shown in Figure 2. <
> Of particular relevance to the subject of concurrency is agent mobility. The distributed programming features of Java have spawned numerous Java-based mobile agent systems such as Aglets, Concordia, Odyssey, and Voyager among others [White 1997]. The serialization, introspection, platform independence, and remote method invocation features of Java have accelerated the development and positioning of these systems as middleware in future systems development. Agents that appear in the user interface are often termed "assistants". An assistant is an agent to which a specific task can be delegated by a user. Such assistant may screen electronic mail, learn how to perform repetitive tasks, arrange meetings, gather information, and make recommendations based on preferences inferred by observing the user's previous actions or by relating the current user's request to similar requests by other users [Maes 1994]. Two deep issues surrounding the use of agents as assistants are those of of trustworthiness and control. In employing an autonomous assistant the user must trust the agent to act properly on his or her behalf. For example, to what extent does a user trust a mail screening agent that is empowered to delete messages believed by the agent to be of no interest to the user. Can an agent be trusted to have inferred properly how a user would deal with a given situation? By what means does the user gain confidence in the agent's abilities? Some argue that agent technology is too ill-defined to warrant giving control to the agent and that direct manipulation of passive resources is a safer and most productive viewpoint [Schneiderman 1997]. COMMON CHARACTERISTICS Despite their differences, actors and agents have certain characteristics in common: identity, autonomy, interaction, and coordination. Though these characteristics manifest themselves in different ways, they convey a sense of how agent-oriented or actor-oriented systems differ from system built on other principles. The flavor of systems composed of actors or agents is one of a loose confederation of peer entities rather than a rigidly structured configuration of fixed relationships. Different groups of actors or agents can be brought into contact without requiring reprogramming (flexible), new actors or agents can be dynamically created in response to changing conditions (adaptable), and a standard protocol for communication allows for interaction among actors and agents that are implemented in different languages or are executing on different systems (open). Identity Each actor or agent is assigned or assigns to itself an identity, a means of distinguishing itself from others. The identity provides a way by which others may refer to it and through which it may refer to itself. An identity is important because it is the foundation on which rests the ability to communicate and coordinate. The identity of an agent designed to interact with human users is particularly important as the user must have a meaningful way of referring to the agent. With actors, the "address" of the actor's "mail queue" serves as the identity, or name, of the actor itself; the actor's identity is determined by the fact that it is the entity that processes messages at a given mail destination. The identity of an agent may be determined by a name, as with actors, but may also be specified by a set of abilities possessed by the agent. Thus, an agent may advertise that it is capable of performing a collection of operations or services. Other agents seeking these services would be directed to the advertising agent. Autonomy Autonomy is reflected in at least three self-centered properties: actors and agents are self-contained, self-regulating, and self-directed. Self-contained implies that the actor or agent is equipped with all of the machinery to fulfill its responsibilities. While it may interact with others, there is an essential completeness to the capability of the actor or agent. Self-regulating means that the actor or agent is able to control how and when it reacts to requests. In some cases a request may be deferred when, for example, the state of the actor or agent does not permit it to safely attempt the requested action, or the request may be completely rejected if the requested actor or agent lacks the required capability or the requester lacks the required authority. Self-directed implies an ability to react to changing conditions, perhaps simply the passing of time, even in the absence of a specific request. In the mechanical sense this means that an actor or agent has an independent thread of control and in the logical sense has a programmed behavior which allows it to know or discover what action to take in the prevailing circumstances. In practice, actors tend to rely more on pre-programmed, deterministic behavior while agents include a dimension or reasoning, learning, or planning as part of their self-direction. The autonomy of an actor is often described as "reactive" while an agent is often described as "pro-active". The sense of these terms is that an actor is viewed as computing only in response to a given stimulus (e.g., an arriving message) while an agent may be viewed as having an agenda that it actively pursues over time independent of outside stimuli. Actually the agent community often uses the term "reactive agent" to describe a class of agents that simply react to stimuli (thus, very close to actors), as opposed to "intentional" or "deliberative" agents that model and reason about themselves, each other, and their environment (e.g., as in [Shoham 1993] or [Guessoum and Briot 1998]). Communication Communication is the basic means by which a large-scale computation arises from a collection of independent, autonomous entities. Consistent with their autonomy, communication is most frequently of an asynchronous, message-based form. The asynchrony of the communication naturally promotes concurrency while messaging naturally conforms to the communication structure of distributed memory parallel processors and to networks, including the Internet, of workstations. Standard distributed systems techniques allow actors and agents to operate in heterogeneous computing environments. The interaction among actors and agents need not be, and is often not, predetermined. Messages may contain identities - of the sender or of any other parties known to the sender. The receivers of such messages dynamically discover previously unknown partners with which they may thereafter communicate. In this way, systems of actors and agents more intuitively model human organizations and behavior in which new acquaintances are established and utilized as a natural part of their operation. An interesting difference between actors and agents is that the recipient of a message sent by an actor is identity-based while the recipient of an agent's message may also be content-based. Identity-based means that the identity of the receiver is specified when the sender emits the message. In this scheme, the content of the message is only meaningful to the receiver, no other intermediaries will attempt to parse the message or interpret its content. Content-based communication among agents means that the receiver is determined by the structure of the message and possibly by the values contained in the message. An intermediary (a "facilitator" in KQML [Finin et al. 1997]) may use the structure or content to locate a receiver who is capable of processing and responding to the message. It is also interesting to note that historically actor systems have been more focused on communicating data (the parameters to and results from operations) while agents have been more concerned with communicating higher level concepts such as arbitrary descriptions and also explicit intentions for the communication (e.g., request, inform, etc.) through a set of "speech acts". In the KQML proposal for agent-interoperability [Finin et al. 1997], in addition to the actual message contents, a communication between agents also specifies the intention, the language used for the description of the contents, and the hierarchy of concepts used ("ontology"). Coordination While communication is the exchange of information (basic data or higher-level descriptions) between actors or agents, coordination is the interaction to ensure joint work among a set of actors or agents. This includes synchronizing their actions, ensuring coherency, and reconciling possibly disparate viewpoints and conflicting intentions [Gasser and Hill 1990]. The focus of coordination in the actor community has been on the programming language issues and the problems addressed have tended to be closely related to traditional operating systems synchronization problems (e.g., exclusion, resource allocation). A significant issue in this work has been transparency - inducing the desired coordination among actors without changing, or with minimal changes to, the programming of the individual actors. A transparent coordination scheme allows the same set of actors to interact in different ways depending on the coordination milieu, this change being also dynamic either for an individual actor changing from one coordination domain to another or for the entire group. Coordination among agents focuses on forming an organization defined by the roles and protocols among individual agents [Gasser et al. 1989] [Drogoul and Collinot 1998]. An agent may rely on the organization to help achieving its owns goals and plans, may be required to assist other agents in completing their own plans, and must respect the rules of the organization in its interactions with others. To achieve their coordination, it may be necessary for agents to articulate their own beliefs and plans and also reason about the beliefs or plans of other agents. Thus, coordination among agents is more concerned with knowledge sharing and reasoning while coordination among actors has been more concerned with synchronization and performance issues. CONCLUSION This short introduction provided a quick survey on basic principles of actors and agents, and their common characteristics as well as their different levels of concern. Various articles in the series will highlight and make more concrete specific facets and application domains of both actors and agents. The first article in the series is devoted to a growing application domain for actor/agent-based technology: distributed and adaptive control of networks. REFERENCES Agha, G., (1986) "Actors: A Model of Concurrent Computation in Distributed Systems", MIT Press. Bradshaw, J. M., (1997), (editor), "Software Agents", AAAI Press/MIT Press. Briot, J.-P., (1989), "Actalk: a Testbed for Classifying and Designing Actor Languages in the Smalltalk-80 Environment", in Steve Cook, editor, "European Conference on Object-Oriented Programming (ECOOP'89)", pages 109-129, Cambridge University Press. Briot, J.-P., (1996), "An Experiment in Classification and Specialization of Synchronization Schemes", in Kokichi Futatsugi and Satoshi Matsuoka, editors, "Object Technologies for Advanced Software (ISOTAS'96)", number 1049 in LNCS, pages 227-249, Springer-Verlag. Drogoul, A., and Collinot A., (1998), "Applying an Agent-Oriented Methodology to the Design of Artificial Organisations : a Case Study in Robotic Soccer", Journal of Autonomous Agents and Multi-Agent Systems 1st issue, Kluwer AP. Finin, T., Labrou, Y., and Mayfield J., (1997), "KQML as an Agent Communication Language", in [Bradshaw 1997]. Gasser, L., Rouquette, N., Hill, R., and Lieb, J., (1989), "Representing and Using Organizational Knowledge in DAI Systems", in L. Gasser and M. N. Huhns, editors, "Distributed Artificial Intelligence, Volume II", Pitman Publishers, pages vii-xv. Gasser, L., and Hill, R. W., (1990), "Engineering Coordinated Problem Solvers", Annual Reviews of Computer Science, Vol. 4. Gasser, L., and Briot, J.-P. (1992), "Object-Based Concurrent Programming and Distributed Artificial Intelligence", in Nicolas M. Avouris and Les Gasser, editors, "Distributed Artificial Intelligence: Theory and Praxis", pages 81-107, Kluwer. Guessoum, Z., and Briot, J.-P., (1998), "From Active Objects to Autonomous Agents", LIP6 Research Report, Paris ("http://ftp.lip6.fr/lip6/reports/1998/"). Hewitt, C. (1977), "Viewing Control Structures as Patterns of Passing Messages", Artificial Intelligence 8(3), pages 323-364. Kafura, D., and Lavender, G., (1994), "Concurrent Object-Oriented Languages and the Inheritance Anomaly," in "Parallel Computers: Theory and Practice", ed: T.L. Cassavant, IEEE Press, 1994, pages 165-198. Kafura, D., Mukherji, M., and Lavender, G., (1993), "ACT++ 2.0: A Class Library for Concurrent Programming in C++ Using Actors," Journal of Object-Oriented Programming, October, 1993, pages 47-55. Maes, P., (1994), "Agents that Reduce Work and Information Overload", Communications of the ACM, 37(7), pages 30-40. Nwana, H. S., (1996), "Software Agents: An Overview", Knowledge Engineering Review 11(3): 205-244. Schneiderman, G., (1977), "Direct manipulation vs. agents: Paths to predicatable, controllable, and comprehensible interfaces", in [Bradshaw 1997]. Shoham, Y., (1993), "Agent-Oriented Programming", Artificial Intelligence 60(1), pages 51-92. White, J., (1997), "Mobile Agents", in [Bradshaw 1997]. Wooldridge M. J., and Jennings, N. R., 1995. Agent Theories, Architectures, and Languages: A Survey. In Intelligent Agents: ECAI-94 Workshop on Agent Theories, Architectures and Languages, eds. M.J. Wooldridge and N.R. Jennins, 1-39. Berlin: Springer-Verlag. Yonezawa, A., (1990), "ABCL: An Object-Oriented Concurrent System", MIT Press.