Desarrollo de aplicacionesDestacadosInteligencia artificial

¿Cual es el mejor lenguaje de programación para inteligencia artificial?

Frecuentemente recibo la pregunta acerca de cuál es el mejor lenguaje de programación para crear aplicaciones de inteligencia artificial. Otras veces, directamente la pregunta es si lenguajes como Python o bibliotecas como TensorFlow son los adecuados para crear este tipo de aplicaciones.

Así que el objetivo de este artículo es aclarar algunos conceptos para poder elegir un lenguaje de programación u otro para desarrollar aplicaciones que hagan uso de la IA.

¿Qué es la IA?

Este concepto no es fácil de explicar. La inteligencia artificial no es un conjunto de instrucciones, ni un nuevo tipo de datos. Consiste en una serie de metodologías en las cuales podemos dotar a nuestros desarrollos de comportamientos percibidos como inteligentes. En definitiva, son metodologías, y no instrucciones.

Es por esto que, a priori, cualquier lenguaje de programación es válido para realizar aplicaciones de inteligencia artificial.

¿Qué lenguajes de programación existen?

Haciendo referencia al listado TIOBE, que muestra los lenguajes de programación más utilizados en el mercado, el listado para enero de 2019 muestra los siguientes datos:

https://www.tiobe.com/tiobe-index/

Jan 2019

Jan 2018

Change

Programming Language

Ratings

Change

1

1

Java

16.904%

+2.69%

2

2

C

13.337%

+2.30%

3

4

Python

8.294%

+3.62%

4

3

C++

8.158%

+2.55%

5

7

Visual Basic .NET

6.459%

+3.20%

6

6

JavaScript

3.302%

-0.16%

7

5

C#

3.284%

-0.47%

8

9

PHP

2.680%

+0.15%

9

SQL

2.277%

+2.28%

10

16

Objective-C

1.781%

-0.08%

Cualquiera de los lenguajes de programación de esta lista podría ser perfectamente válido para desarrollar aplicaciones de IA, a excepción probablemente del lenguaje SQL, que está orientado a consultas en bases de datos, en lugar de a desarrollo de aplicaciones.

Poríamos clasificar estos lenguajes en tres grandes grupos:

-Lenguajes de bajo nivel, que son aquellos que tienen mejor rendimiento, pero en los que el programador debe tomar muchas decisiones, de forma que puede optimizar la ejecución del programa, pero la probabilidad de cometer fallos es mayor. Ejemplos de estos lenguajes son C, C++ y Objective-C

-Lenguajes de alto nivel, que son aquellos que ofrecen una serie de abstracciones, de forma que el propio compilador toma algunas decisiones, liberando al desarrollador de tomarlas. De esta forma, estos lenguajes suelen ser menos eficientes en la ejecución, ya que las decisiones que se toman automáticamente por el compilador no suelen ser tan inteligentes como las que toma un ser humano. Sin embargo, dado que el desarrollador tiene que tomar menos decisiones, las probabilidades de fallo son menores. Ejemplos de estos lenguajes son Python y Javascript

-Lenguajes de nivel intermedio: Encontramos dentro de este grupo aquellos lenguajes que buscan un balance óptimo entre rendimiento y dificultad. De esta forma, ponen muchas decisiones en manos del usuario programador, pero a la vez ofrecen una serie de facilidades y herramientas para prevenir y arreglar los errores de código. Un ejemplo de este tipo de lenguajes es Java.

Eligiendo el mejor lenguaje:

Antes de elegir un lenguaje u otro, teniendo en cuenta que todos los lenguajes de la lista son perfectamente válidos, deberemos establecer un criterio para la elección, y no todos tenemos por qué tener el mismo criterio.

Por ejemplo, un criterio podría ser el rendimiento. Es decir, que nuestras aplicaciones se ejecuten lo más rápido posible. Este criterio es importante, ya que muchas aplicaciones de inteligencia artificial deben funcionar y proporcionar resultados en un tiempo aceptable, ya que, en caso contrario, podría considerarse que nuestras aplicaciones son inteligentes, pero lentas (y por tanto podrían ser percibidas por los usuarios finales como aplicaciones “no tan inteligentes”, aunque la velocidad no tenga que ver directamente con la calidad de los resultados)

En este caso, podríamos elegir aquellos lenguajes de más bajo nivel, como C o C++

