2011-03-07 11 views
7

Hemos estado aprendiendo sobre Agent-Oriented-Programming en mi clase de desarrollo de software, y mi profesor es un gran defensor de ello, habiendo trabajado con él toda su vida.¿Diseño orientado a agentes en el mundo real?

Mi pregunta es acerca de las verdaderas ventajas/desventajas de usar Agentes tanto desde el punto de vista del diseño como de la implementación. Desde el punto de vista de mi profesor, los Agentes pueden recrear operaciones muy complejas con mucha más facilidad que a través de métodos OOP normales. Pero me parece que los agentes son igualmente engorrosos para programar en entornos complejos. Están sujetos a varios problemas de concurrencia, tiempo e integridad de datos. Desde la perspectiva de un codificador, el código del Agente es bastante intrincado y es mucho más difícil de entender que el código OOP normal.

¿Puede alguien darme una idea de cómo se ven los agentes de software en el desarrollo real y cuáles son las ventajas/desventajas fuera de un ejercicio académico?

+2

Desde su prof ha estado trabajando en este toda su vida, hay que dividir todo lo positivo que dice sobre el tema en un 10 –

+0

Es muy común que una técnica se desarrolle dentro de la academia y algunos años (o décadas) después lleguen al "mundo real" del mercado una programación empresarial. También debe tener en cuenta que no hay una solución mágica: estoy seguro de que la Programación Orientada a Agentes tiene muchos buenos usos, pero si comienza a causar más problemas que beneficios al intentar alcanzar su objetivo, tal vez esa no sea la herramienta adecuada. . – Lundberg

+1

Desafortunadamente, el diseño orientado a agentes tiene mucho éxito en [Botnets] (http://en.wikipedia.org/wiki/Botnet) – k3b

Respuesta

10

El uso del término "agentes" en AI (que es lo más probable a lo que se refiere, es la referencia académica más común) es realmente un sinónimo de "programa de software que actúa en nombre del usuario". Se ve a un agente es más atractivo porque es un término algo personificado, es un proxy para un usuario; además, tiende a asociarse con una funcionalidad de orden superior (planificación de agentes, aprendizaje para agentes, agentes autónomos, etc.). Más información sobre el origen del término en la Wikipedia:

http://en.wikipedia.org/wiki/Software_agent

Teniendo en cuenta que, el término "agente" es más sobre el propósito y el tipo de software, no cómo se programa. OOP tiene más que ver con la forma en que se diseñó/implementó técnicamente.

Por lo tanto, no hay nada de malo en diseñar sus agentes utilizando los principios de OOP. Los dos temas no son mutuamente excluyentes.

Además, tenga en cuenta (como algunos de los comentarios anteriores aluden, y estoy de acuerdo con): el uso de "agentes" en la academia es un término más romántico; la mayoría del software actúa en nombre de algunos usuarios, por lo que existe una funcionalidad del agente en muchos aspectos. Es solo software al final del día, y si elimina el término "agente" de nuestro léxico colectivo, no estaría castigando la capacidad de diseño/implementación de software puro. Verá elementos de este mismo debate en los foros específicamente acerca de la programación orientado a agentes, por ejemplo:

http://ootips.org/agent-orientation.html

+1

Existe una distinción entre agentes (como su termostato) y agentes inteligentes. Si hablamos de agentes inteligentes, entonces el agente debe ser reactivo de forma adaptativa con el entorno, proactivo (orientado a objetivos) y social (saber cómo interactuar con otros agentes). Un agente inteligente puede no querer colaborar si no puede alcanzar sus objetivos. Como dicen: los objetos funcionan gratis pero los agentes trabajan por dinero. – avatar

Cuestiones relacionadas