En plus de Lisp et Prolog ce qui est un bon langage de programmation pour la programmation de systèmes intelligents?
Réponses
Trop de publicités?L'IA est devenue un immense champ qu'il est pratiquement impossible de dire dans quelle langue est le "meilleur" pour elle. Tout d'abord, vous devez restreindre le domaine, et de l'état de ce sous-domaine de l'IA qui vous intéressent (vision par ordinateur, l'apprentissage de la machine, de la recherche, de la planification, de la robotique, traitement du langage naturel, etc.). Deuxièmement, êtes-vous en faisant des recherches, j'. e. développement de l'algorithme, ou voulez-vous construire un système de production pour être utilisés par des personnes? Dans le premier cas, vous devez choisir une langue qui vous permet de facilement prototype de trucs. Pour que Matlab serait un bon choix, si vous y avez accès.
Si vous êtes à la construction d'un système de production, comme un système de vision, un robot, ou un jeu, puis vous sera limité dans votre choix d'une langue par les conditions de vitesse et par la plate-forme sur laquelle le système va fonctionner. E. g. vous serait probablement écrire un système de vision en C++, même si vous pouvez obtenir loin avec le faire en Java. Lisp, sur l'autre main peut-être pas très approprié.
Haskell est aussi un très bon langage de programmation pour les IA. Paresseux de l'évaluation et de la liste et LogicT monades faire, il est facile d'exprimer les non-déterministe des algorithmes, ce qui est souvent le cas. Infini de structures de données sont grands pour les arbres de recherche. La langue de fonctionnalités permettent de proposer un moyen d'exprimer les algorithmes. Le seul inconvénient est que le fait de travailler avec des graphiques est un peu plus difficile au début à cause de la pureté.
Regardez le document suivant, qui compare Haskell et Prolog pour la programmation de recherche de problèmes:
S'échapper de Zurg: Un Exercice de Logique de Programmation
http://web.engr.oregonstate.edu/~erwig/documents/Zurg_JFP04.pdf
Une caractéristique de la langue, qui le rend très intéressant pour l'IA est homoiconicity, cela signifie que le code et les données ont la même représentation interne (lire le texte pour une meilleure explication).
Une langue avec cette propriété est capable de modifier lui-même afin de mieux répondre au problème.
Ce sont quelques-homoiconic langues:
- Clojure
- Lisp
- Prologue
- Snobol
- TCL
Suite a également été largement utilisé je pense
- l'esprit sur sourceforge
- Revue de livre de la Conception et de la Programmation Personnelle de Systèmes Experts
Cela dépend de ce que tu veux dire par l'IA et les systèmes intelligents, comme il est assez un champ diversifié. Les systèmes intelligents peuvent avoir massives de pilotes de base de données afin qu'ils puissent paraître "bien informé". Dans les jeux vidéo mais, l'idée est de faire de l'IA entité se comporter de façon engageante (par exemple, un adversaire) et de ne pas "se comporter bêtement" (par exemple, courir dans un mur, etc). D'autres formes de l'IA sont vraiment à la recherche d'un problème de domaine pour une réponse, où les langages fonctionnels (par exemple, Haskell, Erlang) sont très forts parce qu'ils sont déclaratives.
Jeu vidéo de l'IA a tendance à être dynamique, c'est à dire de vous décider à faire quelque chose, par exemple les entrées, et si les entrées de déclenchement d'un changement de commencer à faire quelque chose d'autre. E. g. Je marche dans une zone où un ogre est en attente; il me voit (trigger) et m'attaque (changement de l'état d'attente). Les langues qui prennent en charge les suites de faire de la mise en œuvre plus facile, car ils peuvent être mis à jour et de conserver leur état (c'est à dire vous vous souvenez de ce que vous avez fait la dernière fois).
Lua est largement utilisé dans les jeux vidéo, car il est facile à intégrer, rapide, léger et a coroutines (coopérative s/w threading). Python est également utilisé car il est facile à apprendre. De nombreux jeux ont leurs propres langages de script qui permettent la configuration et le contrôle de l'écoulement de jeu et de la logique. Généralement, les langages de script sont utilisés dans les jeux parce que vous n'avez pas à recompiler le jeu pour faire un changement dans le comportement de jeu, de sorte que le temps de développement est plus rapide.
Prolog est utilisé pour l'IA, car il est déclaratif. Dans les langages déclaratifs vous "spécifiez le problème", plutôt qu'explicitement état "que faire" (c'est à dire comme vous le faites dans langages, comme le C). D'autres langues seront choisis en fonction de leur pertinence pour résoudre le problème en face de vous.