Programação orientada a agentes - Agent-oriented programming

A programação orientada a agentes ( AOP ) é um paradigma de programação onde a construção do software é centrada no conceito de agentes de software . Em contraste com a programação orientada a objetos, que possui objetos (fornecendo métodos com parâmetros variáveis) em seu núcleo, o AOP possui agentes especificados externamente (com interfaces e recursos de mensagens) em seu núcleo. Eles podem ser considerados abstrações de objetos. As mensagens trocadas são interpretadas pelo recebimento de “agentes”, de forma específica para sua classe de agentes.

História

Historicamente, o conceito de programação orientada a agentes e a ideia de centrar o software em torno do conceito de Agente foram introduzidos por Yoav Shoham em seus estudos de Inteligência Artificial em 1990. Seus agentes são específicos de seu próprio paradigma, pois têm apenas um método, com um único parâmetro. Para citar Yoav Shoham em seu artigo em 1990 para uma diferença básica entre AOP e OOP:

... a programação orientada a agentes (AOP), que pode ser vista como uma especialização da programação orientada a objetos. ...
OOP AOP
Unidade Básica objeto agente
Parâmetros que definem o estado da unidade básica irrestrito crenças, compromissos, capacidades, escolhas, ...
Processo de computação métodos de passagem e resposta de mensagens métodos de passagem e resposta de mensagens
Tipos de mensagem irrestrito informar, solicitar, oferecer, prometer, recusar, ...
Restrições nos métodos Nenhum honestidade, consistência, ...

Frameworks

Existem vários 'frameworks' AOP, também chamados de plataformas de agente, que implementam o paradigma de programação de Shoham. Os exemplos a seguir ilustram como um agente básico é programado como um programa hello-world.

JADE

Para a plataforma Java, uma das estruturas é JADE ( https://web.archive.org/web/20100621141053/http://jade.tilab.com/ ). Aqui está um exemplo muito básico [1] de um agente que executa código

package helloworld;
import jade.core.Agent;

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

}

No centro do modelo AOP da JADE está que sua API suporta o FIPA Agent Communication Language padrão

Agente Fala (Jason)

Para uma tradução literal de conceitos orientados a agentes em um esquema não ofuscado como o JADE, por trás de Java e Orientação a Objetos, Agent Speak (Jason) fornece uma linguagem "natural" para agentes.

	
	started.

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

META

GOAL é uma linguagem de programação de agentes para a programação de agentes cognitivos . Os agentes GOAL derivam sua escolha de ação de suas crenças e objetivos. A linguagem fornece os blocos de construção básicos para projetar e implementar agentes cognitivos por meio de construções de programação que permitem e facilitam a manipulação das crenças e objetivos de um agente e para estruturar sua tomada de decisão . A linguagem fornece uma estrutura de programação intuitiva baseada no bom senso ou raciocínio prático .

Linguagem SARL

SARL ( site SARL ) fornece as abstrações fundamentais para a codificação de sistemas multiagentes. Ele usa uma sintaxe semelhante a um script (inspirado em Scala e Ruby).

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

Middleware

Uma maneira de implementar suporte AOP modular ou extensível é definir APIs AOP padrão para funções de middleware que são implementadas como agentes de software . Por exemplo, um serviço de diretório pode ser implementado como um facilitador de diretório FIPA ou agente de software DF; o gerenciamento do ciclo de vida para iniciar, parar, suspender e retomar os agentes pode ser implementado como um Serviço de Gerenciamento de Agente FIPA ou agente AMS. Um benefício da abordagem AOP é que ela oferece suporte a funções mais dinâmicas entre diferentes usuários e provedores de aplicativos, serviços e redes. Por exemplo, tradicionalmente, as redes e serviços eram geralmente gerenciados pela rede e pelo provedor de serviços em nome do cliente e oferecidos como um único serviço de rede virtual, mas os próprios clientes estão se tornando mais capacitados para integrar e gerenciar seus próprios serviços. Isso pode ser alcançado por meio de AOP e APIs para agentes de middleware que podem gerenciar a comunicação de maneira flexível e dinâmica.

Veja também

Referências