Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 156

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>7.&nbsp;Les langages de programmation</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.70.1" name="generator"><link rel="start" href="index.html" title="Guide pratique sur l'intelligence artificielle et la vie
    artificielle sous GNU/linux"><link rel="up" href="index.html" title="Guide pratique sur l'intelligence artificielle et la vie
    artificielle sous GNU/linux"><link rel="prev" href="ar01s06.html" title="6.&nbsp;Les agents"><link rel="next" href="ar01s08.html" title="8.&nbsp;Manquant et Inactif"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">7.&nbsp;Les langages de programmation</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s06.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ar01s08.html">Suivant</a></td></tr></table><hr></div><div class="section" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10915"></a>7.&nbsp;Les langages de programmation</h2></div></div></div><p>Bien que n'importe quel langage de programmation puisse &ecirc;tre utilis&eacute;
    pour la recherche sur la vie ou l'intelligence artificielle, les langages
    de programmation d&eacute;crits ci-dessous sont, si ils n'ont pas &eacute;t&eacute;
    sp&eacute;cifiquement cr&eacute;&eacute;s pour cela, utilis&eacute;s intensivement pour la
    programmation d'intelligence artificielle.</p><div class="glosslist"><dl><dt>Allegro CL</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.franz.com/" target="_top">www.franz.com/</a>

               
            </p></li></ul></div><p>Version linux gratuite de l'environnement de d&eacute;veloppement
          Lisp de Franz Inc. Vous pouvez la t&eacute;l&eacute;charger ou ils vous
          exp&eacute;dieront un CD gratuitement (vous n'avez m&ecirc;me pas &agrave; payer de
          frais d'exp&eacute;dition). Elle est g&eacute;n&eacute;ralement consid&eacute;r&eacute;e comme l'une
          des meilleures plateformes Lisp.</p></dd><dt>APRIL</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://sourceforge.net/projects/networkagent/" target="_top">sourceforge.net/projects/networkagent/</a>

               et 

              <a href="http://www.nar.fujitsulabs.com/april/index.html" target="_top">www.nar.fujitsulabs.com/april/index.html</a>

               
            </p></li></ul></div><p>APRIL est un langage de programmation symbolique con&ccedil;u pour le
          codage de syst&egrave;mes bas&eacute;s sur des agents, mobiles et distribu&eacute;s dans
          l'environnement Internet. Il a des fonctionnalit&eacute;s avanc&eacute;es telles
          qu'un sous-langage de macro, l'envoi et la r&eacute;ception asynchrone de
          messages, la mobilit&eacute; du code, le filtrage, des fonctions d'ordre
          sup&eacute;rieur et la d&eacute;claration typ&eacute;e de variables. Ce langage est
          compil&eacute; en pseudo-code binaire qui est ensuite interpr&eacute;t&eacute; par le
          moteur d'ex&eacute;cution APRIL. APRIL a maintenant besoin qu'InterAgent
          Communications Model (ICM) soit install&eacute; avant de pouvoir &ecirc;tre
          install&eacute; &agrave; son tour. [Ed. ICM est disponible sur le m&ecirc;me site
          web]</p></dd><dt>Ciao Prolog</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.clip.dia.fi.upm.es/Software/Ciao/" target="_top">www.clip.dia.fi.upm.es/Software/Ciao/</a>

               
            </p></li></ul></div><p>Ciao est un syst&egrave;me complet Prolog englobant ISO-Prolog avec
          une nouvelle conception modulaire qui permet &agrave; la fois la
          restriction et l'extension du langage. Parmi les extensions de Ciao,
          on trouve actuellement les arguments nomm&eacute;s (enregistrements), les
          fonctions d'ordre sup&eacute;rieur, les contraintes, les objets, les
          pr&eacute;dicats persistants, une bonne base pour l'ex&eacute;cution distribu&eacute;e
          (d'agents) et la concurrence. Les biblioth&egrave;ques supportent aussi la
          programmation WWW, les sockets, et les interfaces externes (C, Java,
          Tcl/Tk, les bases de donn&eacute;es relationnelles, etc.). Un environnement
          pour Emacs, un compilateur autonome, et un interpr&eacute;teur de commandes
          haut niveau sont &eacute;galement fournis.</p></dd><dt>DHARMI</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://megazone.bigpanda.com/~wolf/DHARMI/" target="_top">megazone.bigpanda.com/~wolf/DHARMI/</a>

               
            </p></li></ul></div><p>DHARMI est un langage spatial de haut niveau facile &agrave; utiliser
          dont les composants sont administr&eacute;s de mani&egrave;re transparente par un
          processus en t&acirc;che de fond appel&eacute; "the Habitat". Comme son nom
          l'indique, ce langage a &eacute;t&eacute; con&ccedil;u pour faire des prototypes de
          mod&eacute;lisation et la gestion des donn&eacute;es actives. Les programmes
          peuvent &ecirc;tre modifi&eacute;s pendant leur ex&eacute;cution. Cela est rendu
          possible en estompant la distinction entre le code source, le
          programme et les donn&eacute;es.</p></dd><dt>ECLiPSe</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://eclipse.crosscoreop.com/eclipse/" target="_top">eclipse.crosscoreop.com/eclipse/</a>

               
            </p></li></ul></div><p>:TODO:</p></dd><dt>ECoLisp</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.di.unipi.it/~attardi/software.html" target="_top">www.di.unipi.it/~attardi/software.html</a>

               
            </p></li></ul></div><p>ECoLisp ("Embeddable Common Lisp", Lisp Commun Embarquable)
          est une impl&eacute;mentation de "Common Lisp" con&ccedil;ue pour &ecirc;tre ins&eacute;rable
          dans des applications &eacute;crites en C. ECL utilise des conventions
          d'appel C standard pour les fonctions Lisp compil&eacute;es, ce qui permet
          aux programmes C d'appeler facilement des fonctions Lisp et vice
          versa. Aucune interface de fonctions externes n'est requise&nbsp;: les
          donn&eacute;es peuvent &ecirc;tre &eacute;chang&eacute;es entre le C et le Lisp sans besoin de
          conversion. ECL est bas&eacute; sur un "Common Runtime Support (CRS)"
          (Appui d'Ex&eacute;cution Commun) qui fournit des fonctionnalit&eacute;s de base
          pour la gestion de la m&eacute;moire, le chargement et le vidage dynamique
          des images binaires, et le soutien de processus multiple
          d'ex&eacute;cution. Le CRS est int&eacute;gr&eacute; &agrave; une biblioth&egrave;que qui peut &ecirc;tre
          li&eacute;e au code de l'application. L'ECL est modulaire&nbsp;: les modules
          principaux sont les outils de d&eacute;veloppement du programme (niveau
          sup&eacute;rieur, d&eacute;bogueur, trace d'une ex&eacute;cution, ex&eacute;cution pas &agrave; pas),
          le compilateur, et CLOS. Une version native de CLOS est disponible
          dans ECL&nbsp;: on peut de configurer ECL avec ou sans CLOS. Une version
          d'ex&eacute;cution d'ECL peut &ecirc;tre construite avec les modules requis par
          l'application seulement. Le compilateur ECL compile du Lisp vers le
          C, puis fait appel au compilateur GCC pour cr&eacute;er les
          binaires.</p></dd><dt>ESTEREL</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www-sop.inria.fr/esterel.org/" target="_top">www-sop.inria.fr/esterel.org/</a>

               
            </p></li></ul></div><p>Esterel est &agrave; la fois un langage de programmation, d&eacute;di&eacute; &agrave; la
          programmation de syst&egrave;mes r&eacute;actifs, et un compilateur qui traduit
          les programmes Esterel en machine &agrave; &eacute;tats finis. Il est
          particuli&egrave;rement bien adapt&eacute; &agrave; la programmation de syst&egrave;mes
          r&eacute;actifs, y compris les syst&egrave;mes temps-r&eacute;el et les automates de
          commande.</p><p>Seul l'ex&eacute;cutable est disponible pour le compilateur de
          langage.&nbsp;:P</p></dd><dt>G&ouml;del</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.cs.bris.ac.uk/~bowers/goedel.html" target="_top">www.cs.bris.ac.uk/~bowers/goedel.html</a>

               
            </p></li></ul></div><p>G&ouml;del est un langage de programmation d&eacute;claratif &agrave; usage
          global, de la famille des langages de programmation de logique.
          C'est un langage fortement typ&eacute;, le syst&egrave;me de typage &eacute;tant bas&eacute; sur
          de la logique multitri avec du polymorphisme param&eacute;trique. Il a un
          syst&egrave;me de module. G&ouml;del supporte les entiers &agrave; pr&eacute;cision infinie,
          les nombres rationnels &agrave; pr&eacute;cision infinie, et les r&eacute;els &agrave; virgule
          flottante &eacute;galement. Il peut r&eacute;soudre les contraintes sur des
          domaines finis d'entiers et &eacute;galement les contraintes rationnelles
          lin&eacute;aires. Il supporte le traitement des ensembles finis. Il a
          &eacute;galement une r&egrave;gle de calcul flexible et un op&eacute;rateur d'&eacute;lagage qui
          g&eacute;n&eacute;ralise la validation des langages de programmation de logique
          concourante. Un accent consid&eacute;rable est mis sur l'infrastructure
          m&eacute;ta-logique de G&ouml;del qui fournit un support significatif pour les
          m&eacute;ta-programmes qui font de l'analyse, de la transformation, de la
          compilation, de la v&eacute;rification, du d&eacute;bogage, et ainsi de
          suite.</p></dd><dt>CLisp (Lisp)</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://clisp.sourceforge.net/" target="_top">clisp.sourceforge.net/</a>

               
            </p></li><li><p>
               Site Web officiel&nbsp;: 

              <a href="http://clisp.cons.org/" target="_top">clisp.cons.org/</a>

               
            </p></li></ul></div><p>CLisp est une impl&eacute;mentation de "Common Lisp" r&eacute;alis&eacute;e par
          Bruno Haible et Michael Stoll. Il supporte principalement le Lisp
          d&eacute;crit par Common LISP: The Language (2nd edition) et le standard
          Common Lisp ANSI. CLisp comprend un interpr&eacute;teur, un
          byte-compilateur, un grand sous ensemble de CLOS ("Object-Oriented
          Lisp", Lisp Orient&eacute; Objet), une interface de langage externe et,
          pour certaines machines, un &eacute;diteur d'&eacute;cran.</p><p>On choisit la langue d'interface utilisateur (anglais,
          allemand, fran&ccedil;ais) au moment de l'ex&eacute;cution. Les principaux
          paquetages qui fonctionnent dans CLisp incluent CLX et Garnet. CLisp
          ne requiert que 2 Mo de m&eacute;moire seulement.</p></dd><dt>CMU Common Lisp</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.cons.org/cmucl/" target="_top">www.cons.org/cmucl/</a>

               
            </p></li><li><p>
               Site Web&nbsp;: 

              <a href="http://ww.telent.net/lisp/howto.html" target="_top">ww.telent.net/lisp/howto.html</a>

               
            </p></li></ul></div><p>CMU Common Lisp est un environnement de programmation Common
          Lisp de "puissance industrielle" de domaine public. Une grande
          partie des changements de X3j13 ont &eacute;t&eacute; incorpor&eacute;s dans CMU CL.
          Partout o&ugrave; cela &eacute;tait possible, ceci a &eacute;t&eacute; fait afin de permettre de
          mani&egrave;re transparente l'utilisation soit du CLtL1, soit du CL ANSI
          propos&eacute;. Les nouvelles fonctionnalit&eacute;s les plus int&eacute;ressantes pour
          les utilisateurs sont probablement les fonctions SETF, LOOP et la
          macro WITH-COMPILATION-UNIT.</p></dd><dt>GCL (Lisp)</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site FTP&nbsp;: 

              <a href="ftp://ftp.ma.utexas.edu/pub/gcl/" target="_top">ftp.ma.utexas.edu/pub/gcl/</a>

               
            </p></li></ul></div><p>GNU Common Lisp (GCL) poss&egrave;de un compilateur et un
          interpr&eacute;teur pour Common Lisp. Il &eacute;tait connu auparavant sous le nom
          de Kyoto Common Lisp. Il est tr&egrave;s portable et extr&ecirc;mement efficace
          sur une large gamme d'applications. Il soutient la comparaison au
          niveau performance avec les Lisps commerciaux sur un grand nombre de
          d&eacute;montreurs de th&eacute;or&egrave;mes et de syst&egrave;mes d'alg&egrave;bre symbolique. Il
          supporte la sp&eacute;cification CLtL1 mais &eacute;volue vers la d&eacute;finition
          propos&eacute;e de norme ANSI. GCL compile vers du C et utilise ensuite les
          compilateurs C d'optimisation de code natif (ex.: GCC). Une fonction
          comportant un nombre fixe d'arguments et une valeur se transforme en
          une fonction C du m&ecirc;me nombre d'arguments, renvoyant une valeur, GCL
          a donc une efficacit&eacute; maximale sur de tels appels. Il a un garbage
          collector [NdT&nbsp;: ramasse-miettes] classique qui offre une grande
          libert&eacute; au compilateur C pour mettre les valeurs Lisp dans des
          registres arbitraires.</p><p>Il poss&egrave;de un d&eacute;bogueur Lisp niveau source pour le code
          interpr&eacute;t&eacute;, avec affichage du code source dans une fen&ecirc;tre Emacs.
          Son outil de profilage (bas&eacute; sur les outils de profilage C) compte
          les appels de fonction et le temps pass&eacute; dans chaque
          fonction.</p></dd><dt>GNU Prolog</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://pauillac.inria.fr/~diaz/gnu-prolog/" target="_top">pauillac.inria.fr/~diaz/gnu-prolog/</a>

               
            </p></li><li><p>
               Site Web&nbsp;: 

              <a href="http://www.gnu.org/software/prolog/prolog.html" target="_top">www.gnu.org/software/prolog/prolog.html</a>

               
            </p></li></ul></div><p>GNU Prolog est un compilateur Prolog gratuit, et r&eacute;solveur de
          contraintes sur les domaines finis, d&eacute;velopp&eacute; par Daniel Diaz. GNU
          Prolog accepte des programmes en Prolog+contraintes et produit des
          ex&eacute;cutables natifs (comme gcc le fait &agrave; partir de code source C).
          L'ex&eacute;cutable obtenu est alors autonome. La taille de cet ex&eacute;cutable
          peut &ecirc;tre relativement petite puisque GNU Prolog peut &eacute;viter de lier
          le code de la plupart des pr&eacute;dicats int&eacute;gr&eacute;s inutilis&eacute;s. Les
          performances de GNU Prolog sont tr&egrave;s encourageantes (comparables &agrave;
          celles des syst&egrave;mes commerciaux).</p><p>En plus de la compilation en code ex&eacute;cutable natif, GNU Prolog
          offre un interpr&eacute;teur interactif classique (haut niveau) avec un
          d&eacute;bogueur.</p><p>La partie Prolog se conforme aux standards ISO pour Prolog
          avec beaucoup d'extensions tr&egrave;s utiles &agrave; l'usage (variables
          globales, interface syst&egrave;me d'exploitation, sockets, ...).</p><p>GNU Prolog comprend &eacute;galement un efficace r&eacute;solveur de
          contraintes sur Domaines Finis (FD), ce qui ouvre la programmation
          logique par contraintes &agrave; l'utilisateur, en combinant la puissance
          de la programmation par contraintes &agrave; la d&eacute;clarativit&eacute; de la
          programmation logique.</p></dd><dt>IBAL</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.eecs.harvard.edu/~avi/IBAL/" target="_top">www.eecs.harvard.edu/~avi/IBAL/</a>

               
            </p></li></ul></div><p>:TODO:</p></dd><dt>lush</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://lush.sourceforge.net/" target="_top">lush.sourceforge.net/</a>

               
            </p></li></ul></div><p>:TODO:</p></dd><dt>Maude</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://maude.cs.uiuc.edu/" target="_top">maude.cs.uiuc.edu/</a>

               
            </p></li></ul></div><p>:TODO:</p></dd><dt>Mercury</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.cs.mu.oz.au/research/mercury/" target="_top">www.cs.mu.oz.au/research/mercury/</a>

               
            </p></li></ul></div><p>Mercury est un nouveau langage de programmation logique,
          purement d&eacute;claratif. Tout comme Prolog et d'autres langages de
          programmation logique existants, c'est un langage tr&egrave;s haut niveau
          qui permet aux programmeurs de se concentrer sur le probl&egrave;me plut&ocirc;t
          que sur les d&eacute;tails bas niveau tels que la gestion de la m&eacute;moire.
          Contrairement &agrave; Prolog, qui est orient&eacute; vers la programmation
          exploratoire, Mercury est con&ccedil;u pour la construction de grands
          syst&egrave;mes logiciels fiables et efficaces par des &eacute;quipes de
          programmeurs. Par cons&eacute;quent, programmer en Mercury apporte une
          touche diff&eacute;rente par rapport &agrave; la programmation en Prolog.</p></dd><dt>Mozart</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.mozart-oz.org/" target="_top">www.mozart-oz.org/</a>

               
            </p></li></ul></div><p>Le syst&egrave;me Mozart fournit un support de pointe dans 2 domaines
         &nbsp;: le calcul distribu&eacute; ouvert et l'inf&eacute;rence bas&eacute;e sur les
          contraintes. Mozart impl&eacute;mente Oz, un langage concourant orient&eacute;
          objet avec synchronisation des flux de donn&eacute;es. Oz combine la
          programmation distribu&eacute;e et concourante avec l'inf&eacute;rence logique
          bas&eacute;e sur les contraintes, ce qui en fait un choix excellent pour le
          d&eacute;veloppement des syst&egrave;mes multiagents. Mozart est une plateforme
          id&eacute;ale aussi bien pour les applications distribu&eacute;es polyvalentes que
          pour les probl&egrave;mes difficiles n&eacute;cessitant une optimisation
          sophistiqu&eacute;e et des capacit&eacute;s d'inf&eacute;rence. Nous avons d&eacute;velopp&eacute; des
          applications de planification et de gestion du temps, de placement
          et de configuration, de repr&eacute;sentation du langage naturel et des
          connaissances, de syst&egrave;mes multiagent et d'outils de collaboration
          sophistiqu&eacute;s.</p></dd><dt>SWI Prolog</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.swi-prolog.org/" target="_top">www.swi-prolog.org/</a>

               
            </p></li></ul></div><p>SWI est une version gratuite de Prolog dans la famille Prolog
          Edinburgh (la rendant de ce fait tr&egrave;s similaire &agrave; Quintus et &agrave;
          beaucoup d'autres versions), qui contient&nbsp;: une grande biblioth&egrave;que
          de pr&eacute;dicats int&eacute;gr&eacute;s, un syst&egrave;me de modules, un garbage collector,
          une interface bidirectionnelle avec le langage C, et beaucoup
          d'autres dispositifs encore. Il est cens&eacute; &ecirc;tre un langage &eacute;ducatif,
          donc son code compil&eacute; n'est pas le plus rapide. Bien que sa
          similarit&eacute; avec Quintus permette un portage facile.</p><p>XPCE est librement et gratuitement disponible en ex&eacute;cutable
          pour la version Linux de SWI-Prolog. XPCE est un
          paquetage/environnement de d&eacute;veloppement d'interface graphique (GUI)
          X-window orient&eacute; objet.</p></dd><dt>Push</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://hampshire.edu/lspector/push.html" target="_top">hampshire.edu/lspector/push.html</a>

               
            </p></li></ul></div><p>:TODO:</p></dd><dt>Kali Scheme</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.neci.nj.nec.com/PLS/Kali.html" target="_top">www.neci.nj.nec.com/PLS/Kali.html</a>

               
            </p></li></ul></div><p>Kali Scheme est une impl&eacute;mentation distribu&eacute;e de Scheme qui
          permet une transmission efficace d'objets d'ordre sup&eacute;rieur tels que
          les fermetures et continuations. L'int&eacute;gration d'&eacute;quipements de
          communication distribu&eacute;e dans un langage de programmation &eacute;volu&eacute;
          engendre un certain nombre d'abstractions et de paradigmes nouveaux
          pour l'informatique distribu&eacute;e. Parmi ces derniers nous avons les
          politiques de migration des processus et l'&eacute;quilibrage de charge,
          personnalis&eacute;s par l'utilisateur, les calculs distribu&eacute;s li&eacute;s
          incr&eacute;mentalement, les agents, et les applications client-serveur
          param&eacute;tr&eacute;es. Kali Scheme supporte la simultan&eacute;it&eacute; et la
          communication, gr&acirc;ce aux proc&eacute;dures et continuations de premi&egrave;re
          classe. Il int&egrave;gre les proc&eacute;dures et continuations dans un cadre
          distribu&eacute; bas&eacute; sur des messages qui permet &agrave; n'importe quel objet
          Scheme (y compris les vecteurs de code) d'&ecirc;tre envoy&eacute; et re&ccedil;u dans
          un message.</p></dd><dt>RScheme</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.rscheme.org/" target="_top">www.rscheme.org/</a>

               
            </p></li><li><p>
               Site FTP&nbsp;: 

              <a href="ftp://ftp.rscheme.org/pub/rscheme/" target="_top">ftp.rscheme.org/pub/rscheme/</a>

               
            </p></li></ul></div><p>RScheme est une version orient&eacute;e objet &eacute;tendue du dialecte
          Scheme de Lisp. RScheme est librement redistribuable, et il offre
          des performances raisonnables en d&eacute;pit de son extraordinaire
          portabilit&eacute;. RScheme peut &ecirc;tre compil&eacute; en C, et le C peut ensuite
          &ecirc;tre compil&eacute; avec un compilateur C habituel pour g&eacute;n&eacute;rer du code
          machine. Cependant, par d&eacute;faut, RScheme compile en code objet qui
          est interpr&eacute;t&eacute; par une machine virtuelle (un moteur d'ex&eacute;cution).
          Cela assure une compilation rapide et permet de conserver un code de
          taille r&eacute;duite. En g&eacute;n&eacute;ral, nous recommandons l'utilisation du
          syst&egrave;me de g&eacute;n&eacute;ration de code objet (activ&eacute; par d&eacute;faut), et de ne
          compiler en code machine que vos programmes dont le temps
          d'ex&eacute;cution est critique. Cela permet un bon compromis taille
          m&eacute;moire/temps d'ex&eacute;cution. (voir le site web pour plus de
          d&eacute;tails)</p></dd><dt>Scheme 48</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://s48.org/" target="_top">s48.org</a>

               
            </p></li></ul></div><p>Scheme 48 est une impl&eacute;mentation de Scheme bas&eacute;e sur une
          architecture de machine virtuelle. Scheme 48 est con&ccedil;u pour &ecirc;tre
          simple, souple, fiable, et rapide. Il devrait &ecirc;tre facilement
          portable vers des machines 32 bits qui ont POSIX et le support du C
          ANSI. En plus de l'environnement de d&eacute;veloppement et des proc&eacute;dures
          usuelles int&eacute;gr&eacute;es de Scheme, les logiciels de biblioth&egrave;ques
          incluent le support des macros hygi&eacute;niques (comme cela est d&eacute;crit
          dans le rapport Scheme Revised^4), du multit&acirc;che, des
          enregistrements, de la gestion des exceptions, des tables de
          hachage, des tableaux, des pointeurs nuls, et du FORMAT. Scheme 48
          impl&eacute;mente et exploite un syst&egrave;me exp&eacute;rimental de modules vaguement
          d&eacute;riv&eacute; de Standard ML et de Scheme Xerox. L'environnement de
          d&eacute;veloppement supporte les changements interactifs de modules et
          d'interfaces.</p></dd><dt>SCM (Scheme)</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://swissnet.ai.mit.edu/~jaffer/SCM.html" target="_top">swissnet.ai.mit.edu/~jaffer/SCM.html</a>

               
            </p></li></ul></div><p>SCM est conforme &agrave; la r&eacute;vision 5 du rapport sur l'Algorithmic
          Language Scheme (le langage algorithmique Scheme) et &agrave; la
          sp&eacute;cification IEEE P1178. SCM est &eacute;crit en C. Il utilise les
          utilitaires suivants (tous disponibles sur le site ftp)&nbsp;:
          <div class="itemizedlist"><ul type="disc"><li><p>
                 SLIB (Standard Scheme Library) est une biblioth&egrave;que Scheme portable qui est pr&eacute;vue pour fournir des fonctions de compatibilit&eacute; et des utilitaires pour toutes les impl&eacute;mentations Scheme standard, y compris SCM, Chez, Elk, Gambit, MacScheme, MITScheme, scheme-&gt;C, Scheme 48, T3.1, et VSCM, et est disponible sous le nom de fichier slib2c0.tar.gz. Ecrit par Aubrey Jaffer&nbsp;; 
              </p></li><li><p>
                 JACAL est un syst&egrave;me symbolique de math&eacute;matiques &eacute;crit en Scheme, et est disponible sous le nom de fichier jacal1a7.tar.gz&nbsp;; 
              </p></li><li><p>
                 Des interfaces vers les biblioth&egrave;ques standards comprenant un filtrage d'expressions r&eacute;guli&egrave;res de cha&icirc;nes de caract&egrave;res REGEX et le paquetage de gestion d'&eacute;cran CURSES&nbsp;; 
              </p></li><li><p>
                 Sont disponibles pour &ecirc;tre ajout&eacute;s des paquetages parmi lesquels un d&eacute;bogueur interactif, une base de donn&eacute;es, des composants X-window, des traitements graphiques BGI, Motif, et des paquetages Open-Windows&nbsp;; 
              </p></li><li><p>
                 Un compilateur (HOBBIT, disponible s&eacute;par&eacute;ment) et la liaison dynamique des modules compil&eacute;s. 
              </p></li></ul></div></p></dd><dt>Shift</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.path.berkeley.edu/shift/" target="_top">www.path.berkeley.edu/shift/</a>

               
            </p></li></ul></div><p>Shift est un langage de programmation permettant de d&eacute;crire
          les r&eacute;seaux dynamiques d'automates hybrides. De tels syst&egrave;mes sont
          constitu&eacute;s de composants qui peuvent &ecirc;tre cr&eacute;&eacute;s, interconnect&eacute;s et
          d&eacute;truits au fur et &agrave; mesure que le syst&egrave;me &eacute;volue. Les composants
          montrent un comportement hybride, constitu&eacute; de phases continues
          s&eacute;par&eacute;es par des transitions &agrave; &eacute;v&eacute;nements discrets. Les composants
          peuvent &eacute;voluer ind&eacute;pendamment, ou ils peuvent interagir par leurs
          entr&eacute;es, leurs sorties et les &eacute;v&eacute;nements export&eacute;s. Le r&eacute;seau
          d'interaction lui-m&ecirc;me peut &eacute;voluer.</p></dd><dt>YAP Prolog</dt><dd><div class="itemizedlist"><ul type="disc"><li><p>
               Site Web&nbsp;: 

              <a href="http://www.ncc.up.pt/~vsc/Yap/" target="_top">www.ncc.up.pt/~vsc/Yap/</a>

               
            </p></li></ul></div><p>YAP est un compilateur Prolog &agrave; haute performance d&eacute;velopp&eacute;
          par LIACC/Universidade do Porto. Son moteur Prolog est bas&eacute; sur WAM
          (Warren Abstract Machine, Machine Abstraite Warren), avec plusieurs
          optimisations pour de meilleures performances. YAP suit la tradition
          d'Edinburgh, et est en grande partie compatible avec Prolog DEC-10,
          Quintus Prolog, et particuli&egrave;rement avec le C-Prolog. Le travail sur
          la version la plus r&eacute;cente de YAP tends vers plusieurs objectifs&nbsp;:
          <div class="itemizedlist"><ul type="disc"><li><p>
                 la portabilit&eacute;&nbsp;: le syst&egrave;me tout entier est maintenant &eacute;crit en C. YAP compile sur les machines 32 bits les plus courantes, tels que les Sun et les PC sous Linux, et sur les machines 64 bits, les Alphas sur lesquelles tournent OSF Unix et Linux. 
              </p></li><li><p>
                 la performance&nbsp;: nous avons optimis&eacute; l'&eacute;mulateur pour obtenir des performances comparables voire meilleures que celles des syst&egrave;mes Prolog les plus connus. En r&eacute;alit&eacute;, la version actuelle de YAP est plus puissante que l'originale, &eacute;crite en assembleur. 
              </p></li><li><p>
                 la robustesse&nbsp;: nous avons test&eacute; le syst&egrave;me avec un grand &eacute;chantillonnage d'applications Prolog. 
              </p></li><li><p>
                 l'extensibilit&eacute;&nbsp;: YAP a d&egrave;s l'origine &eacute;t&eacute; con&ccedil;u structurellement pour encapsuler la manipulation de termes. Ces principes &eacute;taient utilis&eacute;s, par exemple, pour impl&eacute;menter une interface C simple et puissante. La nouvelle version de YAP &eacute;tend ces principes pour adapter les extensions &agrave; l'algorithme d'unification, qui, selon nous, sera utile pour l'impl&eacute;mentation d'extensions telles que la programmation de contraintes. 
              </p></li><li><p>
                 la compl&eacute;tude&nbsp;: YAP fournit depuis longtemps la plupart des installations int&eacute;gr&eacute;es que l'on attend d'une impl&eacute;mentation Prolog Edinburgh. Celles-ci comprennent les fonctionnalit&eacute;s d'entr&eacute;es/sorties, les op&eacute;rations de bases de donn&eacute;es, et les modules. Le travail sur YAP a maintenant pour objectif d'&ecirc;tre compatible avec le standard Prolog. 
              </p></li><li><p>
                 l'ouverture&nbsp;: nous voudrions faire en sorte que les nouveaux d&eacute;veloppements de YAP soient ouverts &agrave; la communaut&eacute; des utilisateurs. 
              </p></li><li><p>
                 la recherche&nbsp;: YAP est un projet moteur pour la recherche dans et en dehors de notre groupe. Actuellement la recherche continue sur le parall&eacute;lisme et la tabulation, et nous avons commenc&eacute; &agrave; travailler sur la prise en compte de la manipulation des contraintes. 
              </p></li></ul></div></p></dd></dl></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s06.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ar01s08.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">6.&nbsp;Les agents&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;8.&nbsp;Manquant et Inactif</td></tr></table></div></body></html>