¿Cuál es el futuro de la programación con los Grandes Modelos de Lenguaje?

Un experimento en el aula muestra que los LLMs están beneficiando tanto a programadores expertos como a principiantes. Asimismo, las fronteras entre el código y el lenguaje natural se están desdibujando.

Jose A. Rodríguez-Serrano

Semanas después del lanzamiento de ChatGPT, el renombrado científico computacional Andrej Karpathy, miembro del equipo fundador de OpenAI y exdirector de IA en Tesla, tuiteó: "El nuevo lenguaje de programación más popular es el inglés". Esta afirmación alude a las capacidades actuales de ChatGPT y otros Grandes Modelos de Lenguaje (LLMs, por sus siglas en inglés) para autocompletar código fuente y generar código basado en instrucciones humanas. Es otro ejemplo más de la penetración de la IA en campos que demandan habilidades cognitivas y especializadas

Sigue habiendo un debate abierto en la comunidad sobre la posbilidad de que todo el código pueda ser reemplazado por lenguaje natural. Una pregunta como "¿Desaparecerá la programación?" es, probablemente, una sobresimplificación. En cambio, una discusión exhaustiva sobre el impacto de los LLMs en la programación es compleja, multifacética y matizada. Desafortunadamente, se trata de un debate que también está lleno de una considerable cantidad de ruido de fondo. 

Es innegable que asistentes como Github Copilot están mejorando la productividad de los programadores competentes, quienes a menudo se perciben a sí mismos como "aumentados" en lugar de reemplazados. También está aceptado que los LLMs pueden crear aplicaciones informáticas para tareas que no sean demasiado abiertas. Una cuestión diferente es si los usuarios de todos los niveles de experiencia en programación podrán llegar a crear fácilmente aplicaciones complejas y específicas sin interacciones directas con el código. 

La discusión exhaustiva sobre el impacto de los LLMs en la programación es compleja, multifacética y matizada

Los estudiantes del MSc en Business Analytics de Esade se encontrarán navegando por este mundo. En consecuencia, deberían ser conscientes del debate en curso y buscar evidencias para, con el tiempo, formar sus propias posiciones. Para fomentar esta reflexión, podríamos haber organizado un mero debate en clase. Sin embargo, en el curso optativo ‘Prototipos basados en datos’, tomamos un enfoque diferente. Durante la última clase, realizamos un experimento en el aula que permitió a los estudiantes descubrir evidencias de primera mano a través de un desafío práctico, en lugar de depender únicamente de discusiones teóricas. 

El experimento

Durante esta sesión experiencial, se asignaron a los estudiantes tres breves desafíos de programación: 

  • Crear un sitio web con una funcionalidad específica usando un lenguaje de programación que no conocieran. 
  • Crear una aplicación web con la misma funcionalidad usando un lenguaje de programación que les fuera familiar. 
  • Crear un juego simple utilizando un lenguaje conocido, pero donde el flujo operativo no fuera sencillo. 

La característica clave del desafío era que los estudiantes debían usar prompts de ChatGPT como el único medio para generar el código. 

Se asumía que los estudiantes ya tenían experiencia tanto con ChatGPT como con asistentes de código como GitHub Copilot y lo habían empleado anteriormente para desarrollar y depurar código y solicitar explicaciones. Sin embargo, este ejercicio colocó a los estudiantes en una situación desconocida bajo presión competitiva, involucrando varios escenarios (lenguaje conocido vs. desconocido, lógica fácil vs. difícil). El objetivo de aprendizaje era obtener diferentes perspectivas y percepciones útiles para el debate. 

Resultados del ejercicio 

Como ejemplo, estas fueron algunas observaciones registradas durante el ejercicio que destacan puntos esenciales del debate. 

