182 votes

Pourquoi Lisp est-il utilisé pour l'IA ?

J'ai appris le Lisp pour élargir mes horizons car j'ai entendu dire qu'il était utilisé dans la programmation de l'IA. Après avoir exploré un peu, je n'ai pas encore trouvé d'exemples d'IA ou quoi que ce soit dans le langage qui le rende plus enclin à l'utiliser.

Lisp était-il utilisé dans le passé parce qu'il était disponible, ou y a-t-il quelque chose qui m'échappe ?

121voto

Nathan Sanders Points 10641

Lisp a été utilisé en IA jusqu'à la fin des années 1980. Dans les années 80, cependant, Common Lisp a été présenté au monde des affaires comme le "langage de l'IA" ; le contrecoup a forcé la plupart des programmeurs d'IA à utiliser C++ pendant quelques années. De nos jours, les prototypes sont généralement écrits dans un langage dynamique plus jeune (Perl, Python, Ruby, etc.) et les implémentations des recherches réussies sont généralement en C ou C++ (parfois Java).

Si vous êtes curieux au sujet des années 70... eh bien, je n'étais pas là. Mais je pense que Lisp a été un succès dans la recherche en IA pour trois raisons (par ordre d'importance) :

  1. Lisp est un excellent outil de prototypage. Il a été le meilleur pendant un très long moment. Lisp est toujours excellent pour s'attaquer à un problème que vous ne savez pas encore comment résoudre. Cette description caractérise parfaitement l'IA.
  2. Lisp supporte bien la programmation symbolique. L'ancienne IA était également symbolique. Elle a d'ailleurs été unique à cet égard pendant longtemps.
  3. Lisp est très puissant. La distinction entre le code et les données est plus faible. se sent plus extensible que d'autres langages, car vos fonctions et macros ressemblent aux fonctions intégrées.

Je n'ai pas L'ancien livre de Peter Norvig sur l'IA mais il est censé être un bon moyen d'apprendre à programmer des algorithmes d'IA en Lisp.

Avertissement : je suis un étudiant diplômé en linguistique informatique. Je connais le sous-domaine du traitement du langage naturel bien mieux que les autres domaines. Peut-être que Lisp est plus utilisé dans d'autres sous-domaines.

60voto

Rainer Joswig Points 62532

Lisp est utilisé pour l'IA parce qu'il supporte très bien la mise en œuvre de logiciels qui calculent avec des symboles. Les symboles, les expressions symboliques et le calcul avec ces derniers sont au cœur de Lisp.

Les domaines typiques de l'IA pour le calcul avec des symboles étaient/sont : l'algèbre informatique, la démonstration de théorèmes, les systèmes de planification, le diagnostic, les systèmes de réécriture, la représentation des connaissances et le raisonnement, les langages logiques, la traduction automatique, les systèmes experts, etc.

Il n'est donc pas surprenant que de nombreuses applications d'IA célèbres dans ces domaines aient été écrites en Lisp :

  • Macsyma comme le premier grand système de calcul formel.
  • ACL2 est un vérificateur de théorèmes largement utilisé, par exemple par AMD.
  • DART comme le planificateur logistique utilisé pendant la première guerre du Golfe par l'armée américaine. On dit que cette seule application Lisp a remboursé tous les investissements américains dans la recherche sur l'IA à l'époque.
  • SPIKE, l'application de planification et d'ordonnancement du télescope spatial Hubble. Également utilisée par plusieurs autres grands télescopes.
  • CYC, l'un des plus grands systèmes logiciels écrits. Représentation et raisonnement dans le domaine de la connaissance du sens commun humain.
  • METAL, l'un des premiers systèmes de traduction en langage naturel utilisés commercialement.
  • L'Authorizer's Assistant d'American Express, qui vérifie les transactions par carte de crédit.

Il existe des milliers d'applications dans ces domaines qui sont écrites en Lisp. Elles ont en commun d'avoir besoin de capacités spéciales dans le domaine du traitement symbolique. On implémente des langages spéciaux qui ont des interpréteurs/compilateurs spéciaux dans ces domaines au dessus de Lisp. Lisp permet de créer des représentations pour les données et les programmes symboliques et peut implémenter toutes sortes de machines pour manipuler ces expressions (formules mathématiques, formules logiques, plans, ...).

(Notez que de nombreux autres langages de programmation à usage général sont également utilisés en IA. J'ai essayé de répondre à la question de savoir pourquoi Lisp est particulièrement utilisé en IA).

22voto

dsm Points 7429

L'une des raisons est qu'il vous permet d'étendre le langage avec des constructions spécifiques à votre domaine, ce qui en fait, effectivement, un langage spécifique au domaine. Cette technique est incroyablement puissante car elle vous permet de raisonner sur le problème que vous résolvez, plutôt que de mélanger des bits.

12voto

aib Points 18608

J'ai toujours pensé qu'étant un langage fonctionnel, il ne fait pas de différence entre le code et les données. Tout, y compris les définitions de fonctions et les appels de fonctions, peut être traité comme des listes et modifié comme n'importe quel autre élément de données.

Il est donc facile d'écrire un code qui s'auto-inspecte et s'auto-modifie.

8voto

Rich Points 2429

Une réponse possible est que l'IA est une collection de problèmes très difficiles, et que Lisp est un bon langage pour résoudre les problèmes difficiles, pas seulement l'IA.

Les macros, les fonctions génériques et la richesse de l'introspection permettent un code concis et une introduction facile des abstractions du domaine - c'est un langage que l'on peut rendre plus puissant. Pour de nombreux problèmes, ce n'est pas nécessaire et cela entraîne des coûts, mais pour d'autres problèmes, cette puissance est nécessaire pour progresser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X