2011-03-07 40 views
7

在我的軟件開發課上,我們一直在學習Agent-Oriented-Programming,我的教授是這方面的一位支持者,他一生都在使用它。面向代理的設計在現實世界中?

我的問題是關於從設計和實現角度使用代理的真正優點/缺點。從我的教授角度來看,代理人可以比通過正常的面向對象方法更容易地重新創建非常複雜的操作。但在我看來,代理在複雜環境中編程同樣麻煩。它們受到各種併發性,時序和數據完整性問題的影響。從編碼的角度來看,代理代碼相當複雜,比普通的OOP代碼更難理解。

有人能給我一個關於軟件Agent如何在真實開發中被觀看的想法以及學術活動之外的優點/缺點嗎?

+2

因爲你的教授的這方面的工作他的整個生活,你必須分配的一切積極的,他說,由10話題。 – 2011-03-07 09:54:09

+0

在學術界和某些年(或幾十年)以後開發的技術在企業程序設計市場的「現實世界」中出現是非常普遍的。你也應該考慮到沒有銀彈:我確信Agent-Oriented-Programming有很多好用處,但如果它在試圖達到目標時開始帶來更多的麻煩而不是好處,也許這不是正確的工具。 – Lundberg 2011-03-08 00:08:43

+1

不幸的是,面向代理的設計在[僵屍網絡](http://en.wikipedia.org/wiki/Botnet)中非常成功 – k3b 2011-03-08 09:45:06

回答

10

在AI中使用術語「代理」(這很可能是您所指的,它是最常見的學術參考)實際上是「代表用戶行事的軟件程序」的同義詞。一個代理人看起來更具吸引力,因爲這是一個有點人格化的術語,是一個用戶的代理人;此外,它傾向於與更高階的功能相關聯(計劃代理,代理學習,自主代理等)。更多關於術語的維基百科的由來:

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

鑑於此,該「代理人」一詞更多的是軟件的目的和類型,它不是如何編程。 OOP更多的是關於技術設計/實施的方式。

因此,使用面向對象的原則設計代理沒有任何問題。這兩個主題不是相互排斥的。另外,請記住(如上面的一些評論所暗示的,我同意):在學術界使用「代理人」是更具浪漫色彩的術語;大多數軟件代表某些用戶,所以在許多方面都有代理功能。它只是一天結束時的軟件,如果您從我們的集體詞典中刪除了「代理人」一詞,那麼您就不會懲罰純軟件設計/實施的能力。你會看到具體有關代理的面向對象編程在論壇上同樣的爭論的元素,如:

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

+1

代理(如恆溫器)和智能代理之間存在區別。如果我們談論的是智能型智能體,那麼智能體就必須對環境做出適應性反應,積極主動(面向目標)和社交(知道如何與其他智能體進行交互)。如果智能代理無法實現目標,他們可能不想合作。正如他們所說的:物體免費工作,但代理人爲錢而工作。 – avatar 2016-07-27 14:54:03