¿Lenguaje de programación reciente para IA? [cerrado]


15

Durante algunas décadas, el lenguaje de programación elegido para AI fue Prolog o LISP , y algunos otros más que no son tan conocidos . La mayoría de ellos fueron diseñados antes de los años 70.

Los cambios ocurren mucho en muchos otros lenguajes específicos de dominios, pero en el dominio de IA no había aparecido tanto como en los lenguajes específicos de la web o las secuencias de comandos, etc.

¿Hay lenguajes de programación recientes que pretenden cambiar el juego en la IA y aprender de las insuficiencias de los lenguajes anteriores?


1
Octave es un buen lenguaje para Machine Learning si esa rama de IA te interesa.
setzamora

Considere también un enfoque de metaprogramación (es decir, generación de programas). Mira en el blog de J.Pitrat . Entonces el lenguaje que generes podría no tener mucha importancia, incluso podría ser C.
Basile Starynkevitch

Respuestas:


23

El curso de IA en el que participé en línea, impartido en Stanford, recomendó que Python se usara para la tarea. Creo que Georgia Tech todavía usa LISP.

La falacia aquí es "nueva" es "buena". La investigación de IA es una de las disciplinas de investigación informática más antiguas. Continúa partiendo de los subcampos a medida que las personas se dan cuenta de que las técnicas que se utilizan pueden usarse en otros lugares. El procesamiento del lenguaje, el aprendizaje automático y la minería de datos son ejemplos de aplicaciones "prácticas" que utilizan una gran cantidad de idiomas.

Por lo tanto, es menos que el campo principal haya cambiado de lo que se ha refinado en una gran variedad de disciplinas relacionadas. Es muy parecido a decir "Computación científica" y esperar que solo signifique resolver ecuaciones lineales.

Los idiomas que ha mencionado han evolucionado bastante en los últimos 20 o 30 años. Lisp generó Common Lisp y Clojure. Prolog generó Visual Prolog (tiene objetos ...) y Mercurio (tome a Haskell y Prolog, enciérrelos en una habitación juntos ... aléjese y prepárese para correr).

Dado que la investigación de IA es más teórica, tiene sentido que se centre en la teoría (matemáticas) en lugar de los aspectos prácticos (lenguajes).

Dicho todo esto, el mayor innovador de las tecnologías de IA que apostaría es Google. Tienden a favorecer a Python (y Go y Dart, pero eso no viene al caso). Por lo tanto, diría que Python es el "lenguaje de elección reciente", pero también podría usar Haskell u OCaml o F # o C # o incluso Java.


+1 Por mencionar Mercurio.
Guy Coder

8

Puede encontrar respuestas a sus preguntas en un número especial reciente "Sprachen der KI" ("Idiomas de IA") de la revista alemana de IA KI - Künstliche Intelligenz , Volumen 26, Número 1 / Febrero de 2012, publicado por Springer. Soy coautor de una parte de un documento de debate incluido en él: "¿Qué idioma utiliza para crear sus programas de IA y por qué?" Aquí hay una preimpresión del mismo: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

En resumen, algunos investigadores de IA todavía siguen los clásicos lenguajes de IA Lisp y Prolog. Otros usan lenguajes convencionales como C ++, Java o Python. A otros les gusta explorar nuevos lenguajes de programación esotéricos.

Creo que la IA no tiene nada de especial que requiera lenguajes de programación especiales. Lo que los investigadores en general quieren es lenguajes de programación que permitan la creación rápida de prototipos. Esto es algo para los que los antiguos lenguajes de IA (Lisp, Prolog) y los nuevos lenguajes de “secuencias de comandos” (Perl, Python, Ruby o los lenguajes recientes de JVM como Clojure) son excelentes.

Algunos investigadores quieren ir más allá de la creación de prototipos, o tienen requisitos especiales (por ejemplo, big data) y necesitan volver a implementar sus algoritmos en lenguajes compilados o fuertemente tipados como C, C ++ o Java una vez que finaliza la fase de programación exploratoria y tienen un mejor agarre del problema. Algunos dirían que en ese punto (cuando el problema se entiende bien), ya no se trata de IA.

