Go! (langage)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir GO.
Page d'aide sur l'homonymie Cet article concerne un langage de programmation multi-agent créé en 2003. Pour le langage de programmation de Google, voir Go (langage). Pour go dans d'autres contexte, voir Go.
Go!
Apparu en 2003
Auteur Francis McCabe
Keith Clark
Influencé par Prolog
Licence GPLv2

Go! est un langage de programmation concurrent, originellement conçu par Keith Clark et Francis McCabe en 2003[1]. Il est orienté vers le besoin de programmer des agents d'applications surs, de qualité de production. Il est multi-thread, fortement typé et d'un niveau élevé (au sens de la programmation fonctionnelle). Il a des définitions de relation, de fonctions et de procédures d'action. Les threads exécutent les procédures d'action, les appels de fonctions et les querying relations au besoin. Les threads des différents agents communiquent et se coordonnent en utilisant des messages asynchrones. Les threads à l'intérieur d'un même agent peuvent également utiliser des relations dynamiques partagées agissant comme des registres mémoires.

Sa nature comme langage de programmation multi-paradigme, intégrant des styles de la programmation logique, fonctionnelle et orientée objet[2], est particulièrement mise en œuvre dans les modèles basés sur une ontologie, tel qu'employés par le web sémantique en permettant un système type où les classes OWL peuvent être représentées dans le système type[3]. La conception de Go!, d'après Bordini et al.'s survey[2].

Depuis le lancement du langage de programmation de Google, Go! et Go sont devenus le sujet d'une polémique sur le nom du langage qui n'est pas résolue au 12 novembre 2009[4].

Modèle de Communication[modifier | modifier le code]

Les threads à l'intérieur d'un même processus Go!, et donc dans le même agent, peuvent aussi communiquer en manipulant des objets à relation dynamiques, comparable aux registres de tuple de Linda[2], utilisés pour coordonner leurs activités.

Exemple[modifier | modifier le code]

L'exemple suivant montre le style de type et de déclarations 'ontology-oriented' de Go!.

Gender::= male | female.
 
person <˜ {dayOfBirth:[]=>day. age:[]=>integer.
           gender:[]=>Gender. name:[]=>string.
           home:[]=>string. lives:[string]{}}.
 
person:[string,day,Gender,string]$=person.
 
person(Nm,Born,Sx,Hm)..{
  dayOfBirth()=>Born.
  age() => yearsBetween(now(),Born).
  gender()=>Sx.
  name()=>Nm.
  home()=>Hm.
  lives(Pl) :- Pl=home().
  yearsBetween:[integer,day]=>integer.
  yearsBetween(...) => ..
}.
 
newPerson:[string,day,Gender,string]=>person.
 
newPerson(Nm,Born,Sx,Hm)=>$person(Nm,Born,Sx,Hm).

Notes et références[modifier | modifier le code]

  1. Clark and McCabe, AAMAS'03, 2003
  2. a, b et c Bordini et al., Informatica, 2006
  3. Clark and McCabe, Applied Intelligence, 2006
  4. (fr+en) http://www.lemonde.fr/technologies/article/2009/11/12/google-lance-son-propre-langage-de-programmation_1266019_651865.html

Voir aussi[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

  • (en) K.L. Clark et F.G. McCabe, « Go! for multi-threaded deliberative agents », International Conference on Autonomous Agents (AAMAS'03),‎ 2003, p. 964 - 965 (DOI 10.1145/860575.860747, lire en ligne)
  • K.L. Clark et F.G. McCabe, Ontology Oriented Programming in Go!,‎ 2003 (lire en ligne)
  • (en) K.L. Clark et F.G. McCabe, « Go!—A Multi-Paradigm Programming Language for Implementing Multi-Threaded Agents », Annals of Mathematics and Artificial Intelligence, vol. 41, no 2-4,‎ 2004, p. 171 - 206 (DOI 10.1023/B:AMAI.0000031195.87297.d9, lire en ligne)
  • (en) K.L. Clark et F.G. McCabe, « Ontology oriented programming in go! », Applied Intelligence, vol. 24, no 3,‎ 2006, p. 189 - 204 (DOI 10.1145/860575.860747, lire en ligne)
  • (en) R. Bordini et al., « A Survey of Programming Languages and Platforms for Multi-Agent Systems », Informatica, vol. 30,‎ 2006, p. 33 - 44 (lire en ligne)
  • (en) M. Fisher et al., « Computational Logics and Agents - A Roadmap of Current Technologies and Future Trends », Computational Intelligence, vol. 23, no 1,‎ 2007, p. 61 - 91 (lire en ligne)

Liens externes[modifier | modifier le code]