oop - 现实世界中的面向代理的设计?

标签 oop agent paradigms

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

去年关闭。




Improve this question




我们一直在了解 Agent-Oriented-Programming在我的软件开发课上,我的教授是它的大力支持者,他一生都在使用它。

我的问题是从设计和实现的角度来看使用代理的真正优点/缺点。从我教授的角度来看,代理可以比通过普通的 OOP 方法更容易地重新创建非常复杂的操作。但在我看来,在复杂环境中编写 Agent 也同样麻烦。它们受到各种并发性、时间和数据完整性问题的影响。从编码人员的角度来看,代理代码相当复杂,而且比普通的 OOP 代码更难理解。

有人可以告诉我在实际开发中如何看待软件代理以及学术练习之外的优点/缺点是什么?

最佳答案

在 AI 中使用术语“代理”(这很可能是您所指的,这是最常见的学术引用)实际上是“代表用户运行的软件程序”的同义词。代理被视为更有吸引力,因为它是一个有点拟人化的术语,是用户的代理;此外,它往往与更高阶的功能相关联(代理规划、代理学习、自主代理等)。有关维基百科术语起源的更多信息:

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

鉴于此,术语“代理”更多地是关于软件的目的和类型,而不是它是如何编程的。 OOP 更多地与它的技术设计/实现方式有关。

因此,使用 OOP 原则设计您的代理并没有错。这两个主题并不相互排斥。

另外,请记住(正如上面提到的一些评论,我同意):在学术界使用“代理”是更浪漫的术语;大多数软件代表某些用户运行,因此在许多方面都有代理功能。归根结底,它只是软件,如果您从我们的集体词典中删除“代理”一词,您就不会惩罚纯软件设计/实现的能力。您将在专门关于面向代理的编程的论坛中看到相同辩论的元素,例如:

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

关于oop - 现实世界中的面向代理的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5216865/

相关文章:

java - 基类如何知道子类方法?

oop - 在使用 OOP 的闭包方法时如何实现 protected 成员?

functional-programming - 努力使用纯函数式编程来解决日常问题

android - wso2 emm mysql 设备表为空

model-view-controller - MVC 哪里不好?

python - 在不破坏以前代码的情况下在 python 中返回多个值

Python 泛型 : how to create object of an appropriate class?

JAVA 8 过滤具有任何匹配属性的对象列表

javascript - 检查登录用户 session 状态 OpenAM

ssh - 无法获得 Vagrant 工作的代理转发