Decidir qué lenguaje de programación aprender es una gran pregunta para los desarrolladores hoy en día debido a la gran inversión de tiempo que lleva. Pero esa pregunta podría volverse redundante en un futuro donde los modelos de inteligencia artificial (IA) hacen todo el trabajo pesado al comprender la descripción de un problema y codificar una solución.
Los investigadores de DeepMind, la unidad centrada en la inteligencia artificial de Google, afirman que su sistema AlphaCode puede expresar soluciones a problemas en el código que logra un puntaje de nivel medio en competencias de programación realizadas por nuevos programadores. Esas competencias requieren que los humanos comprendan un problema descrito en lenguaje natural y luego codifiquen un algoritmo de manera eficiente.
En un nuevo artículo no revisado por pares, los investigadores de DeepMind detallan cómo AlphaCode logró una clasificación promedio del 54,3 % de los mejores participantes en 10 concursos de programación realizados anteriormente con más de 5000 participantes. Las competiciones se alojaron en la plataforma de competición de códigos Codeforces.
VER: Los empleadores están desesperados por obtener científicos de datos a medida que aumenta la demanda
DeepMind afirma que AlphaCode es el primer sistema de generación de código de IA que se desempeña a un nivel competitivo en competencias de código para desarrolladores humanos. La investigación podría mejorar la productividad de los programadores y ayudar a los no programadores a expresar una solución sin saber cómo escribir código.
Los concursantes humanos y, por lo tanto, AlphaCode necesitaban analizar una descripción de un desafío o rompecabezas y escribir rápidamente un programa para resolverlos. Esto es más difícil que entrenar un modelo usando datos de GitHub para resolver un desafío de codificación simple.
Al igual que los humanos, AlphaCode necesitaba comprender una descripción del problema en lenguaje natural de varios párrafos, detalles narrativos de fondo y una descripción de la solución deseada en términos de entrada y salida.
Para resolver el problema, el competidor necesitaría crear un algoritmo y luego implementar el algoritmo de manera eficiente, lo que podría requerir que seleccionen, por ejemplo, un lenguaje de programación más rápido como C ++ en lugar de Python para superar esas restricciones.
El conjunto de datos de entrenamiento previo de AlphaCode incluía 715 GB de código de archivos tomados de repositorios de GitHub escritos en C++, C#, Go, Java, JavaScript/TypeScript, Lua, Python, PHP, Ruby, Rust y Scala. El equipo ajustó el modelo utilizando conjuntos de datos de problemas de programación competitivos extraídos de Codeforces y conjuntos de datos similares.
El impulso que DeepMind le dio a AlphaCode se logró mediante la combinación de modelos de transformadores a gran escala. Ejemplos de estos incluyen GPT-3 de OpenAI y el modelo de lenguaje BERT de Google. DeepMind usó modelos de lenguaje basados en transformadores para generar código y luego filtrar la salida a un pequeño conjunto de «programas prometedores» que se enviaron para su evaluación.
«En el momento de la evaluación, creamos una gran cantidad de programas C++ y Python para cada problema, órdenes de magnitud mayores que el trabajo anterior», explica el equipo AlphaCode de DeepMind en una publicación de blog.
«Luego, filtramos, agrupamos y volvemos a clasificar esas soluciones en un pequeño conjunto de 10 programas candidatos que enviamos para una evaluación externa. Este sistema automatizado reemplaza el proceso de prueba y error de la competencia de depuración, compilación, aprobación de pruebas y, finalmente, sumisión.»
DeepMind demuestra cómo AlphaCode codifica una solución a un problema dado aquí.
DeepMind considera algunas desventajas potenciales de lo que está tratando de lograr. Por ejemplo, los modelos pueden generar código con debilidades explotables, incluidas «vulnerabilidades no intencionales de código desactualizado o intencionales inyectadas por actores maliciosos en el conjunto de entrenamiento».
VER: Desarrollador web o CTO, ¿qué trabajos tecnológicos tienen los salarios de más rápido crecimiento?
Además, hay costos ambientales. Entrenar el modelo requirió «cientos de petaFLOPS días» en los centros de datos de Google. Pero la generación de código de IA a largo plazo «podría dar lugar a sistemas que puedan escribirse y mejorarse recursivamente, lo que conduciría rápidamente a sistemas cada vez más avanzados».
Existe el riesgo de que la automatización reduzca la demanda de desarrolladores, pero DeepMind señala las limitaciones de las herramientas de finalización de código actuales que mejoran en gran medida la productividad de la programación, pero hasta hace poco se limitaban a sugerencias de una sola línea y restringidas a ciertos idiomas o fragmentos de código cortos.
Sin embargo, DeepMind enfatiza que su trabajo está lejos de ser una amenaza para los programadores humanos, pero que sus sistemas deben poder desarrollar capacidades de resolución de problemas para ayudar a la humanidad.
«Nuestra exploración de la generación de código deja un amplio espacio para la mejora y sugiere ideas aún más emocionantes que podrían ayudar a los programadores a mejorar su productividad y abrir el campo a las personas que actualmente no escriben código», dicen los investigadores de DeepMind.