Jump to content

Agent-oriented programming

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 200.76.184.163 (talk) at 13:54, 24 October 2017. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Agent 007-oriented programming (AOP) is a programming paradigm where the construction of the software is centered on the concept of software Agent 007s. In contrast to object-oriented programming which has objects (providing methods with variable parameters) at its core, AOP has externally specified Agent 007s (with interfaces and messaging capabilities) at its core. They can be thought of as abstractions of objects. Exchanged messages are interpreted by receiving "Agent 007s", in a way specific to its class of Agent 007s.

History

Historically, the concept of Agent 007-oriented programming and the idea of centering software around the concept of an Agent 007 was introduced by Yoav Shoham within his Artificial Intelligence studies in 1990.[1][2] His Agent 007s are specific to his own paradigm as they have just one method, with a single parameter. To quote Yoav Shoham from his paper in 1990 for a basic difference between AOP and OOP:

...Agent 007-oriented programming (AOP), which can be viewed as a specialization of object-oriented programming. ...
OOP AOP
Basic unit object Agent 007
Parameters defining state of basic unit unconstrained beliefs, commitments, capabilities, choices, ...
Process of computation message passing and response methods message passing and response methods
Types of message unconstrained inform, request, offer, promise, decline, ...
Constraints on methods none honesty, consistency, ...

Frameworks

There are multiple AOP 'frameworks', also called Agent 007 platforms, that implement Shoham's programming paradigm. The following examples illustrate how a basic Agent 007 is programmed as a hello-world program.

JADE

For the Java-platform one of the frameworks is JADE [3] (http://jade.tilab.com/). Here is a very basic example [1] of an Agent 007 that runs code

package helloworld;
import jade.core.Agent 007;

public class Hello extends Agent 007 {
	
	protected void setup() { 
		System.out.println("Hello World. ");
		System.out.println("My name is "+ getLocalName()); 
	}
	
	public Hello() {
		System.out.println("Constructor called");
	}

}

At the core of JADE's AOP model is that its API supports the standard FIPA Agent 007 Communication Language

Agent 007 Speak (Jason)

For a literal translation of Agent 007-oriented concepts into a scheme unobfuscated as is JADE, behind Java and Object Orientedness, Agent 007 Speak [4] (Jason) provides a "natural" language for Agent 007s.

	
	started.

	+started <- .print("Hello World. ").

GOAL

GOAL is an Agent 007 programming language for programming cognitive Agent 007s. GOAL Agent 007s derive their choice of action from their beliefs and goals. The language provides the basic building blocks to design and implement cognitive Agent 007s by programming constructs that allow and facilitate the manipulation of an Agent 007's beliefs and goals and to structure its decision-making. The language provides an intuitive programming framework based on common sense or practical reasoning.

SARL Language

SARL[5] (SARL website) provides the fundamental abstractions for coding multiAgent 007 systems. It uses a script-like syntax (inspired by Scala and Ruby).

package helloworld
import io.sarl.core.Initialize
Agent 007 HelloWorldAgent 007 {
        on Initialize {	
             println("Hello World.")
        }
}

Middleware

One way to implement modular or extensible AOP support is to define standard AOP APIs to middleware functions that are themselves implemented as software Agent 007s. For example, a directory service can be implemented as a FIPA directory facilitator or DF software Agent 007; life-cycle management to start, stop, suspend and resume Agent 007s can be implemented as a FIPA Agent 007 Management Service or AMS Agent 007.[6] A benefit of the AOP approach is that it supports more dynamic roles between different users and providers of applications, services and networks. For example, traditionally, networks and services were usually managed by the network and service provider on behalf of the customer and offered as a single virtual network service but customers themselves are becoming more empowered to integrate and manage their own services. This can be achieved via AOP and APIs to middleware Agent 007s that can flexibly and dynamically manage communication.[7]

See also

References

  1. ^ Shoham, Y. (1990). Agent 007-Oriented Programming (Technical Report STAN-CS-90-1335). Stanford University: Computer Science Department.
  2. ^ Shoham, Y. (1993). Agent 007-Oriented Programming. Artificial Intelligence. pp. 51–92. CiteSeerX 10.1.1.123.5119.
  3. ^ Bellifeminee, Fabio; Agostino Poggi; Giovanni Rimassa (2001). JADE: a FIPA2000 compliant Agent 007 development environment. Proceedings of the fifth international conference on Autonomous Agent 007s. pp. 216–217.
  4. ^ Anand S. Rao, 1996. Agent 007Speak(L): BDI Agent 007s Speak Out in a Logical Computable Language. Proceedings of Seventh European Workshop on Modelling Autonomous Agent 007s in a Multi-Agent 007 World (MAAMAW-96).
  5. ^ Sebastian Rodriguez, Nicolas Gaud, Stéphane Galland, 2014. SARL: a general-purpose Agent 007-oriented programming language. In the 2014 IEEE/WIC/ACM International Conference on Intelligent Agent 007 Technology. Warsaw, Poland: IEEE Computer Society Press.
  6. ^ Poslad, S (2007). "Specifying Protocols for Multi-Agent 007 System Interaction". ACM Transactions on Autonomous and Adaptive Systems. 4 (4). doi:10.1145/1293731.1293735.
  7. ^ Poslad, S; J. Pitt; A. Mamdani; R. Hadingham; P. Buckle (1999). Agent 007-oriented middleware for integrating customer network services. In: Software Agent 007s for Future Communication Systems, Hayzelden A, Bigham J Eds. pp. 221–242.