Langage de programmation récent pour l'IA? [fermé]

15

Pendant quelques décennies, le langage de programmation de choix pour l'IA était soit Prolog ou LISP , et quelques autres qui ne sont pas si bien connus . La plupart d'entre eux ont été conçus avant les années 70.

Les changements se produisent souvent dans de nombreux autres langages spécifiques à des domaines, mais dans le domaine de l'IA, ils n'avaient pas fait surface autant que dans les langages spécifiques au Web ou les scripts, etc.

Y a-t-il des langages de programmation récents qui étaient destinés à changer le jeu dans l'IA et à apprendre des insuffisances des anciens langages?

Eduard Florinescu
la source
1
Octave est un bon langage pour l'apprentissage automatique si cette branche de l'IA vous intéresse.
setzamora
Envisagez également une approche de méta-programmation (c'est-à-dire la génération de programmes). Consultez le blog de J.Pitrat . Ensuite, le langage que vous générez pourrait ne pas avoir beaucoup d'importance, il pourrait même s'agir de C.
Basile Starynkevitch

Réponses:

23

Le cours d'IA auquel j'ai participé en ligne, enseigné à Stanford, a recommandé que Python soit utilisé pour les devoirs. Je crois que Georgia Tech utilise toujours LISP.

Le sophisme ici est "nouveau" est "bon". La recherche en IA est l'une des plus anciennes disciplines de recherche informatique. Il continue de vêler hors des sous-domaines alors que les gens réalisent que ses techniques peuvent être utilisées ailleurs. Le traitement des langues, l'apprentissage automatique et l'exploration de données sont tous des exemples d'applications "pratiques" qui utilisent une multitude de langues.

C'est donc moins que le domaine principal a changé qu'il n'a été affiné en un large éventail de disciplines connexes. C'est un peu comme dire «calcul scientifique» et s'attendre à ce que cela signifie simplement résoudre des équations linéaires.

Les langues que vous avez mentionnées ont beaucoup évolué au cours des 20 ou 30 dernières années. Lisp a engendré Common Lisp et Clojure. Prolog a engendré Visual Prolog (il a des objets ...) et Mercury (prenez Haskell et Prolog, enfermez-les dans une pièce ensemble ... tenez-vous bien loin et préparez-vous à courir).

Étant donné que la recherche sur l'IA est plus théorique, il est logique qu'elle se concentre sur la théorie (mathématiques) plutôt que sur les aspects pratiques (langues).

Cela étant dit, Google est le plus grand innovateur de technologies d'IA que je parierais. Ils ont tendance à privilégier Python (et Go and Dart mais ce n'est pas la question). Ainsi, je dirais que Python est le "langage récent de choix" mais vous pouvez également utiliser Haskell ou OCaml ou F # ou C # ou même Java.

Ingénieur du monde
la source
+1 Pour avoir mentionné Mercure.
Guy Coder
8

