Article de reference

Go! (langage de programmation)

Go! est un langage de programmation basé sur des agents dans la tradition des langages de programmation basés sur la logique comme Prolog . Il a été introduit dans un article de...

Go! est un langage de programmation basé sur des agents dans la tradition des langages de programmation basés sur la logique comme Prolog . Il a été introduit dans un article de 2003 par Francis McCabe et Keith Clark .

Conception

Les auteurs de Go! le décrivent comme « un langage de programmation multi-paradigme orienté vers les besoins de programmation d'applications sécurisées, de qualité de production et basées sur des agents. Il est multithread , fortement typé et d'ordre supérieur (au sens de la programmation fonctionnelle). Il possède des définitions de relations, de fonctions et de procédures d'action. Les threads exécutent des procédures d'action, appellent des fonctions et interrogent des relations selon les besoins. Les threads de différents agents communiquent et se coordonnent à l'aide de messages asynchrones. Les threads d'un même agent peuvent également utiliser des relations dynamiques partagées agissant comme des magasins de tuples de style Linda . »

Les auteurs suggèrent également que le langage est adapté à la représentation d'ontologies en raison de son intégration de styles de programmation logique , fonctionnel et impératif .

Exemple

L'exemple suivant illustre le type « orienté ontologie » et le style de déclaration de Go ! :

Sexe 
::= 
mâle 
| 
femelle .
personne 
<~ 
{ dayOfBirth: [] 
=> 
jour . 
âge :[] 
=> 
entier . 
sexe :[] 
=> 
Sexe . 
nom :[] 
=> 
chaîne . 
maison :[] 
=> 
chaîne . 
vies :[ chaîne ]{}}.
personne :[ chaîne , 
jour , 
sexe , 
chaîne ] 
$ = 
personne .
personne ( Nm , 
Naissance , 
Sx , 
Hm )..{ 
jourDeNaissance () 
=> 
Naissance . 
âge () 
=> 
annéesEntre ( maintenant (), 
Naissance ). 
sexe () 
=> 
Sx . 
nom () 
=> 
Nm . 
maison () 
=> 
Hm . 
vit ( Pl ) 
:- 
Pl 
= 
maison (). 
annéesEntre: [ entier , 
jour ] 
=> 
entier . 
annéesEntre (...) 
=> 
.. 
}.
newPerson: [ chaîne , 
jour , 
Sexe , 
chaîne ] 
=> 
personne .
nouvellePersonne ( Nm , 
, 
Sx , 
Hm ) 
=> 
$ personne ( Nm , 
, 
Sx , 
Hm ).
  • La ::=règle définit un nouveau type de données algébriques , un type de données avec uniquement des constructeurs de données.
  • La <~règle définit un type d'interface : elle indique les propriétés qui sont caractéristiques d'un personet donne également des contraintes de type sur ces propriétés. Elle documente qu'il ages'agit d'une propriété fonctionnelle avec une valeur entière, d' livesune relation unaire sur des chaînes et d' dayOfBirthune propriété fonctionnelle avec une valeur qui est un objet de type day.
  • La $=règle de type indique qu'il existe également une étiquette de théorie, avec le foncteur person, pour une théorie qui définit les propriétés caractéristiques du persontype - implémente l' personinterface - en termes de quatre paramètres donnés de types string, day, Sexet string.

Conflit avec Google

En novembre 2009, Google a publié un langage de programmation Go portant le même nom (sans point d'exclamation ). McCabe a demandé à Google de changer le nom de son langage car il craignait qu'ils ne « nous écrasent ». Le problème a attiré l'attention des sites d'actualités technologiques, certains d'entre eux qualifiant Go! d'« obscur ». Le fil de discussion ouvert sur le sujet a été fermé par un développeur de Google le 12 octobre 2010 avec le statut personnalisé « Malheureux » et avec le commentaire suivant : « il existe de nombreux produits et services informatiques nommés Go. Au cours des 11 mois qui ont suivi notre sortie, il y a eu peu de confusion entre les deux langages. »

Lectures complémentaires

  • Clark, KL; McCabe, FG (2003). « Programmation orientée ontologie en Go ! » (PDF) .
  • Clark, KL; McCabe, FG (2004). "Go!—Un langage de programmation multi-paradigme pour la mise en œuvre d'agents multithread". Annales des mathématiques et de l'intelligence artificielle . 41 (2–4) : 171–206. CiteSeerX 10.1.1.133.1069 . doi :10.1023/B:AMAI.0000031195.87297.d9. S2CID 6992205.
  • R. Bordini; et al. (2006). « Un aperçu des langages de programmation et des plates-formes pour les systèmes multi-agents ». Informatica . 30 : 33–44. Archivé de l'original le 2009-11-15.
  • M. Fisher; et al. (2007). « Logiques computationnelles et agents - Une feuille de route des technologies actuelles et des tendances futures ». Intelligence computationnelle . 23 (1) : 61–91. CiteSeerX 10.1.1.114.6149 . doi :10.1111/j.1467-8640.2007.00295.x. S2CID 3393868. Archivé de l'original le 2013-01-06.
  • McCabe, Francis G. (7 février 2007). C'est parti !. Network Agent Press. ISBN 978-0-9754449-1-7.
  • C. Varela; et al. (2004). Sur la modélisation des systèmes d'agents avec Erlang. ACM SIGPLAN Erlang Workshop '04. Archivé de l'original le 2009-11-15 .

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index