MENTAL
 Main Menu
 Applications
 Computer Science
 Agent Oriented Programming


Agent Oriented Programming
 AGENT ORIENTED
PROGRAMMING

"Controlling complexity is the essence of programming" (Brian Kernigan).

"We can only understand something if we can program it" (Gregory Chaitin).



The concept of agent

An agent is a computational entity residing in a dynamic environment that has the ability to autonomously perceive and act on that environment. In this way, it is capable of accomplishing a set of objectives or carrying out certain tasks for which it was designed.

This software engineering paradigm has emerged with great force in recent years, as it is particularly suitable for solving complex problems, mainly in the field of artificial intelligence. It also constitutes a very suitable way for the creation of real-world models.

The decomposition of a problem into agents represents the most radical form of application of the "divide and conquer" philosophy, where each agent deals with a part of the problem and where all agents collaborate and coordinate their activities for the achievement of a final goal.


Types of agents

There are many types of agents. Some examples are:
Characteristics of agents

An agent is a computational entity that has the following identifying characteristics: Additional characteristics that agents may possess are:
Traditional development with agents

Historically, agent-oriented programming has been supported by the integration of two paradigms: the object-oriented paradigm and the logical paradigm. An agent was constructed as an object and its behavior was implemented by means of logical clauses. An example of such an approach is JavaLog, a language mixture of Java (object-oriented programming) and Prolog (logic programming), in which an agent is a Java object that references a logic module (containing the logic clauses).

Although there are currently many applications implemented with agent technology, the topic has not yet reached sufficient maturity and popularity, mainly due to:
Agents vs. Objects

There is a certain analogy between the object paradigm and the agent paradigm: An important difference is that object-oriented methodologies cannot be used directly in agent orientation.


Agents vs. Processes

Agents are reminiscent of processes in a multiprocess system (e.g., an operating system). But the difference is that an agent has autonomy, it "knows" when to act, while a process must be explicitly invoked to act.

Agents normally act concurrently. On the issue of access to shared resources, by different agents, the same problems arise as in concurrent programming.


Intelligent agents

The term "intelligent agent" came into use in the 1980's in the subdomain of artificial intelligence called "distributed artificial intelligence" (DAI). Its concept was that of an object with built-in or self-contained intelligence. In DAI, intelligent agents have collective and cooperative behavior.


Agents and software interoperability

Agent technology has been proposed as a system for achieving software interoperability, using a common ontology:
Multi-agent system

It consists of the following elements: A multi-agent system may contain cooperative and non-cooperative agents. In both cases, each agent (whether cooperative or not) always contributes to the overall functioning of the system.


Agent Development with MENTAL

MENTAL is a language of supreme level of abstraction, of universal paradigm, which enables agent-oriented programming without any additional resources. There is absolutely no need for any specific language that contemplates agent systems or any knowledge representation system. With MENTAL everything is simpler.

Aspects to highlight in the development with agents with MENTAL are the following: MENTAL also allows the development of high-level resources such as:

Addenda

FIPA (Foundation for Intelligent Physical Agents)

This is the organization that defines the standards in agent-oriented software engineering: ontologies (i.e., concepts and their relationships), agent interaction protocols, etc. Its Web address is: http://www.fipa.org


Bibliography