Vous trouverez des réponses à vos questions dans un récent numéro spécial «Sprachen der KI» («Langues de l'IA») de la revue allemande AI KI - Künstliche Intelligenz , Volume 26, Numéro 1 / Février 2012, publié par Springer. Je suis le co-auteur d'une partie d'un document de discussion qui y est inclus: "Quelle langue utilisez-vous pour créer vos programmes d'IA et pourquoi?" Voici une préimpression de celui-ci: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

En résumé, certains chercheurs en IA ne jurent que par les langages d'IA classiques Lisp et Prolog. D'autres utilisent des langages traditionnels comme C ++, Java ou Python. D'autres encore aiment explorer de nouveaux langages de programmation ésotériques.

Je crois qu'il n'y a rien de spécial dans l'IA qui nécessiterait des langages de programmation spéciaux. En général, les chercheurs veulent des langages de programmation qui permettent un prototypage rapide. C'est quelque chose d'anciens langages d'IA (Lisp, Prolog) et de nouveaux langages de «script» (Perl, Python, Ruby ou des langages JVM récents tels que Clojure) sont parfaits.

Certains chercheurs veulent aller au-delà du prototypage, ou ils ont des exigences particulières (par exemple, les mégadonnées) et doivent réimplémenter leurs algorithmes dans des langages compilés ou fortement typés tels que C, C ++ ou Java une fois la phase de programmation exploratoire terminée et ils ont un meilleure prise en main du problème. Certains diraient qu'à ce stade (lorsque le problème est bien compris), vous ne traitez plus avec l'IA.

Pour revenir à votre dernière question, tous les développements importants dans les nouveaux langages d'IA que je connais sont inspirés par la programmation basée sur les contraintes. Certains sont entrés dans des implémentations Prolog comme SICStus et SWI, d'autres ont engendré des langages de type Prolog tels que Mercury et Mozart / Oz. Bien sûr, il y aura probablement de nouveaux développements importants à ma connaissance.

Christian Pietsch
la source
2

Bien que la plupart de ces réponses se concentrent sur le mot «langue» parce que vous l'avez utilisé dans votre question, je ne pense pas que vous devriez penser une langue spécifique lorsque vous pensez à l'IA.

Je travaille avec cette technologie depuis des années et je travaille actuellement avec des assistants de vérification et convertis du code d'OCaml en F #. Ce n'est pas le langage qui réalise l'IA mais des algorithmes spécifiques implémentés dans le langage. Pour PROLOG, il s'agit d'un moteur d'inférence basé sur l' unification . Maintenant, si vous commencez par l'unification et regardez comment elle a été personnalisée et avancée au fil des ans, je pense que vous trouverez la progression de l'avancement que vous recherchez. Ne vous concentrez pas sur le langage, concentrez-vous sur les algorithmes.

À titre d'exemple, l'inférence de type dans les langages fonctionnels utilise Hindley – Milner qui est basée sur l'unification.

Un autre exemple spécifique à l'assistant de preuve est ici , notez prolog.ml. Le moteur d'inférence pour prolog est implémenté dans OCaml et traduit en F #. Ainsi, bien que OCaml et F # ne soient pas normalement notés en tant que langages AI, ils sont pleinement capables de mettre en œuvre les algorithmes AI.

Guy Coder
la source
Je dois dire que c'est exactement ce que je pense de cette question: les algorithmes sont plus importants que le langage que vous utilisez pour les écrire, c'est pourquoi chaque livre sur l'IA que j'ai lu insistait pour donner un pseudocode pour les algorithmes.
JJP
1

Je dirais que cela dépend de ce que vous entendez par IA. L'apprentissage automatique en général a connu une évolution rapide de l'outillage, de sorte qu'un certain nombre d'algorithmes de classification, de clustering et d'autres formes d'apprentissage supervisé et non supervisé, en particulier avec des modèles graphiques probabilistes, ont été mis en œuvre en Python, C #, Ruby, OCaml et Java, pour n'en nommer que quelques-uns.

Si vous manipulez des données à grande échelle pour créer des éléments tels que des moteurs de recommandation, un filtrage collaboratif ou d'autres types de problèmes d'apprentissage non supervisés ou supervisés, vous voudrez peut-être jeter un œil à Mahout . Ce n'est pas vraiment un "langage de programmation" en soi, mais c'est un ensemble d'outils pour ce genre de problème. Vous pouvez écrire du code de modèle en Java ou dans d'autres langages JVM comme groovy (un langage dynamique et raisonnablement expressif) ou clojure (de type lisp).

Je ne sais pas pourquoi vous considéreriez Lisp daté; c'est de là que proviennent la plupart des «nouvelles» fonctionnalités de langage dans d'autres langues (fermetures, etc.).

Bien sûr, les techniques d'apprentissage automatique ont généralement évolué vers des modèles probabilistes plutôt que sur la logique binaire, l'approche de style arbre de décision avec laquelle la plupart des premiers efforts de l'IA ont commencé, il est donc possible de soutenir que l'apprentissage automatique est une branche ou un détournement de la grande tente. de l'IA.

JasonTrue
la source
0

Le langage de choix pour l'IA que j'ai utilisé il y a des années était Prolog, qui a une version Visual Prolog fournie avec IDE comme dans Delphi.

Prolog (et sa version graphique Visual Prolog) est un langage de programmation logique à usage général associé à l'intelligence artificielle et à la linguistique informatique.

Cependant, la tendance récente montre que tout langage OOP comme C #, Java, Python, Haskell, etc. devient programmable pour les applications AI.

Yusubov
la source
3
Depuis quand est Haskell OOP?
Andrea
vous pouvez émuler OOP à Haskell, non?
Yusubov
1
vous pouvez l 'émuler dans n'importe quelle langue, cela ne signifie pas que vous considéreriez normalement n'importe quelle langue comme étant OO
jk.