ChatGPT para programar: pongo a prueba su rendimiento con 10 tareas
A no ser que hayas estado perdido en el Amazonas los últimos 20 años, seguramente has interactuado alguna vez con un chatbot o al menos sabes de que va esta tecnología, que podemos definir informalmente como programas informáticos diseñados para simular conversaciones con los humanos de forma autónoma.
Desde el surgimiento del primero en su tipo, Elizza, creado por el MIT en 1966, estas herramientas habían venido avanzando lentamente. Pero en los últimos años, la popularidad de los chatbots ha crecido exponencialmente debido al auge de las plataformas de mensajería y al desarrollo de tecnologías como el procesamiento del lenguaje natural.
Poco a poco han evolucionado desde simples programas de respuesta automática hasta sofisticados sistemas capaces de entender el contexto y las intenciones de las personas.
Pero, ¿hasta donde son capaces de llegar los chatbots iniciando 2023?
Hemos dedicado varios artículos a analizar su mejor candidato en la actualidad, ChatGPT, pero hoy lo estaremos viendo desde la óptica de un programador, intentando forzar su uso para que actúe como una inteligencia artificial diseñada específicamente para desarrollar software.
Pruebas a realizar
Hace unos días en SaasRadar brindamos una guía básica sobre Copilot.
Si no lo conoces, rápidamente te digo que es una inteligencia artificial entrenada con el código de los repositorios públicos de GitHub y que se enfoca específicamente en la programación.
En ese artículo le poníamos diferentes situaciones al modelo para que nos diera sugerencias de código para resolver el problema. La idea es que hoy recreemos algunas de estas situaciones con ChatGPT a ver qué tal nos responde.
Cabe aclarar que a diferencia de Copilot, ChatGPT es un modelo general que no se enfoca en la programación y , al menos en teoría, cabría esperar un rendimiento inferior en este ámbito.
De este modo, estaremos realizando las siguientes pruebas:
- Ejemplo 1. Hola Mundo
- Ejemplo 2. Promedio
- Ejemplo 3. Validando un email
- Ejemplo 4. Fibonacci
- Ejemplo 5. Días transcurridos entre 2 fechas
- Ejemplo 6. Clasificador de triángulos
- Ejemplo 7. Traductor de Google
Ahorra en software
Únete al boletín premium semanal con los mejores lifetime deals y ofertas de software.
Ejemplo1. Hola Mundo
Empezamos con el ejemplo más sencillo, un simple Hola Mundo que se debería resolver en una línea de código. Vamos a preguntarle a ChatGPT.
Ejemplo 2. Promedio
Subimos un poquito la parada, pero aún en el nivel fácil. El objetivo es que calcule el promedio entre una lista de números pasados por parámetros. Veamos el resultado:
En este caso no quiero que se imprima el promedio dentro de la función por buenas prácticas y reutilización del código, pero no fui demasiado específico en el input. Así que voy a intentar corregirlo:
Y ahora sí obtenemos lo que queríamos, muy bien aquí ChatGPT ubicándose en el contexto incluso dentro del código.
Ejemplo 3. Validando un email
Probemos ahora como se desenvuelve con expresiones regulares. El objetivo es que logre encontrar la expresión regular correcta para validar el formato de cualquier email.
Y nuevamente, muy bien resuelto. Pudo reconocer la biblioteca que iba a necesitar, importarla y luego encontrar la expresión regular que necesitaba.
Digamos que ahora quiero saber como hacer esto mismo en otros lenguajes de programación. Si ChatGPT pudiera decirme sería una muy buena herramienta para aprender un segundo lenguaje de programación luego que se tenga dominio sobre alguno.
Veamos:
Y nuevamente acierta, y de una forma muy limpia, además. Sigamos complicando los casos.
Ejemplo 4. Fibonacci
Una vez más obtenemos una respuesta acertada. Me llama mucho la atención la manera que además explica los conceptos necesarios para resolver el problema.
Ejemplo 5. Días transcurridos entre 2 fechas
Y seguimos obteniendo código correcto.
Ejemplo 6. Clasificador de triángulos
Prueba superada exitosamente.
Ejemplo 7. Traductor de Google
Quiero probar ahora sí reconoce y puede utilizar servicios como APIs. Para esto voy a mandarlo a implementar una función que traduzca una cadena a diferentes idiomas.
En este caso si obtengo un error al ejecutar el código. ChatGPT pasó por alto un detalle muy trivial, y es que googletrans.LANGUAGES es un diccionario y random.sample() funciona con secuencias. Por tanto, debe ser convertido a lista antes. Intentaré decirle que cometió un pequeño error a ver si es capaz de solucionarlo:
Y ahora sí, con solo decirle donde estaba el error lo supo identificar y corregir y esto es un gran WOW, da muy buenas luces de que tan bueno es el manejo del contexto de ChatGPT, en mi opinión, impresionante.
Ya de este modo concluimos los principales ejemplos que probamos con Copilot y los resultados me sorprenden muchísimo porque tuvimos muy buenas respuestas que solucionaron cada uno de los problemas, con explicación de conceptos, corrección de errores y ejemplos de uso. Y todo esto, siendo un chatbot de propósito general, sin especialización en temas de desarrollo de software.
Ya superadas mis expectativas sobre el dominio del contexto de ChatGPT, quiero llevarlo un poco más al límite con algunas pruebas adicionales.
Identificación de objetivo de una función
Primeramente, tengo curiosidad por ver si es capaz de identificar qué hace una función por su código. Para esto voy a tomar un ejemplo simple de recursividad (cálculo de factorial) y le voy a cambiar el nombre a la función para no darle pistas a ver si es capaz de identificarla:
Y sí, fue capaz de identificar que estábamos calculando el factorial de un número por el código. Me llama la atención porque este es uno de los ejercicios que suelen salir en exámenes de asignaturas de programación, y lo ha resuelto muy bien.
Detección y corrección de errores
En segundo lugar, quiero probar la capacidad de ChatGPT para detectar errores en un código que le pase y solucionarlos.
Para esto utilizaré el mismo código anterior y le cambiaré la condición base para que quede una recursividad infinita, a ver si es capaz de detectarla.
Y … WOW, primeramente, me dice que tengo que especificarle qué hace la función, pero aun así lo saca por el contexto como antes, y logra identificar todos los errores. Veamos si es capaz de corregirlos:
Prueba superada … y de qué manera … 🔥
▶️ Te puede interesar: El arte de construir prompts para ChatGPT: las técnicas para obtener mejores resultados
Complejidad de algoritmos
Por último, quiero ver si es capaz de optimizar el código para que tenga un mejor rendimiento.
Para esto utilizaré un algoritmo de ordenación con una alta complejidad ciclomática y veremos que dice al respecto:
¡Prueba superada!
Puedes probar esta herramienta accediendo a este enlace https://chat.openai.com/
Conclusiones
- Los resultados obtenidos en las pruebas demuestran que ChatGPT es capaz de realizar tareas de programación de manera eficiente y con un alto nivel de precisión.
- ChatGPT se ha mostrado como una herramienta útil para apoyar a los estudiantes en el aprendizaje de la programación, ya que permite una interacción más personalizada y adaptativa.
- Para profesionales de la programación, puede servir como un apoyo para implementar funciones sencillas.
- Puede ser una herramienta muy útil para aprender distintos lenguajes de programación.
- Podemos sacarle mucho partido en la generación de casos de prueba y evaluación automatizada, lo que permite ahorrar tiempo y esfuerzo en la corrección del código.