Volviendo a su última pregunta, todos los desarrollos significativos en los nuevos lenguajes de IA que conozco están inspirados en la programación basada en restricciones. Algunos han entrado en implementaciones de Prolog como SICStus y SWI, otros han generado lenguajes similares a Prolog como Mercury y Mozart / Oz. Por supuesto, es probable que haya nuevos desarrollos significativos que no conozco.


2

Si bien la mayoría de estas respuestas se centran en la palabra "lenguaje" porque la usaste en tu pregunta, no creo que debas pensar un lenguaje específico al pensar en IA.

He estado trabajando con esta tecnología durante años y actualmente estoy trabajando con asistentes de prueba y convirtiendo algunos códigos de OCaml a F #. No es el lenguaje el que logra la IA sino los algoritmos específicos implementados en el lenguaje. Para PROLOG, este es un motor de inferencia basado en la unificación . Ahora, si comienzas con la unificación y observas cómo se ha personalizado y avanzado a lo largo de los años, creo que encontrarás la progresión de avance que buscas. No se concentre en el lenguaje, concéntrese en los algoritmos.

Como ejemplo, la inferencia de tipos en lenguajes funcionales utiliza Hindley-Milner, que se basa en la unificación.

Otro ejemplo específico para el asistente de pruebas está aquí , observe prolog.ml. El motor de inferencia para prolog se implementa en OCaml y se traduce a F #. Entonces, aunque OCaml y F # no se mencionan normalmente como lenguajes de IA, son totalmente capaces de implementar los algoritmos de IA.


Debo decir que esto es exactamente lo que pienso sobre esta pregunta: los algoritmos son más importantes que el lenguaje que usas para escribirlos, es por eso que cada libro de IA que leí insistió en dar pseudocódigo para los algoritmos.
JJP

1

Diría que depende de lo que quieras decir con IA. El aprendizaje automático en general ha experimentado una rápida evolución de las herramientas, por lo que se han implementado varios algoritmos para la clasificación, la agrupación y otras formas de aprendizaje supervisado y no supervisado, especialmente con modelos gráficos probabilísticos, en Python, C #, Ruby, OCaml y Java, solo por nombrar algunos.

Si está haciendo una manipulación de datos a gran escala para construir cosas como motores de recomendación, filtrado colaborativo u otros tipos de problemas de aprendizaje sin supervisión o supervisados, es posible que desee echar un vistazo a Mahout . No es realmente un "lenguaje de programación" per se, pero es un conjunto de herramientas para este tipo de problema. Puede escribir código modelo en Java u otros lenguajes JVM como groovy (un lenguaje dinámico y razonablemente expresivo) o clojure (tipo lisp).

No estoy seguro de por qué considerarías que Lisp es anticuado; es donde se originaron la mayoría de las "nuevas" características del lenguaje en otros idiomas (cierres, etc.).

Por supuesto, las técnicas de aprendizaje automático generalmente se han movido hacia modelos probabilísticos que en la lógica binaria, el enfoque de estilo de árbol de decisión con el que comenzaron la mayoría de los primeros esfuerzos de IA, por lo que es posible argumentar que el aprendizaje automático es una rama o una desviación de la gran carpa de IA.


0

El lenguaje de elección para IA que utilicé hace años fue Prolog, que tiene la versión Visual Prolog que vino con IDE como en Delphi.

Prolog (y su versión GUI Visual Prolog) es un lenguaje de programación lógica de propósito general asociado con inteligencia artificial y lingüística computacional.

Sin embargo, la tendencia reciente muestra que cualquier lenguaje OOP como C #, Java, Python, Haskell, etc. se está volviendo programable para aplicaciones de IA.


3
¿Desde cuándo es Haskell OOP?
Andrea

puedes emular OOP en Haskell, ¿verdad?
Yusubov

1
puede emularlo en cualquier idioma, no significa que normalmente consideraría que cualquier idioma es OO
jk.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.