¿Puede la Inteligencia Artificial Programar por Nosotros?

02/06/2021 65

Han pasado más de 50 años desde lo que se considera el inicio de la IA (Inteligencia Artificial). Su evolución no ha sido homogénea en todos estos años, y hemos visto un crecimiento mucho más rápido desde 2010 gracias a muchos factores, pero fundamentalmente la gran cantidad de datos disponibles y las grandes mejoras en la capacidad de procesamiento, además del surgimiento de Cloud que con su pago por uso y su orientación a servicios, ha facilitado la ejecución y el uso de modelos de Inteligencia Artificial.

En los últimos años también hemos visto cómo la IA ha podido ser de ayuda en el área médica, contribuyendo a la detección del cáncer. También cómo Google ha vendido cuadros pintados con IA en un acto benéfico o cómo el Deep Learning ha ganado al mejor jugador del famoso juego estratégico Go.

Además, fue la Inteligencia Artificial la que terminó una sinfonía, y Google creó un producto llamado Magenta que compone canciones sin ayuda humana. Otra de las grandes áreas donde la IA ha progresado mucho y sigue progresando, es en el análisis del lenguaje natural. En 2020 se anunció GPT-3 (Generative Pretrained Transformer) un modelo de Deep Learning con 175.000 millones de parámetros capaz de generar lenguaje escrito.

Las pruebas con este nuevo modelo han constatado que puede escribir sonetos, crear textos para páginas web o ser capaz de programar código básico. Detrás de este modelo está OpenAI, y algunas compañías ya han empezado a utilizar estos avances para aplicarlos en el desarrollo de código. Si la IA ya puede crear sinfonías, pintar cuadros, jugar al ajedrez ¿por qué no escribir código?

Ya en 2015 Andrej Karpathy, director de IA en Tesla, usó un tipo de redes neuronales, RNN (Recurrent Neural Network) para generar código. Entrenó el sistema con un repositorio de código de unos 400 megas y finalmente el modelo generó líneas nuevas de código. Cometió algún error, hubo variables que no se usaron y no compilaba, pero una buena parte de ese código era reusable.

Desde entonces, han surgido startups e iniciativas enfocadas a esa generación de código con Inteligencia Artificial, algunas de las más relevantes:

-. Deepcoder, con la participación de Microsoft y la Universidad de Cambridge que escribe código buscando en una gran base de datos. De momento está limitado a unas cinco líneas de código, pero en el futuro cree que podría ser de ayuda para no programadores.

-. Diffblue, se creó con científicos de la Universidad de Oxford y utiliza la IA para generar test unitarios de código. La generación de código para test unitarios no suele ser una de las tareas favoritas de los desarrolladores y podría ser de ayuda para muchos de ellos.

-. Intellicode, también con la participación de Microsoft, se basa en recomendar el método o la función más adecuada basándose en el uso previo que ha realizado el desarrollador. La herramienta se alimenta de repositorios de Github.

-. SourceAI www.sourceai.dev) va un paso más allá y desarrolla código basado en una descripción corta de lo que el programa tiene que hacer . Actualmente está  trabajando para incorporar las mejoras de GPT-3 para crear aplicaciones web personalizadas.

-. Ubisoft, es una compañía de desarrollo de juegos que ha construido un sistema que simplifica el trabajo de los desarrolladores, encontrando errores en su código.

-. Codenet, anunciada por IBM recientemente con la intención de dar un empujón a la tecnología que permitirá generar código de manera más automática. Su objetivo es proporcionar un conjunto de datos para servir de entrenamiento a los algoritmos de IA, y poder por ejemplo traducir código de un lenguaje a otro o generar código nuevo. Para ello incluye más de 14 millones de ejemplos de código, plantea la solución a 4503 programas habituales, en más de 50 lenguajes diferentes.

Parece que las inversiones en esta área están creciendo y esto lleva a los programadores a pensar que su papel será susceptible de automatización también en un futuro cercano. Desde mi punto de vista, aún queda mucho camino para ello. Crear software es convertir una serie de requerimientos, que ni siquiera son muy concretos en muchos casos, en un programa. Tratar de hacer las especificaciones adecuadas y resolver el problema adecuadamente es mucho más complejo que el simple hecho de programar.

Por otro lado, los programadores casi nunca empiezan de cero, reutilizan código y usan multitud de API’s (Aplication Program Interface). Los desarrolladores necesitan sin duda una mejor manera de encontrar esas API’s y ahí si que podría ayudar realmente la Inteligencia Artificial.La IA también podría simplificar la búsqueda de errores en el código o generar programas en diferentes lenguajes de manera más eficiente.

No sabemos exactamente qué puede pasar en el futuro, ni a qué velocidad, pero lo que sí está claro es que los desarrolladores tendrán cada vez más la ayuda de la IA para desarrollar su trabajo, y que la manera en que desempeñan su trabajo actualmente será muy diferente dentro de unos años.