web-dev-qa-db-fra.com

Langue de programmation récente pour AI?

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

Les changements se produisent beaucoup sur de nombreuses autres langues spécifiques à domaines, mais dans le domaine de l'IA, il n'avait pas abouti autant que dans les langages ou scripts spécifiques au Web, etc.

Y a-t-il récemment des langages de programmation destinés à changer le jeu dans l'AI et à tirer parti des insuffisances des anciennes langues?

15

Vous pouvez trouver des réponses à vos questions dans un numéro spécial récent "Sprachen der Ki" ("langues d'AI") du Journal AI allemand 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 incombait: "Quelle langue utilisez-vous pour créer vos programmes IA et pourquoi?" Voici une pré-empreinte: http://ai.cs.unibas.ch/papers/schmid-et-al-kijournal2012.pdf

En résumé, certains chercheurs d'AI jurent toujours par les langues classiques de l'AI Lisp et Prolog. D'autres utilisent des langues traditionnelles telles que C++, Java ou Python. D'autres encore aiment explorer de nouvelles langues de programmation ésotérique.

Je crois qu'il n'y a rien de spécial sur l'AI qui nécessiterait des langages de programmation spéciaux. Ce que les chercheurs veulent en général sont des langages de programmation qui permettent un prototypage rapide. C'est quelque chose de vieilles langues de l'AI (Lisp, prolog) et les plus récentes langues "script" (Perl, python, rubis ou récentes langues JVM telles que Clojure) sont excellentes pour.

Certains chercheurs veulent aller au-delà du prototypage, ou ils ont des exigences particulières (par exemple de grandes données) et doivent réétablir leurs algorithmes dans des langages compilés ou fortement typés tels que C, C++ ou Java une fois le La phase de programmation exploratoire est terminée et ils ont une meilleure adhérence du problème. Certains diraient que à ce moment-là (lorsque le problème est bien compris), vous ne faites plus face à IA.

Revenez à votre dernière question, tous les développements importants dans les nouvelles langues de l'IA auxquels je suis au courant sont inspirés par la programmation basée sur les contraintes. Certains ont entré des implémentations Prologs telles que Sicstus et SWI, d'autres ont engendré des langages de Prologs tels que Mercury et Mozart/Oz. Bien sûr, il y a probablement de nouveaux développements importants que je ne suis pas au courant.

8
Christian Pietsch

Alors que la plupart de ces réponses se concentrent sur le mot "langage" parce que vous l'avez utilisée dans votre question, je ne crois pas que vous devriez penser à une langue spécifique lors de la pensée d'AI.

Je travaille avec cette technologie depuis des années et je travaille actuellement avec Assistants à la preuve et convertissant du code de OCAML à F #. Ce n'est pas la langue qui atteint l'IA mais des algorithmes spécifiques implémentés dans la langue. Pour PROG, ceci est un moteur d'inférence basé sur nification . Maintenant, si vous commencez par l'unification et regardez comment il a été personnalisé et avancé au fil des ans, je pense que vous trouverez la progression de l'avancement que vous recherchez. Ne vous concentrez pas sur la langue, concentrez-vous sur les algorithmes.

Par exemple, tapez l'inférence dans les langues fonctionnelles Hindley-Milner qui repose sur l'unification.

Un autre exemple spécifique à l'assistant de preuve est ici , avis prolog.ml. Le moteur d'inférence pour Prolog est implémenté dans OCAML et est traduit en F #. Ainsi, tandis que OCAML et F # ne sont pas notés normalement sous forme de langues AI, elles sont entièrement capables de mettre en œuvre les algorithmes de l'AI.

2
Guy Coder

Je dirais que cela dépend de ce que vous entendez par AI. L'apprentissage des machines en général a constaté une certaine évolution rapide de l'outillage. 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 dans Python, C #, Ruby, OCAML et Java, juste pour nommer quelques-uns.

Si vous faites une manipulation à grande échelle de données 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 coup d'œil à Mahout . Ce n'est pas vraiment un "langage de programmation" en soi, mais c'est un ensemble d'outils pour ce type de problème. Vous pouvez écrire du code modèle en Java ou d'autres langues JVM comme Groovy (une langue dynamique, raisonnablement expressive) ou un clojure (Lisp-like).

Je ne suis pas sûr de savoir pourquoi vous envisageriez Lisp daté; C'est là que la plupart des "nouvelles" fonctionnalités de langue dans d'autres langues (fermetures, etc.) sont originaires de.

Bien entendu, les techniques d'apprentissage de la machine se sont généralement déplacées vers des modèles probabilistes que sur la logique binaire, une approche de style de décision-arbre que la plupart des efforts de l'IA précoces ont commencé, il est donc possible de soutenir que l'apprentissage de la machine est une branche ou une diversion de la grande tente. d'AI.

1
JasonTrue

Le langage de choix pour AI que j'ai utilisé au dos il y a des années était prolog, qui a Visual Prolog version fournie avec IDE J'aime dans Delphi.

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

Toutefois, Affiche la tendance récente que tout OOP Langue comme C #, Java, Python, Haskell, etc. devient programmable pour les applications AI.

0
Yusubov