Evidentemente, en este caso, puesto que el propio aprendizaje y puesta en práctica de las metodologías de inteligencia artificial en un lenguaje concreto es complejo, tendríamos que tener un nivel de partida bastante fluido en estos lenguajes.

Otro criterio posible sería la facilidad de uso del lenguaje de programación. Esta es la opción que suele elegirse para formación relacionada con la inteligencia artificial. De esta forma, el alumno se preocupa únicamente por las complejidades derivadas de la implementación de la IA, y no de las complejidades propias del lenguaje de programación. Esta es la razón por la cual los lenguajes como Python son tan famosos en los cursos de formación relacionados con este ámbito, en contra de la creencia popular de que es debido a su potencia, es por su facilidad y su flexibilidad.

Un ejemplo más concreto del rendimiento entre los diferentes lenguajes de programación podemos encontrarlo en comparativas como la siguiente:

Esta es una de las comparativas que suelo realizar en todo tipo de formaciones relacionadas con la programación en múltiples lenguajes. El objetivo es proponer el mismo reto a resolver a diferentes lenguajes de programación, y observar los resultados.

En esta comparación podemos observar como, para un mismo cálculo, donde lenguajes de un nivel bajo tardan entre 24 y 25 segundos en completar su tarea, los lenguajes de alto nivel como Javascript tardan 38 segundos (aproximadamente un 52% más lentos), pero otros lenguajes como Python pueden llegar a tardar 157 segundos (es decir, un 650% más lentos que los lenguajes de bajo nivel). Por tanto, estos lenguajes no se eligen por su rendimiento sino por su facilidad de uso.

El lenguaje de programación R: Ventajas y desventajas

Existe una serie de lenguajes que suelen considerarse más aptos para el desarrollo de aplicaciones de inteligencia artificial. Uno de ellos es el lenguaje estadístico R.

La diferencia de este lenguaje con respecto a los genéricos es que incluye una serie de herramientas y librerías que facilitan tanto el cálculo como la presentación de resultados de análisis estadísticos (área que tiene una gran importancia en la inteligencia artificial).

Esto a la vez es bueno y a la vez no tanto. Desde un punto de vista del desarrollo, añade productividad permitiendo a los desarrolladores crear presentaciones de resultados de una forma muy sencilla.

Podemos encontrar dos grandes ejemplos de esto en la propia pagina de la Wikipedia:

https://es.wikipedia.org/wiki/R_(lenguaje_de_programaci%C3%B3n)

Repasando los dos ejemplos (tanto en su código fuente como en los resultados), veremos que la inclusión previa de las librerías correspondientes minimizan el código que tiene que desarrollar el ser humano, y automatizan al máximo la tarea de generación de gráficas.

Sin embargo, desde el punto de vista de la formación, realizar tantas abstracciones, en ocasiones puede no resultar tan conveniente, ya que si delegamos todos estos cálculos en el propio lenguaje de programación y sus librerías, no estaremos realmente aprendiendo a realizarlos, y si el día de mañana estamos obligados a cambiar a un lenguaje de programación más genérico, podremos darnos cuenta de la dependencia que habremos desarrollado con respecto al lenguaje de programación R

Aún así, por supuesto es recomendable que cualquier formación en inteligencia artificial contenga algún apartado que muestre a los alumnos el uso del lenguaje de programación R

Matlab y Octave:

En la lista TIOBE, el lenguaje que ocupa el puesto número 11 es Matlab, lo cual es igual de interesante como el lenguage R.

Matlab es un sistema algebráico presentado dentro de un entorno de desarrollo integrado, que desde hace muchos años facilita el desarrollo y la realización de múltiples tipos de cálculos a científicos que no tienen por qué tener conocimientos especialmente profundos de programación. De la misma forma que el lenguaje R provee una serie de facilidades y bibliotecas de presentación de resultados, MatLab realiza lo propio en un nivel todavía superior (el IDE consituye una forma muy asequible y agradable de aproximarse al desarrollo de proyectos que requieran cálculos)

En definitiva, tanto Matlab como software comercial, como Octave como alternativa de código abierto, son excelentes alternativas para personas que desean cumplir con el objetivo de acercarse al mundo de la inteligencia artificial, intentando facilitar o al menos abstraer las complejidades derivadas de los lenguajes de programación duros.

Diferentes niveles:

