DeepCoder: El nuevo logro de la Inteligencia Artificial
Una maquina cargada con un sistema de aprendizaje ha logrado desplegar la capacidad de escribir su propio código. Creado por investigadores de Microsoft y la Universidad de Cambridge, el sistema, llamado DeepCoder, resolvió desafíos básicos del tipo establecido por las competiciones de programación. Este tipo de enfoque podría hacer que sea mucho más fácil para la gente construir programas simples sin saber cómo escribir código.
“De repente la gente podría ser mucho más productiva”, dice Armando Solar-Lezama en el Instituto de Tecnología de Massachusetts: “Podrían construir sistemas que antes sería imposible construir”.
En última instancia, el enfoque podría permitir a las personas que no saben de programación simplemente describir una idea para un programa y dejar que el sistema la construya, dice Marc Brockschmidt, uno de los creadores de DeepCoder en Microsoft Research en Cambridge, Reino Unido.
DeepCoder utiliza una técnica llamada síntesis de programa: crear nuevos programas al juntar líneas de código extraídas de software existente, tal como lo haría un programador. Dada una lista de entradas y salidas para cada fragmento de código, DeepCoder aprendió qué fragmentos de código eran necesarios para lograr el resultado deseado en general.
Una ventaja de dejar que una Inteligencia Artificial (IA) se suelte de esta manera es que puede buscar más ampliamente y con mayor velocidad que un programador humano, por lo que podría juntar el código fuente de una manera más eficiente. Además, DeepCoder utiliza el aprendizaje automático para explorar bases de datos de código fuente y ordenar los fragmentos de acuerdo con su visión de su probable utilidad.
Todo esto hace que el sistema sea mucho más rápido que sus predecesores. DeepCoder creó programas de trabajo en fracciones de segundo, mientras que los sistemas más antiguos toman minutos para probar muchas combinaciones diferentes de líneas de código antes de juntar algo que pueda hacer el trabajo. Y como DeepCoder aprende qué combinaciones de código fuente funcionan y cuáles no, a medida que avanza, mejora cada vez que intenta un nuevo problema.
La tecnología podría tener muchas aplicaciones. En 2015, los investigadores del MIT crearon un programa que solucionaba automáticamente errores informáticos al reemplazar las líneas de código defectuosas por líneas de trabajo de otros programas. Brockschmidt dice que las futuras versiones podrían hacer muy fácil la construcción de programas de rutina que raspan la información de sitios web, o categorizar automáticamente las fotos de Facebook, por ejemplo, sin que los programadores humanos tengan que levantar un dedo.
“El potencial de automatización que ofrece este tipo de tecnología podría significar realmente una enorme reducción en la cantidad de esfuerzo que se necesita para desarrollar código”, dice Solar-Lezama. Pero él no cree que estos sistemas pondrán a los programadores fuera de un trabajo. Con la síntesis de programas automatizando algunas de las partes más tediosas de la programación, dice, los programadores podrán dedicar su tiempo a trabajos más sofisticados.
Por el momento, DeepCoder sólo es capaz de resolver problemas de programación que implican alrededor de cinco líneas de código. Pero en el lenguaje de codificación adecuado, unas pocas líneas son todo lo que se necesita para programas bastante complicados; “Generar una gran pieza de código en un solo disparo es difícil y potencialmente poco realista”, dice Solar-Lezama. “Pero realmente grandes piezas de código se construyen al reunir un montón de pequeñas piezas de código.”
Con información de New Scientist | Edición y traducción del Proyecto Alterius