¿Qué lenguajes de programación que combinan bien deberían aprender para el desarrollo de inteligencia artificial, la ciencia de datos y el desarrollo de software?

Gran parte de la investigación original en IA se realizó en LISP.

Pero, incluso con LISP como lenguaje, crearon una variedad de imitaciones (representaciones de LISP) para lógica de primer orden, lógicas predeterminadas, etc. Esto no cubre todas las áreas de procesamiento simbólico que se utilizaron al principio del trabajo de IA. Si está comenzando AI, LISP sería bueno para aprender, de modo que pueda leer libros sobre planificación, inferencia, etc.

Clojure es una especie de goto de todos como una modernización de LISP. Pero, no lo he usado más que mirarlo. Y aún puede programar en LISP. Esto está basado en JVM.

JavaScript realmente hace un buen trabajo como lenguaje interpretado, pero las personas no lo han llevado a las alturas que han tomado LISP.

En la actualidad, la IA se ha vuelto más numérica. Creo que eso es bueno en algunos aspectos. Pero, C ++ se puede usar para obtener la velocidad de cálculo que puede necesitar para trabajar con grandes cantidades de datos. Encontrará una serie de algoritmos de IA que se están transformando en GPU con implementaciones CUDA u OpenCL. Se está haciendo un nuevo trabajo en este ámbito. Los FPGA pueden ser otra área donde se desarrollarán algunos enfoques básicos de IA, como las redes neuronales. Tenga en cuenta que Hinton, ahora en Google, como lo trajeron, es una marca de aprendizaje automático allí. En trabajos recientes con traducciones y LSTM, se ha empleado el uso de GPU personalizadas hechas por Google. Los FPGA son interesantes en esta mezcla porque parecen los objetivos probables para crear redes neuronales electrónicas, además de su aplicabilidad DSP.

En cuanto a los paquetes numéricos, C ++ ofrece paquetes como Armadillo, que pueden ejecutarse sobre CUDA BLAS. Si sigue el camino R, encontrará muchos algoritmos estadísticos (que podrían no usarse en el aprendizaje automático), y R siempre ralentizará notablemente su trabajo. Solo R es purista como R, en realidad (o esto es lo que parecen indicar una cantidad de conversaciones y blogs). MatLab puede ser más útil para probar ideas numéricas.

Tenga en cuenta que AI siempre ha tenido implementaciones pragmáticas de rutinas de búsqueda. Recuerdo a Hans Berliner presentando B * en Sail, que era más bien como Algol.

Muchos sistemas de IA existen dentro de marcos más grandes para gestionar el razonamiento. Por lo tanto, debe observar los lenguajes que abordan particularmente esos marcos o estilos de razonamiento.

CLIPS es un lenguaje para un sistema de producciones de encadenamiento hacia adelante. Es gratis, originalmente hecho por la NASA en Houston. Es una versión de los sistemas de Postproducción implementados por primera vez como OPS por Forgey en CMU. También hay una versión Fuzzy.

Incruste CLIPS en un cálculo evolutivo para ajustar medios a requisitos simbólicos, con alguna representación numérica de ajuste. Esto fue más poderoso que pasar por muchas estrategias numéricas para hacer el trabajo. Algunas partes de la solución del problema podrían establecer un contexto simbólico con restricciones comprobables de primer orden antes de cualquier trabajo numérico. La cantidad de tiempo ahorrado al enfocar la computación numérica es astronómica.

La razón para mirar Prolog, si no llegar a conocerlo, es entender usando un cálculo similar a la lógica de primer orden. Prolog no es débil en el mundo de los robots. Recuerdo un proyecto del Grupo de Investigación Avanzada de Boeing donde la investigación estaba pintando el interior de un globo en tiempo real usando un programa Prolog. Tuvo que construir una buena comprensión de la relación de las formas simbólicas con el tiempo real.

Pero, ahora muchas representaciones de conocimiento se están volcando en OWL. Debe buscar en OWL los enfoques actuales para el procesamiento de datos semánticos o la Web semántica. OWL es una lógica de descripción. Conozca sobre las lógicas de descripción.

Los conjuntos difusos también son valiosos para conocer. Por supuesto, este no es un lenguaje de programación, pero puede explorar Conjuntos difusos con MatLab o Mathematica, con módulos listos para usar.