Dentro de las múltiples alternativas de las que disponemos como entornos de desarrollo para implementar proyectos de realidad virtual, dentro de que cualquier lenguaje de programación con unas mínimas capacidades es viable para implementar este tipo de proyectos, podríamos resumir:

Entornos como Matlab u Octave: Mayor facilidad y abstracción, eliminando o minimizando las dificultades de la programación. El propio entorno que nos facilita el trabajo es el que puede hacer que nuestras aplicaciones no sean posteriormente aplicables y portables en todas las plataformas. Aptos para desarrollar prototipos y en definitiva para que personas que no sean programadores puedan aproximarse a desarrollos de inteligencia artificial.

Lenguajes de programación específicos u optimizados, como R: Buena proporción entre esfuerzo y resultado, herramientas específicas para la tarea concreta. Sin embargo, son lenguajes tan específicos que luego no podemos usarlos para otros tipos de proyectos.

Lenguajes generalistas de programación de alto nivel: Buena proporción entre esfuerzo y resultado, y buen balance entre rendimiento, facilidad, y portabilidad del código en la implementación entre diferentes plataformas. Aptos para el aprendizaje y la implementación de aplicaciones reales de inteligencia artificial donde el rendimiento no sea un factor clave pero el éxito y la facilidad de la implementación si que lo sean.

Lenguajes generalistas de programación de bajo nivel: Alto rendimiento, exigen extensos conocimientos del propio lenguaje de programación ya que son propensos a cometer fallos humanos en la escritura del código. Aptos para la implementación final de aplicaciones en  las que el rendimiento sea un factor clave.

Un par de criterios más: facilidad de compilación y generalidad del lenguaje

Hay otra explicación por la cual los lenguajes de programación de alto nivel, como Python y Javascript, son ampliamente utilizados en formaciones relacionadas con inteligencia artificial, no es solo por su facilidad de uso sino también por la facilidad de puesta en marcha.

La puesta en marcha consiste en la serie de operaciones que deben realizarse para, desde cero, comenzar a desarrollar y ejecutar programas con un lenguaje de programación determinado.

En el caso de Python, todos los prerrequisitos pueden descargarse rápida y gratuitamente desde la página https://www.python.org/

Además, contiene instaladores para todo tipo de sistemas operativos y arquitecturas de hardware, lo que posibilita poder instalar y ejecutar programas en todo tipo de equipos informáticos, incluso en aquellos que están muy desactualizados.

El caso de Javascript es todavía más curioso, ya que cualquier navegador web de los que tenemos ya de por sí instalados en nuestro ordenador, llevan YA incorporados los intérpretes que permiten ejecutar programas realizados en este lenguaje de programación.

Únicamente en ese caso es necesario descargar algún editor de código para crear programas, como por ejemplo el archiconocido Notepad++:

https://notepad-plus-plus.org/download/v7.6.2.html

Conclusiones:

El desarrollo de aplicaciones de inteligencia artificial no se realiza de forma exclusiva con un lenguaje de programación u otro. Prácticamente cualquier lenguaje de programación es apto para realizar implementaciones de IA. Lo que si que es importante es conocer las ventajas y las desventajas de cada uno de los lenguajes, para escoger la mejor alternativa según el criterio o los criterios que se adapten a nuestras necesidades.

Quieres saber más?

Actualmente estamos produciendo un curso para aprender a desarrollar aplicaciones de inteligencia artificial. Si quieres saber más, haz click aqui:

Curso de Inteligencia Artificial

2 comentarios en “¿Cual es el mejor lenguaje de programación para inteligencia artificial?

  1. Hola Jose Vicente, gracias por el POST muy interesante, que me puedes decir de Machine Learning? yo hice los videos cursos de PHP de V2B de tu autoria, ese conocimiento me basta para aplicarlos en IA?

    Saludos
    Manuel Quintan

    1. Hola! Muchas gracias por tu comentario. Completamente, cualquier lenguaje de programación con unas funcionalidades básicas, como PHP, sirve para realizar cálculos y proyectos de inteligencia artificial. De hecho, PHP, como lenguaje del lado del servidor, juega un papel muy importante en del desarrollo de proyectos de inteligencia artificial en la nube. Así que totalmente, el conocimiento que tienes hasta el momento es perfectamente aprovechable y aplicable al desarrollo de aplicaciones de inteligencia artificial

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *