artificial intelligence - sirve - ¿Cómo elegir un idioma para la programación de Inteligencia Artificial?
programas para crear inteligencia artificial (12)
¿Qué tal un marco escrito en Java, compatible con "High Level Logic" y la comunicación de estilo de agente.
http://highlevellogic.blogspot.com/2010/11/when-will-we-have-artificial.html
¿Cuál es el mejor lenguaje de programación para propósitos de inteligencia artificial?
Tenga en cuenta que, utilizando el lenguaje sugerido, debo ser capaz de emplear cualquier técnica de IA (o al menos la mayoría de ellas).
Elija el lenguaje de programación con las técnicas de IA de la misma manera que elige un idioma para cualquier otro proyecto:
- ¿Cuál es el problema que estás tratando de resolver?
- ¿Hay un buen soporte disponible para
¿el idioma? - ¿Cuáles son los requisitos de los clientes?
Recomendaría Prolog como un muy buen lenguaje de programación utilizado para implementar sistemas de inteligencia artificial.
No hay un "mejor" idioma. Cada uno tiene sus méritos. Cuando estudié AI, trabajamos principalmente con lisp y prólogo, pero he sido muy productivo en IA con Java / C # y F # tiene mucho que ofrecer.
Pondré a Scala en el bote.
- es útil para la programación funcional
- se puede hacer tan rápido como Java
- es un lenguaje moderno con muchos aspectos agradables
- Java parece ser un poco popular en AI, también, por lo que puedes usar todas esas bibliotecas Java de Scala
He resuelto todos los ejercicios de un curso básico de IA en Scala. Funcionó realmente bien.
Probablemente sea importante si el entorno de programación es académico o no, pero para la mayoría del desarrollo de aplicaciones no académicas de IA, recomendaría seguir con un lenguaje convencional como Java o C ++. Uno debe poder interactuar fácilmente con otros COTS o paquetes de software de código abierto, y esto a veces puede ser difícil o imposible en idiomas más "exóticos". Para el trabajo académico esto puede ser un problema menos crítico.
Además, el rendimiento puede ser importante para muchas aplicaciones, y los lenguajes principales generalmente tienen los compiladores más optimizados, por ejemplo, C ++ o Java.
Es cierto que los lenguajes de programación funcional como LISP, Scheme, etc. tienen características especializadas que pueden facilitar la implementación de métodos particulares de IA, pero no creo que esto sea cierto para la programación relacionada con AI en general, por ejemplo, el aprendizaje automático cuantitativo los métodos generalmente no requieren un lenguaje funcional. Si necesita acceder tanto a constructos funcionales como a paquetes de software en general, hay algunas herramientas para que LISP lo ayude, y Clojure recientemente desarrollado es una variante de LISP que se ejecuta en JVM y puede acceder a las bibliotecas de Java. Además, Groovy es otro lenguaje basado en JVM que incluye soporte para cierres.
Por último, algunos programadores prefieren la flexibilidad de paradigmas y / o el prototipado rápido para proyectos de inteligencia artificial. Ruby y Python ambos ven algo de uso relacionado con la IA por esta razón como lenguajes multi-paradigma que también pueden ser utilizados para scripting.
Como la mayoría de las cosas en programación, la mejor respuesta para qué lenguaje usar en el desarrollo de inteligencia artificial dependerá finalmente de las necesidades de sus proyectos.
Python parece ser usado mucho en la comunidad científica general. Tiene muchas bibliotecas disponibles y es fácil de aprender.
Realmente depende del tipo de problema que estés viendo. Además, cuán "profundo" quieres entrar en materia de IA. Si quieres aprender desde lo básico y solo implementar cosas teóricas de IA, ve con un lenguaje de nivel superior, como en la programación funcional (y probado en IA) como lisp o prolog. Si conoce el problema con el que está tratando y quiere ser eficiente, use algo como Java, C ++ y use un kit de herramientas para hacer las cosas. Desde que mencionas Machine Learning, busca en Weka Toolkit en Java algunas de estas cosas.
Si por "todos los AI" también se refiere al aprendizaje automático, supongo que Matlab, R y Python + Scipy definitivamente deberían mencionarse.
También depende del tamaño de su conjunto de datos. Para conjuntos de datos a escala web es posible que desee utilizar Map-Reduce y eso implica Hadoop. Hadoop está en Java, pero puede usar cualquier idioma (Python, etc.) para sus funciones Map-Reduce.
También hay un marco java llamado weka , desarrollado por la universidad de waikato. No sé si es su pregunta, pero puede ser útil.
Citando wikipedia : «Weka admite varias tareas estándar de minería de datos, más específicamente, preprocesamiento de datos, clustering, clasificación, regresión, visualización» y más.
Todos los gurús con barba geniales en lo que queda de investigación de IA usan Lisp :)
Hay dos grandes campamentos: Common Lisp y Scheme. Tienen una sintaxis diferente, etc. Muchas cosas buenas escritas para ambos.
Java es un lenguaje de uso múltiple muy popular, pero muchas cosas interesantes de AI / Programación funcional, como pasar cierres como objetos de primer orden, son torpes en Java.
Mi preferencia personal sería mantenerme alejado de los idiomas de Windowsy como C # y F #. Las personas geniales se desarrollan bajo Unix. O Linux si son geniales pero pobres.
Un programa genial pero extraño para personas en Haskell. Un lenguaje FP razonablemente moderno con buen rendimiento. Lo intenté una vez, me lastimó el cerebro; pero podrías ser más inteligente que yo.
ACTUALIZACIÓN: Respuestas a las preguntas de Steve.
Yo no sería el que paga por una variante de Unix; eso es lo que hacen las corporaciones y los institutos de investigación. La idea es que quieras hacer una investigación de AI para un equipo que hunde millones en su hardware y no se niega a pagar unos miles por un sistema operativo. Ese es el tipo de atuendo que probablemente tenga buena comida en la cafetería y / o pague bien por hacer un trabajo divertido. Pero ciertamente no estoy afectando a Linux.
F # puede ser genial, pero veo una gran cantidad de problemas para que se ejecute en Linux o en cualquier otro Unix (eso es lo que quise decir con "windowsy"), y no quiero trabajar en Windows (eso es lo que quise decir con " preferencia personal").
Para profundizar en el tema "windowsy": mencionas que F # es una variante OCaml. A partir de mi propia y breve investigación, parece que a F # le faltan funtores, objetos de estilo OCaml, variantes polimórficas y el preprocesador camlp4. Un lenguaje funcional sin funtores? De Verdad? Si uno estuviera dispuesto a no gustarle a Microsoft, como lo reconozco, podría concluir que habían seguido adelante y habían utilizado un lenguaje funcional perfectamente bueno, OCaml, en algo que podrían ejecutar en su CLR para poder afirmar que tenían un lenguaje funcional. Finalmente, como no sospecho, sé que Microsoft siempre prioriza el dominio del mercado sobre la calidad del producto, no planeo tocar F #. Pero esta es mi preferencia personal, y claramente identificada como tal, mientras que realmente estamos más interesados en hacer una buena recomendación para mary.ja45.
Tengo mejores razones para recomendar Lisp sobre F # e incluso OCaml y Haskell. Estos se basan principalmente en la preponderancia histórica de Lisp sobre cualquier otro idioma en el campo de la inteligencia artificial.
La mayor parte de la literatura de AI se basa en programas escritos en Lisp o Prolog. Si nada más, un buen conocimiento de Lisp le permitiría a un alumno comprender los programas de ejemplo. Mi megaproyecto favorito de AI, Cyc, tiene tiempos de ejecución en su elección de Common Lisp o C.
En el índice de lenguaje de programación TIOBE (como se ve y se usa en la industria), Lisp ocupa el puesto 15 mientras que Haskell toma el lugar 43 y F # y OCaml el lugar debajo del 50 °. La presencia en el mercado se correlaciona con las oportunidades de empleo, naturalmente.
Dicho esto, es muy posible que varios de los idiomas más jóvenes, "AI interesantes", estén a punto de dispararse. Si algún importante instituto de investigación publicara una investigación pionera y de definición de campo en, digamos, Scala, vería que la popularidad de Scala avanzaba marcadamente en la comunidad investigadora y, con cierto retraso, en la industria.
Yo (obviamente) no puedo comentar las otras cualidades de F #, pero eres tan bienvenido como para hacer recomendaciones.
Yo personalmente uso Clojure para la programación de IA, y he encontrado que es un excelente lenguaje de IA completo.
Razones:
- Es un Lisp , y los Lisps han sido históricamente muy fuertes en el campo de la IA
- Es un homoiconic con macros potentes , tan geniales para la generación de código y la programación genética. Esta es una propiedad sorprendentemente útil para la programación de IA (y posiblemente explica parte del éxito de Lisp en general en este espacio)
- Se ejecuta en la JVM y puede acceder fácilmente a todas las bibliotecas de Java para el cálculo de números (Weka, Colt, etc.).
- Es bueno para un desarrollo interactivo rápido : es muy dinámico y puedes hacer casi todo de forma interactiva en un Clojure REPL en ejecución. No es necesario volver a compilar, etc.