2. Architectures des agents et langages
2.3 Langages orientés agents
2.3.1 Langages de programmation des agents
L'architecture de l'agent une fois décidée, on peut utiliser
n'importe quel langage de programmation pour implémenter l'agent.
Il serait toutefois souhaitable d'avoir un langage de programmation qui
offre des constructions spéciales pour bâtir nos agents et qui
permette, de cette manière, de développer plus vite nos
applications. Les langages de programmation agents ont été
conçus dans ce but. Pourtant il est bien difficile de concevoir un langage
qui offre des constructions adéquates et efficaces pour implémenter
n'importe quel agent. On a vu dans la section précédente
qu'il y a une grande diversité d'architectures possibles pour les
agents et que les concepts mêmes sur lesquels on conçoit nos agents
peuvent être très différents. Les chercheurs ont proposé
de nombreux langages pour la programmation des agents, chaque langage
favorisant une vision particulière de la notion d'agent intelligent.
On ne peut pas dire qu'il y ait actuellement un tel langage généralement
accepté. Une place particulière dans le panorama est occupée
par le langage de programmation qui a introduit l'approche de la programmation
orientée agents. C'est ce langage qui va être présenté
dans la section suivante.
Il faut aussi noter que, parfois, un langage de programmation agent est
intégré dans une plate-forme multi-agent qui offre des bibliothèques
de composants utiles pour l'implémentation des agents, des mécanismes
qui facilitent la communication entre agents et des protocoles d'interaction.
Les plates-formes multi-agents sont le sujet du chapitre 7 ci-dessous.
Langages concurrents orientés objets
Les langages concurrents orientés objets peuvent être considérés
comme un premier pas vers la programmation des agents. Le langage le plus
connu est le langage Actors, où on trouve des objets qui
peuvent s'exécuter d'une manière concurrente. Comme dans
la programmation orienté objets, un acteur, objet du langage, a
un état interne qui n'est pas accessible de l'extérieur,
et répond aux messages envoyés par d'autres acteurs. Le
successeur le plus récent du langage Actors est le langage ABCL.
Langages concurrents formels pour la programmation des agents
Dans cette catégorie, le langage le plus représentatif
est le langage Concurrent METATEM. Ce langage est basé
sur la logique temporelle et l'exécution d'un programme correspond
en fait à l'exécution directe des formules de la logique
temporelle.
Pour savoir plus sur la logique temporelle vous pouvez parcourir notre
premier cours en ligne cours
en ligne
Un système METATEM contient un certain nombre d'agents qui s'exécutent
de manière concurrentielle, et qui peuvent communiquer par envoi
de messages. Chaque agent est une structure qui contient deux composantes :
- une interface qui spécifie l'interaction de l'agent
avec l'environnement et avec les autres agents du système,
- une composante d'exécution qui assure le fonctionnement
de l'agent et qui est capable d'appliquer les inférences spécifiques
de la logique temporelle.
Le comportement de l'agent est défini par des règles de
production avec l'interprétation intuitive que si on a un certain
passé, on doit construire un futur d'une certaine manière.
Par exemple, si l'agent X a reçu dans le passé un message de l'agent
Y qui lui demande un objet O alors X s'engage à donner O à
Y dans le futur.
Langages pour les agents mobiles
Un des langages les plus connus pour développer des agents mobiles
est le langage TELESCRIPT qui est, en même temps, le premier
langage agents commercial. Ce langage utilise deux concepts principaux :
les places et les agents. Les places sont des emplacements virtuels qui
peuvent être occupés par les agents. Les agents sont des
modules logiciels qui se déplacent d'une place à l'autre,
et qui peuvent offrir ou demander des ressources ou des services.
Dans cette même catégorie, on mentionnera aussi le langage
Agent-Tcl qui a été conçu comme un développement
du langage Tcl ("Tool Communication Language") ; ce langage
permet aux agents de se déplacer d'un ordinateur à l'autre
et de communiquer entre eux par des messages.
Un autre langage bien connu pour la programmation des agents mobiles
est le langage Aglets, conçu initialement par la compagnie IBM
et qui est maintenant développé par la succursale IBM au
Japon.
|