Que solo al escribir "quiero hacer una página web que esté diseñada en blanco y negro, y me permita cargar solo fotos antiguas" (en inglés), alcance para que todo el código para hacer eso se genere automáticamente y sin errores, es el sueño de muchos programadores, ya que les permite ahorrar tiempo y enfocarse en la parte más creativa de su tarea. Un desarrollo realizado por la argentina Globant y bautizado Augmented Coding promete lograr ese objetivo.
El anuncio de este avance se dio en el marco del evento denominado Converge+, del que participaron el CEO y cofundador de Globant, Martín Migoya, y que tuvo como estrella invitada a uno de los fundadores de Apple, Steve Wozniak. El encargado de mostrar las posibilidades que brinda esta nueva herramienta que usa inteligencia artificial fue su creador, el vicepresidente de Tecnología jefe del desarrollo en inteligencia artificial de la empresa, Haldo Sponton, quien habló con LA NACION vía videoconferencia y con un mate en la mano, como buen uruguayo.
"Augmented Coding es un software al que se le puede solicitar, mediante lenguaje natural, por escrito, que cree algún tipo de programa o app. El sistema responde creando el código, ahorrando así un tiempo valioso para el programador. Es un motor de búsqueda semántico, por lo que si alguien comete errores ortográficos o gramaticales en la escritura, no lo afecta, porque está entrenado a base de ejemplos", explica Sponton sobre su creación, que además es capaz de predecir, ante una sugerencia, lo que vendrá a continuación a nivel código.
Pero no solo escribe código ante las indicaciones o preguntas realizadas sino que, además, genera también la documentación para el código, algo muy valioso para los programadores. Además, puede hacer el camino inverso: es decir, proporcionarle código y que explique la operación.
Para que un sistema semejante funcione, necesita mucha información. Cuanto más cantidad tenga, mayor será la chance de encontrar la respuesta adecuada a lo que se le está pidiendo. El grupo liderado por Sponton tuvo que buscar esa información en distintas fuentes públicas, con lo que pudieron conseguir, no sin algunas dificultades, una buena base de datos que sirvió para que el modelo pudiese ser entrenado e ir resolviendo problemas, incluyendo los de una floja o mala redacción.
"Usamos casi mil millones de líneas de código en la base, e intentamos que el algoritmo aprenda la distribución de probabilidad de los datos. Incluso con errores, para que luego pueda reaccionar si esos errores aparecen. Lo importante es que sea capaz de entender la semántica de la búsqueda. Es parecido a cuando se entrenan a los dispositivos de reconocimiento de voz, donde se simulan distintos ruidos de fondo para que el sistema los aísle", explica Sponton.
Este avance abre el camino a muchas posibilidades nuevas, porque les permite a los desarrolladores ahorrar mucho tiempo a la hora de programar, con menor cantidad de errores y aprovechar para expandir nuevas posibilidades. Los primeros meses de la pandemia, Augmented Coding tuvo una prueba de fuego: ayudar a los programadores que no podían contar con el acompañamiento presencial de un líder o un referente técnico. La respuesta fue más que positiva, porque funcionó como un eficaz asistente a la hora de hacer código. "Es un algoritmo generativo, y se divide en dos: la parte de análisis de texto y código, donde se pueden dar indicaciones, hacer preguntas, y un mundo de generación, donde es posible generar la documentación sobre una porción de código o en base a una porción de código ver cuál sigue, en una función de autocompletado", indica Sponton.
Hablemos de código GPT-3
Otro desarrollo similar al propuesto por Sponton es GPT-3, una herramienta desarrollada por OpenAI capaz de generar código al darle indicaciones (también en inglés) y con lenguaje natural. Además de responder a los pedidos específicos puede contestar preguntas en el marco de una conversación, en base a la información incorporada (millones de páginas web, o prácticamente todo lo que existe en Internet) y a su experiencia. De esa manera, la respuesta estará asociada al contexto de la pregunta.
"El algoritmo GPT-3 es un decoder de texto, que está entrenado con muchísima información. Detrás de ese proyecto hay una inversión de US$ 12 millones solo en poder de cómputo: mientras nosotros utilizamos centenas de millones de parámetros, ellos usaron centenares de miles de millones", explica Sponton.
En Twitter, algunos fanáticos mostraron pruebas de la facilidad con la que pueden crear apps o webs con GPT-3. Uno de los más conocidos es el de Sharif Shameem, quien hasta mostró cómo hacer una app con un método similar al de Augmented Coding.
This is mind blowing.With GPT-3, I built a layout generator where you just describe any layout you want, and it generates the JSX code for you.W H A T pic.twitter.com/w8JkrZO4lk&— Sharif Shameem (@sharifshameem) July 13, 2020
Al respecto, Sponton señala que "en las pruebas que se pueden ver generan resultados increíbles, pero no está disponible más allá que en las propias aplicaciones que OpenIA abrió para hacer pruebas. No está disponible para nivel académico, ni para desarrollo de producto. Es un desarrollo bastante particular".
Con estos avances pareciera que dentro de algún tiempo, hasta el trabajo del programador se volverá obsoleto. ¿Será necesario seguir estudiando programación? "Generar código funcional que se adapte al entorno y que funcione es extremadamente difícil. Escribir código es un proceso casi creativo. Y si bien las máquinas pueden imitar ese proceso creativo, no deja de ser una ilusión de inteligencia -advierte Sponton-. Con este algoritmo podemos imitar esa ilusión de creatividad. Estamos proponiéndole al desarrollador una sugerencia de cómo empezar su trabajo. Se le brindan herramientas para facilitarle una parte de su tarea, pero su proceso creativo sigue existiendo".
La moral del algoritmo
Claro que todo avance puede utilizarse con fines que no eran los pensados por sus creadores. Si bien la principal función es allanar el trabajo de los programadores, la facilidad para hacer las cosas también podría permitir crear en forma casi automática, por ejemplo, webs o apps que fomenten el odio, la violencia o el racismo. A la pregunta de si es posible establecer algún límite moral para una inteligencia artificial, Sponton indica que "el sistema interpreta que tiene que construir una página web y busca el código, o una API, por ejemplo, para hacerlo, sin importar quién o por qué. Pero se pueden hacer distintas estrategias para evitar que alguien lo utilice para fomentar el odio: hay algoritmos específicamente entrenados para detectar el uso de, por ejemplo, de malas palabras o agresión verbal. Otra solución es trabajar con los datos, tratar de pre procesarlos, donde se pueden establecer algunos filtros para que el modelo no los aprenda".
Otra conclusión posible es que estos avances lleven en algún momento a los futuros distópicos mostrados en tantos libros, series o películas donde la inteligencia artificial avanzó tanto que las máquinas puedan emular al cerebro humano. En ese sentido, Sponton explica que su desarrollo "se trata nada más que una red neuronal. Es solo el modelo de cómo entendíamos el funcionamiento del cerebro hace cierto tiempo y le pusimos un modelo matemático para poder simularlo en una computadora. Pero el cerebro es mucho más que eso. Por más que nos asuste la cantidad de líneas de código usadas por estos programas y sus desarrollos, no es ni cerca de la capacidad de procesamiento que tiene el cerebro humano. No va a llegar nunca a más de la capacidad de ese modelo, por más que lo alimentemos con todos los datos del mundo". Aunque abre un pequeño paraguas: "si en un futuro cercano se expande la capacidad computacional, habrá que ver. Pero en este momento es imposible. Estamos trabajando con modelos, nada más. Para dar un ejemplo, lo mismo sucede con la capacidad de predicción del clima. Uno puede modelar a nivel matemático e introducir toda la información posible, pero la realidad no la puede explicar el modelo que tiene una capacidad determinada, no todas las variables que puede haber. Los modelos son estructuras matemáticas con las que podemos trabajar, hacer cuentas, pero que no representan la realidad de lo que pasa en el cerebro".
La presentación de Sponton en Converge+ terminó con una partitura creada por la inteligencia artificial, mostrando los avances a los que llega. "Es cierto, la tecnología que estamos viendo hoy parecía impensada hace 5 años; de hecho, todo lo que soporta la tecnología que presentamos tiene 3 años. Pero todos los avances que se hicieron tienen un componente colaborativo. Si bien la IA es capaz de crear una partitura, que sale de la predicción de un algoritmo, eso es una representación simbólica de la música. Pero no es la música. Está muy lejos de ser eso. Lo mismo pasa al codificar. De forma muy precisa, se puede hacer una representación semántica del código. Pero es solo eso. El desarrollador tiene una representación distinta en su cerebro del código".
Esta nueva herramienta, que les abre muchas puertas a los desarrolladores, ya tiene una versión abierta para que todos puedan probarla.