La IA que se aventura en el uso de bases de conocimiento simbólico masivo tiende (en este momento) a incursionar en alguna forma de computación en la nube. Franz, Inc. tiene herramientas para administrar grandes cantidades de triples. Busque en CouchBase el tipo de base de datos que puede necesitar para administrar grandes cantidades de datos en juego. Las empresas que realizan la colocación de anuncios relevantes (cerca de AI en algunos casos) utilizan implementaciones NOSQL.

Debe tener una comprensión clara en la inteligencia artificial sobre dónde deja el procesamiento simbólico para el procesamiento numérico. Por supuesto, podría trabajar en proyectos de investigación enfocados que aíslen una parte del procesamiento de la otra. Pero, los sistemas completos pueden funcionar con datos en vivo, usar información estadística y alimentar un sistema de propagación de restricciones, o alimentar un canal difuso con salida simbólica, etc.

Al trabajar con estos sistemas, su elección de cómputo puede estar en modo de investigación o en el desarrollo de un sistema autónomo (quizás una cosa de IoT). Una lenta reflexión sobre las funciones, usando algo como R, podría servir al servidor para informar sobre cómo construir un sistema en vivo. Pero, estos probablemente nunca se utilizarán en sistemas en vivo. Entonces, tienes que mirar más allá.

En cuanto a la implementación basada en JVM, no creo que haya un futuro en el uso de estos en sistemas autónomos. Por lo tanto, si va por la ruta MatLab (probablemente preferible a la ruta R), seguirá buscando traducir a pensamientos como C / C ++ y utilizando la administración de reglas reducida para la administración simbólica.

En realidad, no puede obtener un solo lenguaje de programación que se ajuste a estas categorías de manera eficiente sin necesidad de otros.

Pero el lenguaje de programación Java consumirá al menos la mayoría de los trabajos que tiene la intención de hacer

Estoy de acuerdo con las otras respuestas. Java , Python y quizás R serían una excelente combinación. R es bastante específico para el dominio de estadísticas y no tiene ningún propósito general. Sin embargo, Python es perfectamente adecuado en su lugar.

Recomiendo aprender que R.R es comúnmente utilizado por los estadísticos, por lo tanto, se puede argumentar que las bibliotecas de estadísticas son robustas y optimizadas y que se puede encontrar mucha documentación. Si sus dominios son investigación en ciencia de datos e inteligencia artificial, probablemente pasará mucho tiempo con estadísticas y álgebra lineal. Se puede hacer un caso similar para Mathcad u Octave.

Para programar en esos dominios, Java o Python deberían ser adecuados. Para Python hay paquetes numéricos como numpy y scipy que deberían serle de gran utilidad.

More Interesting

¿Es egoísta no querer ser un líder en mi trabajo?

¿Es esencial una alta 'inteligencia emocional' para ser un buen gerente de ingeniería?

¿Qué puedo hacer / construir con Python? ¿Python es mejor para ciertas necesidades de programación? ¿Qué puedes / no puedes hacer con Python?

Arquitectura de software: ¿Qué datos deben y no deben almacenarse en caché?

¿Cuáles son algunos principios para construir servicios de almacenamiento en caché?

¿Es una mala práctica pedir a las empresas tecnológicas una extensión de oferta?

Cuando codifica, ¿alguna vez siente que está perdiendo de vista lo que estaba haciendo conceptualmente en primer lugar? Como detienes eso?

¿Qué sitios de trabajo son buenos para los ingenieros de software?

¿Cuál es la diferencia en BS en CIS en TI, BIT, ingeniería informática, informática, ingeniería de software?

¿Cómo diseñas un backend web que minimiza la latencia? Estoy construyendo un servicio en la nube para servir al internet público.

¿El trabajo de software es una dificultad para las mujeres?

¿Los consultores logran ganar una compensación más alta que los ingenieros de software regulares con el mismo nivel de experiencia?

¿Qué tipo de empresas utilizan Java como su idioma principal en el desarrollo de software? Compañías como Dropbox y Quora trabajan con Python, mientras que otras como Facebook, usan C ++ y PHP.

¿Qué habilidades buscaría una empresa de EDA al contratar candidatos para sus puestos de ingeniero de I + D?

Cómo desarrollar una aplicación científica compleja de código abierto solo