Ágensorientált programozás

A Wikipédiából, a szabad enciklopédiából

Ágensorientált programozás (AOP) egy programozási paradigma, ahol szoftver elkészülésének középpontjában a szoftverágensek koncepciója áll. Ellentétben az objektumorientált programozással, amelynek az objektumok (metódusokat biztosít változó paraméterekkel) állnak a középpontban, míg az AOP középpontjában külsőleg meghatározott ágensek (interfészekkel és üzenetküldő képességekkel) állnak. Úgy lehet őket felfogni, mint a objektumok absztrakcióit. A üzeneteket a fogadó "ágensek" értelmezik, az ágensek osztályára jellemző módon.

Történet[szerkesztés]

Történelmileg az ágensorientált programozást, és az ötletet, hogy szoftver az ágens fogalmának középpontjába álljon, Yoav Shoham vezette be, a mesterségesintelligencia- tanulmányai során 1990-ben.[1] [2] Az ágensei azok saját paradigmájára specifikusak, mivel csak egyetlen metódusuk van, egyetlen paraméterrel. Yoav Shohamot idézve 1990-es írásából, amelyben az AOP és az OOP közötti alapvető különbségről ír:

... ágensorientált programozás (AOP), amely az objektumorientált programozás specializációjának tekinthető. . . .
OOP AOP
Alapegység objektum ágens
Az alapegység állapotát meghatározó paraméterek kötetlen hiedelmek, elkötelezettségek, képességek, választási lehetőségek, ...
A számítás folyamata üzenettovábbítás és válaszmetódusok üzenettovábbítás és válaszmetódusok
Az üzenet típusai kötetlen tájékoztatás, kérés, ajánlat, ígéret, elutasítás,. . .
A módszerekre vonatkozó korlátozások nincs őszinteség, következetesség,. . .

Keretrendszerek[szerkesztés]

Számos AOP-"keretrendszer" van, más néven ágensplatformok, amelyek megvalósítják Shoham programozási paradigmáját. A következő példák szemléltetik, hogy az alapágens hogy van hello-world programként programozva.

JADE[szerkesztés]

A Java-platform egyik keretrendszere a JADE.[3][4] Itt megtalálható egy nagyon egyszerű példa[5] a kódot futtató ügynökről.

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");
	}

}

A JADE AOP modelljének lényege, hogy API-ja támogatja a szabványos FIPA Agent kommunikációs nyelvet

Agent Speak (Jason)[szerkesztés]

Az ágensorientált fogalmak szó szerinti lefordításához a JADE-hez hasonlóan a Java és az objektumorientáltság mögött álló Agent Speak[6] (Jason) egy "természetes" nyelvet biztosít az ágensek számára.

	
	started.

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

GOAL[szerkesztés]

A GOAL egy ágens programozási nyelv, kognitív ágensek programozásához. A GOAL ágensei meggyőződésükből és céljaikból hoznak döntést a választások során. A nyelv biztosítja az alapvető építőelemeket a kognitív ágensek tervezéséhez és megvalósításához olyan konstrukciók programozásával, amelyek lehetővé teszik és megkönnyítik az ügynök meggyőződésének és céljainak manipulálását, valamint strukturálják döntéshozatalát. A nyelv intuitív programozási keretrendszert nyújt, józan ész vagy gyakorlati érvelés alapján.

SARL nyelv[szerkesztés]

A SARL [7] ( SARL webhely ) biztosítja az multi-ágens rendszerek programozásának alapvető absztrakcióját. Szkriptszerű szintaxist használ (Amelyet Scala és Ruby ihletett).

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

Köztes szoftver[szerkesztés]

A moduláris vagy bővíthető AOP-támogatás megvalósításának egyik módja a standard AOP API-k meghatározása a köztes szoftver funkcióihoz, amelyek maguk is szoftverágensként valósulnak meg. Például egy címtárszolgáltatás megvalósítható FIPA-címtárszervezőként vagy DF-szoftverágensként; Az életciklus-menedzsment az ágensek elindításához, leállításához, felfüggesztéséhez és folytatásához FIPA Agent Management Service vagy AMS ágensként valósítható meg. [8] Az AOP megközelítés előnye, hogy támogatja az alkalmazások, szolgáltatások és hálózatok különböző felhasználói és szolgáltatói közötti dinamikusabb szerepeket. Például hagyományosan a hálózatokat és szolgáltatásokat általában az ügyfél nevében a hálózat és a szolgáltató irányította, és egyetlen virtuális hálózati szolgáltatásként kínálták, de maguk az ügyfelek is egyre inkább fel vannak hatalmazva arra, hogy integrálják és kezeljék saját szolgáltatásaikat. Ezt AOP-n és API-n keresztül lehet elérni a köztes ágensek számára, amelyek rugalmasan és dinamikusan képesek kezelni a kommunikációt. [9]

Jegyzetek[szerkesztés]

  1. Shoham, Y.. Agent-Oriented Programming. Stanford University: Computer Science Department (1990) 
  2. Shoham (1993). „Agent-Oriented Programming”. Artificial Intelligence 60 (1), 51–92. o. DOI:10.1016/0004-3702(93)90034-9.  
  3. Bellifeminee, Fabio (2001). „JADE: a FIPA2000 compliant agent development environment”. Proceedings of the fifth international conference on Autonomous agents: 216–217. doi:10.1145/375735.376120. 
  4. https://web.archive.org/web/20100621141053/http://jade.tilab.com/
  5. https://web.archive.org/web/20110702083510/http://rootdev.nl/blog/article/aop_jade_configure_in_eclipse_and_netbeans
  6. Anand S. Rao, 1996. AgentSpeak(L): BDI Agents Speak Out in a Logical Computable Language. Proceedings of Seventh European Workshop on Modelling Autonomous Agents in a Multi-Agent World (MAAMAW-96).
  7. Rodriguez, Sebastian; Gaud, Nicolas; Galland, Stéphane (2014). " SARL: A General-Purpose Agent-Oriented Programming Language, 2014 IEEE/WIC/ACM International Joint Conferences on Web Intelligence (WI) and Intelligent Agent Technologies (IAT), 103–110. o.. DOI: 10.1109/wi-iat.2014.156 (2014). ISBN 978-1-4799-4143-8 
  8. Poslad, S (2007). „Specifying Protocols for Multi-agent System Interaction”. ACM Transactions on Autonomous and Adaptive Systems 2 (4), 15–es. o. DOI:10.1145/1293731.1293735.  
  9. Poslad, S. Agent-oriented middleware for integrating customer network services. In: Software Agents for Future Communication Systems, Hayzelden A, Bigham J Eds., 221–242. o.. DOI: 10.1007/978-3-642-58418-3_9 (1999) 

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben az Agent-oriented programming című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Kapcsolódó szócikk[szerkesztés]