Example
Resultados de uno de los participantes en el primer reto, un prototipo de página web para consultar información nutricional de productos 

 

  • Los LLMs son como "intérpretes de código" que procesan entradas en lenguaje natural y generan fragmentos de código. Los usuarios describen sus necesidades de programación, los LLMs responden con código y los usuarios iteran hasta lograr el resultado deseado. Este flujo de trabajo conocido es la base de algunas innovaciones como el Data Analyst de OpenAI o los Artefactos de Anthropic. Los equipos de estudiantes también explotaron otras ventajas de los LLMs, como solicitar la depuración de código erróneo o solicitar explicaciones. 
  • La automatización del código debería entenderse como una regla de 80/20. Aunque es relativamente rápido generar diseños básicos y funcionalidad usando prompts de LLM, algunos estudiantes observaron que, para detalles más finos, a veces era difícil lograr que el LLM produjera exactamente la funcionalidad detallada que tenían en mente. En lugar de ver a los LLMs como omnipotentes, los usuarios experimentados los ven más como una herramienta que puede realizar el 80% del trabajo en solo el 20% del tiempo. La utilidad de este enfoque depende de la importancia y el costo del 20% restante. En este sentido, los LLMs pueden ser muy efectivos para crear prototipos rápidos o dar un primer impulso al desarrollo de código. 
  • Saber cómo programar sigue siendo útil. Los usuarios que comprenden conceptos técnicos y pueden proporcionar prompts específicos (por ejemplo, “usa la biblioteca bootstrap de HTML”) obtienen mejores resultados de los LLMs o avanzan más rápido. Al igual que en otros dominios, la combinación de capacidades humanas y de IA produce la mayor eficiencia. De hecho, esto queda confirmado en nuestros datos: mientras que la mayoría de los prompts usados especificaban características funcionales del prototipo (48%), una porción nada despreciable (19%) incluía conceptos técnicos, instrucciones para actualizar código o código en sí mismo. 
  • Combinar LLMs con APIs es un patrón efectivo. A medida que el panorama de la programación evoluciona rápidamente con el creciente apoyo de APIs, los LLMs pueden ayudar a generar el "código puente" para conectar varias llamadas a APIs. Conectar con APIs o herramientas externas es clave detrás de ideas como la de los GPTs o el enfoque de Programación Visual (mejor artículo en la prestigiosa conferencia CVPR del año pasado), y, en general, sigue siendo un campo de investigación en curso
  • Los humanos aprenden a adaptarse a los LLMs. Por ejemplo, los equipos de estudiantes descubrieron rápidamente que traducir código de un lenguaje a otro funcionaba más eficazmente que volver a pedir instrucciones para un nuevo lenguaje. Como algoritmos que generan texto palabra por palabra, los LLMs funcionan de manera más confiable para tareas más deterministas (traducir un código a otro) y, por el contrario, producen más variabilidad en tareas abiertas. 
  • Dar al modelo tiempo para "pensar" mejora su rendimiento. Prompts como "Haz un plan primero" (usado por un equipo de estudiantes) no solo son informativos para los usuarios, sino que también conducen a una mejor generación de código. Debido a la naturaleza autorregresiva del modelo —donde cada nuevo fragmento de texto se genera en función del texto anterior— puede ser difícil para el modelo mantener la coherencia sin un plan intermedio para guiar sus respuestas. 

Conclusiones

Estos resultados destacaron puntos del debate que los estudiantes podrían haber leído por su cuenta, pero que en cambio experimentaron “haciendo”. Aun así, debe reconocerse que hay muchos ángulos del debate no cubiertos por este ejercicio. Por ejemplo, los desafíos de programación se mantuvieron simples para ajustarse a las limitaciones de una actividad en clase en un curso de prototipos. Pero, por supuesto, el desarrollo de aplicaciones más grandes implicaría una mayor complejidad (por ejemplo, este experimento personal documentado por Xavier Amatriain). También, el debate está anclado en la forma de las herramientas actuales, por lo que futuras innovaciones podrían introducir nuevas interfaces o paradigmas para la generación y asistencia de código. 

La colaboración entre humanos e IA ofrece los resultados más eficaces

Lo que podemos decir en este momento es que los LLMs están beneficiando tanto a programadores expertos como a principiantes, mientras simultáneamente desdibujan las líneas entre la codificación y el lenguaje natural para ambos grupos. Al igual que en otros campos, la colaboración entre humanos e IA parece generar los resultados más efectivos, subrayando el valor continuo de las habilidades de programación. 

En última instancia, estamos navegando un panorama dinámico donde los paradigmas y herramientas de los LLMs aún están evolucionando, lo que hace difícil predecir la dirección futura. Como dijo sabiamente Ed Catmull, fundador de Pixar y autor de Creativity Inc., a veces la mejor manera de explorar un camino es caminarlo. Animo tanto a estudiantes como a instructores a que abracen esta incertidumbre experimentando activamente y explorando nuevos enfoques, ya que la experiencia práctica es crucial para descubrir soluciones innovadoras y obtener una comprensión más profunda. 

Todo el contenido está disponible bajo la licencia Creative Commons Reconocimiento 4.0 Internacional.