Los 6 mejores lenguajes de programación para el desarrollo de IA

La IA (inteligencia artificial) abre un mundo de posibilidades para los desarrolladores de aplicaciones. Al aprovechar el aprendizaje automático o el aprendizaje profundo, puede producir perfiles de usuario, personalización y recomendaciones mucho mejores, o incorporar una búsqueda más inteligente, una interfaz de voz o asistencia inteligente, o mejorar su aplicación de muchas otras formas. Incluso podría crear aplicaciones que vean, escuchen y reaccionen a situaciones que nunca anticipó.

¿Qué lenguaje de programación debes aprender para sondear las profundidades de la IA? Por supuesto, querrá un idioma con muchas buenas bibliotecas de aprendizaje automático y aprendizaje profundo. También debe presentar un buen rendimiento en tiempo de ejecución, buen soporte de herramientas, una gran comunidad de programadores y un ecosistema saludable de paquetes de soporte. Esa es una larga lista de requisitos, pero todavía hay muchas buenas opciones. 

Aquí están mis selecciones para los seis mejores lenguajes de programación para el desarrollo de IA, junto con dos menciones honoríficas. Algunos de estos idiomas van en aumento, mientras que otros se deslizan. Hay otros que solo necesita conocer si está interesado en arquitecturas y aplicaciones históricas de aprendizaje profundo. Veamos cómo se comparan todos. 

Pitón

En el número uno, sigue siendo Python. ¿Cómo podría ser otra cosa, de verdad? Si bien hay cosas enloquecedoras sobre Python, si está haciendo trabajo de IA, es casi seguro que usará Python en algún momento. Y algunos de los puntos ásperos se han suavizado un poco.

A medida que nos acercamos a 2020, el problema de Python 2.x versus Python 3.x se está volviendo discutible, ya que casi todas las bibliotecas principales admiten Python 3.xy están eliminando el soporte de Python 2.x tan pronto como sea posible. En otras palabras, finalmente puede aprovechar todas las nuevas funciones del idioma en serio.

Y aunque las pesadillas de empaquetado de Python, donde cada solución diferente se rompe de una manera ligeramente diferente, todavía están presentes, puede usar Anaconda aproximadamente el 95% del tiempo y no preocuparse demasiado por las cosas. Aún así, sería bueno si el mundo de Python solucionara este problema de larga data de una vez por todas.

Dicho esto, las bibliotecas de matemáticas y estadísticas disponibles en Python son prácticamente incomparables en otros lenguajes. NumPy se ha vuelto tan omnipresente que es casi una API estándar para operaciones de tensores, y Pandas trae los marcos de datos poderosos y flexibles de R a Python. Para el procesamiento del lenguaje natural (NLP), tiene el venerable NLTK y el increíblemente rápido SpaCy. Para el aprendizaje automático, existe Scikit-learn, probado en batalla. Y cuando se trata de aprendizaje profundo, todas las bibliotecas actuales (TensorFlow, PyTorch, Chainer, Apache MXNet, Theano, etc.) son efectivamente proyectos de Python.

Si está leyendo investigaciones de vanguardia sobre aprendizaje profundo en arXiv, encontrará que la mayoría de los estudios que ofrecen código fuente lo hacen en Python. Luego están las otras partes del ecosistema Python. Si bien IPython se ha convertido en Jupyter Notebook y está menos centrado en Python, todavía encontrará que la mayoría de los usuarios de Jupyter Notebook y la mayoría de los cuadernos compartidos en línea usan Python. En cuanto a la implementación de modelos, la llegada de arquitecturas y tecnologías de microservicio como Seldon Core significa que es muy fácil implementar modelos de Python en producción en estos días.

No hay forma de evitarlo. Python es el lenguaje a la vanguardia de la investigación de la IA, para el que encontrará más marcos de aprendizaje automático y aprendizaje profundo, y el que casi todos en el mundo de la IA hablan. Por estas razones, Python es el primero entre los lenguajes de programación de IA, a pesar de que su autor maldice los problemas de espacios en blanco al menos una vez al día.

Vídeo relacionado: aprendizaje automático e inteligencia artificial descifrados

Rompiendo con el bombo publicitario en torno al aprendizaje automático y la inteligencia artificial, nuestro panel habla sobre las definiciones e implicaciones de la tecnología.

C ++

Es poco probable que C ++ sea su primera opción al desarrollar una aplicación de IA, pero cuando necesita extraer hasta el último bit de rendimiento del sistema, un escenario que se vuelve más común a medida que el aprendizaje profundo llega al límite y necesita ejecutar sus modelos en Sistemas con recursos limitados: es hora de regresar al aterrador mundo de los punteros una vez más.

Afortunadamente, escribir en C ++ moderno puede ser agradable (¡honesto!). Tiene una variedad de enfoques. Puede sumergirse en la parte inferior de la pila, utilizando bibliotecas como CUDA de Nvidia para escribir su propio código que se ejecuta directamente en su GPU, o puede usar TensorFlow o PyTorch para obtener acceso a API flexibles de alto nivel. Tanto PyTorch como TensorFlow te permiten cargar modelos generados en Python (o el subconjunto TorchScript de PyTorch de Python) y ejecutarlos directamente en un tiempo de ejecución de C ++, acercándote al bare metal para la producción al tiempo que preserva la flexibilidad en el desarrollo.

