Este artículo es parte de nuestra serie exclusiva IEEE Journal Watch en asociación con IEEE Xplore. Los programadores han pasado décadas escribiendo código para modelos de IA y ahora, en un momento de círculo completo, se está utilizando IA para escribir código. Pero, ¿cómo se compara un generador de código de IA con un programador humano? Un estudio publicado en la edición de junio de IEEE Transactions on Software Engineering evaluó el código producido por ChatGPT de OpenAI en términos de funcionalidad, complejidad y seguridad. Los resultados muestran que ChatGPT tiene un rango extremadamente amplio de éxito cuando se trata de producir código funcional, con una tasa de éxito que varía desde un pobre 0,66 por ciento hasta un bueno 89 por ciento, dependiendo de la dificultad de la tarea, el lenguaje de programación y una serie de otros factores. Si bien en algunos casos el generador de IA podría producir un código mejor que los humanos, el análisis también revela algunas preocupaciones de seguridad con el código generado por IA. Yutian Tang es un profesor de la Universidad de Glasgow que participó en el estudio. Señala que la generación de código basada en IA podría proporcionar algunas ventajas en términos de mejora de la productividad y automatización de las tareas de desarrollo de software, pero es importante comprender las fortalezas y limitaciones de estos modelos. “Al realizar un análisis exhaustivo, podemos descubrir posibles problemas y limitaciones que surgen en la generación de código basada en ChatGPT… [and] “El GPT-3.5 es capaz de resolver problemas de algoritmos antes de 2021, lo que permite mejorar las técnicas de generación”, explica Tang. Para explorar estas limitaciones con más detalle, su equipo intentó probar la capacidad de GPT-3.5 para abordar 728 problemas de codificación de la plataforma de pruebas LeetCode en cinco lenguajes de programación: C, C++, Java, JavaScript y Python. “Una hipótesis razonable de por qué ChatGPT puede hacerlo mejor con los problemas de algoritmos antes de 2021 es que estos problemas se ven con frecuencia en el conjunto de datos de entrenamiento”. —Yutian Tang, Universidad de GlasgowEn general, ChatGPT fue bastante bueno en la resolución de problemas en los diferentes lenguajes de codificación, pero especialmente al intentar resolver problemas de codificación que existían en LeetCode antes de 2021. Por ejemplo, pudo producir código funcional para problemas fáciles, medios y difíciles con tasas de éxito de aproximadamente el 89, el 71 y el 40 por ciento, respectivamente. “Sin embargo, cuando se trata de los problemas de algoritmos después de 2021, la capacidad de ChatGPT para generar código funcionalmente correcto se ve afectada. A veces no comprende el significado de las preguntas, incluso para problemas de nivel fácil”, señala Tang. Por ejemplo, la capacidad de ChatGPT para producir código funcional para problemas de codificación “sencillos” se redujo del 89 por ciento al 52 por ciento después de 2021. Y su capacidad para generar código funcional para problemas “difíciles” también se redujo del 40 por ciento al 0,66 por ciento después de este tiempo. “Una hipótesis razonable de por qué ChatGPT puede funcionar mejor con problemas de algoritmos antes de 2021 es que estos problemas se ven con frecuencia en el conjunto de datos de entrenamiento”, dice Tang. Básicamente, a medida que evoluciona la codificación, ChatGPT aún no ha estado expuesto a nuevos problemas y soluciones. Carece de las habilidades de pensamiento crítico de un humano y solo puede abordar problemas que ha encontrado previamente. Esto podría explicar por qué es mucho mejor para abordar problemas de codificación más antiguos que los más nuevos. “ChatGPT puede generar código incorrecto porque no entiende el significado de los problemas de algoritmos”. —Yutian Tang, Universidad de GlasgowCuriosamente, ChatGPT es capaz de generar código con un menor tiempo de ejecución y consumo de memoria que al menos el 50 por ciento de las soluciones humanas a los mismos problemas de LeetCode. Los investigadores también exploraron la capacidad de ChatGPT para corregir sus propios errores de codificación después de recibir comentarios de LeetCode. Seleccionaron aleatoriamente 50 escenarios de codificación en los que ChatGPT generó inicialmente una codificación incorrecta, ya sea porque no entendía el contenido o el problema en cuestión. Si bien ChatGPT era bueno para corregir errores de compilación, en general no era bueno para corregir sus propios errores. «ChatGPT puede generar código incorrecto porque no entiende el significado de los problemas de algoritmo, por lo tanto, esta simple información de retroalimentación de error no es suficiente», explica Tang. Los investigadores también descubrieron que el código generado por ChatGPT tenía una buena cantidad de vulnerabilidades, como una prueba nula faltante, pero muchas de ellas eran fácilmente reparables. Los resultados también muestran que el código generado en C era el más complejo, seguido de C++ y Python, que tiene una complejidad similar al código escrito por humanos. Tangs dice que, en base a estos resultados, es importante que los desarrolladores que usan ChatGPT proporcionen información adicional para ayudar a ChatGPT a comprender mejor los problemas o evitar vulnerabilidades. «Por ejemplo, cuando se encuentran con problemas de programación más complejos, los desarrolladores pueden proporcionar el conocimiento relevante tanto como sea posible y decirle a ChatGPT en el mensaje de aviso qué vulnerabilidades potenciales debe tener en cuenta», dice Tang. Artículos de su sitio Artículos relacionados en la Web