La programación orientada a agentes ( AOP ) es un paradigma de programación en el que la construcción del software se centra en el concepto de agentes de software . A diferencia de la programación orientada a objetos , que tiene objetos (que proporcionan métodos con parámetros variables) en su núcleo, la AOP tiene agentes especificados externamente (con interfaces y capacidades de mensajería) en su núcleo. Se pueden considerar como abstracciones de objetos. Los mensajes intercambiados son interpretados por los "agentes" receptores, de una manera específica para su clase de agentes.
Históricamente, el concepto de programación orientada a agentes y la idea de centrar el software en torno al concepto de un agente fue introducido por Yoav Shoham en sus estudios de inteligencia artificial en 1990. [1] [2] Sus agentes son específicos de su propio paradigma, ya que tienen un solo método, con un parámetro. Para citar a Yoav Shoham de su artículo de 1990 sobre una diferencia básica entre AOP y OOP:
... programación orientada a agentes (AOP), que puede considerarse como una especialización de la programación orientada a objetos.
Existen múltiples "marcos" de AOP, también denominados plataformas de agente, que implementan el paradigma de programación de Shoham. Los siguientes ejemplos ilustran cómo se programa un agente básico como un programa de "hola-mundo".
Para la plataforma Java, uno de los marcos es JADE. [3] Aquí hay un ejemplo muy básico [4] de un agente que ejecuta código.
paquete helloworld ; importar jade.core.Agent ; clase pública Hola extiende Agente { void protegido setup () { System . println ( "Hola mundo. " ); System . println ( " Mi nombre es " + getLocalName ( ) ) ; } clase pública Hola () { System . println ( "Constructor llamado" ) ; } }
En el núcleo del modelo AOP de JADE se encuentra que su API admite el lenguaje de comunicación del agente FIPA estándar.
AgentSpeak es un lenguaje de programación orientado a agentes basado en la programación lógica y la arquitectura creencia-deseo-intención (BDI).
Para una traducción literal de los conceptos orientados a agentes en un esquema tan claro como JADE, detrás de Java y la Orientación a Objetos, Agent Speak [5] (Jason) proporciona un lenguaje "natural" para los agentes.
comenzó .+ iniciado <- .print("Hola mundo. ").
GOAL es un lenguaje de programación de agentes para programar agentes cognitivos . Los agentes GOAL derivan su elección de acción de sus creencias y objetivos. El lenguaje proporciona los componentes básicos para diseñar e implementar agentes cognitivos mediante la programación de construcciones que permiten y facilitan la manipulación de las creencias y objetivos de un agente y para estructurar su toma de decisiones . El lenguaje proporciona un marco de programación intuitivo basado en el sentido común o el razonamiento práctico .
SARL [6] proporciona las abstracciones fundamentales para codificar sistemas multiagente. [7] Utiliza una sintaxis similar a un script (inspirada en Scala y Ruby).
paquete hola mundo importar io.sarl.core.Initialize agente HelloWorldAgent { en Initialize { println ( "Hola mundo." ) } }
PADE [8] es un paquete de Python para desarrollar agentes inteligentes en lenguaje Python. Este framework cumple con los estándares FIPA y ACL.
clase AgenteHelloWorld ( Agente ): def __init__ ( self , aid ): super ( AgenteHelloWorld , self ) .__ init __ ( aid = aid ) mostrar_mensaje ( self . aid.localname , ' ¡ Hola mundo!' )
Una forma de implementar un soporte AOP modular o extensible es definir API de AOP estándar para funciones de middleware que se implementan como agentes de software . Por ejemplo, un servicio de directorio se puede implementar como un facilitador de directorio FIPA o un agente de software DF; la gestión del ciclo de vida para iniciar, detener, suspender y reanudar agentes se puede implementar como un Servicio de Gestión de Agente FIPA o un agente AMS. [9] Un beneficio del enfoque AOP es que admite roles más dinámicos entre diferentes usuarios y proveedores de aplicaciones, servicios y redes. Por ejemplo, tradicionalmente, las redes y los servicios generalmente eran administrados por el proveedor de red y servicio en nombre del cliente y se ofrecían como un único servicio de red virtual, pero los propios clientes están cada vez más capacitados para integrar y administrar sus propios servicios. Esto se puede lograr a través de AOP y API para agentes de middleware que pueden administrar la comunicación de manera flexible y dinámica. [10]