En resumen, C ++ se convierte en una parte fundamental del conjunto de herramientas a medida que las aplicaciones de inteligencia artificial proliferan en todos los dispositivos, desde el sistema integrado más pequeño hasta grandes clústeres. La inteligencia artificial en el borde significa que ya no es suficiente ser preciso; tienes que ser bueno y rápido.

Java y otros lenguajes JVM

La familia de lenguajes JVM (Java, Scala, Kotlin, Clojure, etc.) sigue siendo una gran opción para el desarrollo de aplicaciones de IA. Tiene una gran cantidad de bibliotecas disponibles para todas las partes de la canalización, ya sea procesamiento de lenguaje natural (CoreNLP), operaciones de tensor (ND4J) o una pila completa de aprendizaje profundo acelerada por GPU (DL4J). Además, obtiene un fácil acceso a plataformas de big data como Apache Spark y Apache Hadoop.

Java es la lengua franca de la mayoría de las empresas, y con las nuevas construcciones de lenguaje disponibles en Java 8 y versiones posteriores, escribir código Java no es la experiencia odiosa que muchos de nosotros recordamos. Escribir una aplicación de IA en Java puede parecer un poco aburrido, pero puede hacer el trabajo y puede utilizar toda su infraestructura Java existente para el desarrollo, la implementación y la supervisión.

JavaScript

Es poco probable que aprenda JavaScript únicamente para escribir aplicaciones de inteligencia artificial, pero TensorFlow.js de Google continúa mejorando y ofrece una forma intrigante de implementar sus modelos de Keras y TensorFlow en su navegador o mediante Node.js usando WebGL para cálculos acelerados por GPU.

Sin embargo, una cosa que realmente no hemos visto desde el lanzamiento de TensorFlow.js es una gran afluencia de desarrolladores de JavaScript que invaden el espacio de la IA. Creo que eso podría deberse a que el ecosistema JavaScript circundante no tiene la profundidad de las bibliotecas disponibles en comparación con lenguajes como Python.

Además, en el lado del servidor, no hay mucha ventaja en implementar modelos con Node.js en comparación con una de las opciones de Python, por lo que es posible que veamos que las aplicaciones de IA basadas en JavaScript permanecen principalmente basadas en navegadores en un futuro cercano. Pero eso todavía crea muchas oportunidades interesantes para divertirse, como la búsqueda del tesoro de Emoji.

Rápido

En la versión del año pasado de este artículo, mencioné que Swift era un idioma a tener en cuenta. Este año, entra en mi top seis. ¿Que pasó? Swift para TensorFlow. Un enlace totalmente mecanografiado y sin problemas de las últimas y mejores características de TensorFlow, y magia oscura que te permite importar bibliotecas de Python como si estuvieras usando Python en primer lugar.

El equipo de Fastai está trabajando en una versión Swift de su popular biblioteca, y nos prometieron muchas optimizaciones adicionales en la generación y ejecución de modelos con la transferencia de mucha inteligencia tensorial al compilador LLVM. ¿Está lista la producción en este momento? En realidad no, pero de hecho puede señalar el camino hacia la próxima generación de desarrollo de aprendizaje profundo, por lo que definitivamente debería investigar qué está pasando con Swift.

Lenguaje R

R aparece al final de nuestra lista y tiene una tendencia a la baja. R es el lenguaje que adoran los científicos de datos. Sin embargo, otros programadores a menudo encuentran R un poco confuso, debido a su enfoque centrado en el marco de datos. Si tiene un grupo dedicado de desarrolladores de R, entonces puede tener sentido usar las integraciones con TensorFlow, Keras o H2O para investigación, creación de prototipos y experimentación, pero dudo en recomendar R para uso en producción o para desarrollo greenfield, debido a preocupaciones operativas y de rendimiento. Si bien puede escribir código R de rendimiento que se pueda implementar en servidores de producción, es casi seguro que será más fácil tomar ese prototipo R y recodificarlo en Java o Python.

Otras opciones de programación de IA

Por supuesto, Python, C ++, Java, JavaScript, Swift y R no son los únicos lenguajes disponibles para la programación de IA. Aquí hay dos lenguajes de programación más que pueden resultarle interesantes o útiles, aunque no los consideraría como prioridades principales para el aprendizaje.

Lua

Hace unos años, Lua estaba en lo alto del mundo de la inteligencia artificial gracias al marco Torch, una de las bibliotecas de aprendizaje automático más populares para las necesidades de investigación y producción. Si profundiza en la historia de los modelos de aprendizaje profundo, a menudo encontrará copiosas referencias a Torch y mucho código fuente de Lua en los antiguos repositorios de GitHub.

Con ese fin, puede ser útil tener un conocimiento práctico de la API de Torch, que no está muy lejos de la API básica de PyTorch. Sin embargo, si, como la mayoría de nosotros, realmente no necesita hacer mucha investigación histórica para sus aplicaciones, probablemente pueda arreglárselas sin tener que pensar en las pequeñas peculiaridades de Lua.

Julia

Julia es un lenguaje de programación de alto rendimiento que se centra en la computación numérica, lo que lo convierte en una buena opción en el mundo de la IA, con muchas matemáticas. Si bien no es tan popular como una opción de idioma en este momento, los contenedores como TensorFlow.jl y Mocha (muy influenciados por Caffe) brindan un buen soporte de aprendizaje profundo. Si no le importa el ecosistema relativamente pequeño y desea beneficiarse del enfoque de Julia en hacer cálculos de alto rendimiento fáciles y rápidos, entonces probablemente valga la pena echarle un vistazo a Julia.