Cuando OpenAI publicó por primera vez un artículo sobre su nueva generación de lenguaje AI, GPT-3 , el entusiasmo se desarrolló lentamente. El documento indicó que GPT-3, el modelo de inteligencia artificial en lenguaje natural más grande hasta el momento, estaba avanzado, pero solo tenía algunos ejemplos escritos de su salida. Luego, OpenAI dio acceso selecto a una versión beta de GPT-3 para ver qué harían los desarrolladores con él, y las mentes quedaron asombradas.
Los desarrolladores que juegan con GPT-3 han recurrido a Twitter con ejemplos de sus capacidades: historias cortas, comunicados de prensa, artículos sobre sí mismo, un motor de búsqueda . Quizás lo más sorprendente fue el descubrimiento de que GPT-3 puede escribir código de computadora simple. Cuando el desarrollador web, Sharif Shameem, lo modificó para escupir HTML en lugar de lenguaje natural, el programa generó código para diseños de páginas web a partir de mensajes como “un botón que parece una sandía”.
“Solía decir que la investigación de IA parecía tener un punto ciego extraño hacia la automatización del trabajo de programación, y sospechaba un sesgo de autopreservación subconsciente”, tuiteó John Carmack, legendario desarrollador de juegos de computadora y consultor CTO en Oculus VR. “El descubrimiento reciente, casi accidental, de que GPT-3 puede escribir código genera un ligero escalofrío”.
Si bien el descubrimiento de las habilidades de codificación de GPT-3 puede haber sido algo fortuito, existe, de hecho, todo un campo dedicado al desarrollo de algoritmos de aprendizaje automático que pueden codificar. La investigación ha avanzado y un nuevo algoritmo recientemente dio otro paso.
El algoritmo, llamado similitud de código inferido por máquina (MISIM), es una creación de investigadores de Intel, el Instituto de Tecnología de Georgia, la Universidad de Pensilvania y el MIT. Con formación en la enorme cantidad de código que ya está disponible públicamente en la web, MISIM puede descubrir qué se supone que debe hacer un programa. Luego, después de encontrar otros programas similares y compararlos con ellos, MISIM puede ofrecer formas de hacer que el programa sea más rápido o más eficiente.
No es el primer algoritmo de aprendizaje automático que hace recomendaciones o compara similitudes, pero según los investigadores en un nuevo artículo preimpreso sobre MISIM , fue hasta 40 veces más preciso en la tarea cuando se enfrentó cara a cara con varios de sus competidores más avanzados.
A corto plazo, la IA podría ser un compañero útil para los programadores de hoy. Más allá, el campo podría abrir la programación a cualquiera que pueda describir lo que quiere crear en un lenguaje cotidiano o traer máquinas que escriban y mantengan su propio código.
El sueño de la programación de máquinas
La búsqueda de computadoras que puedan codificar es casi tan antigua como la propia informática moderna . Si bien ha habido avances en la automatización de la programación, la reciente explosión del aprendizaje automático está acelerando el progreso en un campo llamado programación automática.
En un artículo de 2018 sobre el terreno , un grupo de investigadores de Intel y del MIT escribió: “El objetivo general de la programación de máquinas es eliminar la carga de escribir código correcto y eficiente de un programador humano y, en su lugar, colocarlo en una máquina”.
Los investigadores están buscando sistemas que puedan automatizar los pasos necesarios para transformar la intención de una persona, es decir, lo que quieren que haga un software, en un programa de trabajo. También tienen como objetivo automatizar el mantenimiento del software a lo largo del tiempo, como, por ejemplo, encontrar y corregir errores, mantener los programas compatibles o actualizar el código para mantenerse al día con las actualizaciones de hardware.
Eso es más fácil decirlo que hacerlo, por supuesto. Escribir software es tanto arte como ciencia. Se necesita mucha experiencia y creatividad para traducir la intención humana al lenguaje de las máquinas.
Pero como muestra GPT-3, el lenguaje es en realidad una habilidad que el aprendizaje automático está dominando rápidamente, y los lenguajes de programación no son tan diferentes del inglés, chino o swahili. Es por eso que GPT-3 adquirió algunas habilidades de codificación como un subproducto de su entrenamiento en lenguaje natural.
Si bien los avances algorítmicos en el aprendizaje automático, como GPT-3, son clave para el éxito de la programación automática, serían inútiles sin buenos datos de entrenamiento. Afortunadamente, hay una gran cantidad de código disponible públicamente en sitios como GitHub, que se completa con historiales de revisión y notas, y fragmentos de código e hilos de comentarios en sitios como Stack Overflow . Incluso Internet en general, con páginas web y códigos accesibles, es una fuente abundante de material de aprendizaje para que la IA lo trague.
En teoría, así como GPT-3 ingiere millones de artículos de ejemplo para aprender a escribir, las IA de programación de máquinas podrían consumir millones de programas y aprender a codificar. Pero cómo hacer que esto funcione en la práctica es una cuestión abierta. Ahí es donde entra en juego MISIM.
Un compañero robot para escribir código Kickass
MISIM avanza un paso en la programación de máquinas al poder identificar con precisión lo que se supone que debe hacer un fragmento de código. Una vez que ha clasificado el código, lo compara con millones de otros fragmentos de su base de datos, muestra los que son más similares y sugiere mejoras en el fragmento de código basándose en esos otros ejemplos.
Debido a que MISIM clasifica el propósito del código en un nivel alto, puede encontrar fragmentos de código que hacen lo mismo pero están escritos de manera diferente (hay más de una forma de resolver el mismo problema) e incluso fragmentos en otros lenguajes de programación. En términos simples, esto es un poco como alguien que lee un artículo del New Yorker , identifica su tema y luego encuentra todos los demás artículos sobre ese tema, ya sea en Der Spiegel o Xinhua .
Otro beneficio de trabajar en ese nivel más alto de clasificación es que el programa no necesita el código para ser compilado. Es decir, no tiene que traducirlo al código de máquina que ejecuta la computadora. Dado que MISIM no requiere un compilador, puede analizar fragmentos de código a medida que se escriben y ofrecer fragmentos de código similares que podrían ser más rápidos o más eficientes. Es un poco como una función de autocompletar de correo electrónico para terminar tus oraciones.
Intel planea ofrecer MISIM a los desarrolladores internos solo con este propósito. La esperanza es que resulte un compañero útil, haciendo que el proceso de escritura de código sea más rápido, más fácil y más efectivo. Pero potencialmente hay más que puede hacer. La traducción entre idiomas informáticos, por ejemplo, también podría ser una aplicación valiosa . Quizás podría ayudar a los programadores a actualizar el software gubernamental escrito en lenguajes arcaicos a algo más moderno.
Pero Justin Gottschlich, director de programación de máquinas en Intel, tiene una visión aún mayor: la democratización total de la codificación.
Combine MISIM (o algo parecido) con IA de lenguaje natural, y los futuros programadores podrían simplemente escribir lo que quieren que haga un software, y la computadora prepara el código. Eso abriría la programación a cualquiera con un dominio decente de su idioma nativo y el deseo de hacer algo genial.
Como Gottschlich dijo a MIT Technology Review , “Me gustaría ver a 8 mil millones de personas crear software de la manera que sea más natural para ellos”.
Fuente:
<p; tab-interval=”36pt”>Dorrier, J. (2020, 3 agosto). This AI Could Bring Us Computers That Can Write Their Own Software. Singularity Hub. https://singularityhub.com/2020/08/02/this-ai-could-bring-us-computers-that-can-write-software/</p;>