Hacer programas que generen código automático para un sinfín de labores siempre ha sido el gran sueño de los programadores. Imaginen dar la idea de algo que queremos que la computadora haga y que ésta, a través de un software muy complejo y sofisticado, salga con el programa resuelto. Sin embargo, aunque esto aún no es posible de hacer, hay interesantes esfuerzos para minimizar los errores de los programadores y así hacerles la vida más sencilla.
Y para ello la Inteligencia Artificial (IA) podría ser la solución. Pero en lugar de pensar en reemplazar a los programadores, lo que puede hacerse ya hoy en día es asistirlos de forma automática usando IA. Y la idea entonces es que un asistente automático esté observando el código que está siendo escrito por el programador para que, de una vez, decida si tiene fallas.
Ubisoft tiene ahora algo que han bautizado como «Commit Assistant», que parece ser -para variar- una red neuronal que puede ser entrenada usando su propia biblioteca de software y así aprender de los errores (bugs) que ha encontrado y corregir los problemas de inmediato.
Veamos el video promocional:
En el video no se indica cómo es que el software trabaja. Se menciona el aprendizaje reforzado pero qué acciones y recompensas se tienen está lejos de estar claro. Vamos, que la idea parece buena y que quizás comercialmente sea una buena promoción, pero de ahí a que se tenga un sistema que haga lo que el video promete tampoco parece demasiado claro. El considerar que ciertas partes del código son como «firmas» con bugs asociados parece muy simplista y además, tampoco se indica qué clase de bugs son los que se detectan. Por ejemplo, podría ser que el programador use una variable que no declaró. Eso el compilador lo notará, pero bien el asistente podría avisarle al programador e incluso, insertar automáticamente la variable que no declaró, pero ese tipo de errores no es de los que hablamos.
El sistema ha sido desarrollado como parte del programa La Forge de Ubisoft, en donde se involucra a investigadores universitarios para que colaboren. En este caso, la universidad asociada es la de Concordia, cuya base está en Montreal. Pero más allá de eso no hay detalles.
Hay que señalar que lenguajes como Prolog, por ejemplo, son lo que se denominan en muchos sentidos «probadores de teoremas» y esto tiene que ver con una lógica que se resume en el algoritmo de Robinson para unificar términos y ver si las proposiciones (los predicados de un programa en Prolog, es decir, sus instrucciones), cumplen con esta lógica o no. Este esquema parece ser más interesante que la propuesta de la red neuronal por el tipo de problema que se está atacando. Sin embargo, hay que reconocer que mientras no se tenga más información del sistema, todo esto es una especulación educada y nada más.