En la carrera de informática, aprendimos sobre diferentes paradigmas de programación, y uno que siempre me fascinó fue la programación declarativa. Este tipo de programación se diferencia de la imperativa (como C, Python, Go, etc.) en que, en lugar de decirle al computador CÓMO hacer algo paso a paso (como una receta de cocina), simplemente se especifica el QUÉ tiene que hacer.

Programación Declarativa

En nuestros estudios, trabajamos con dos lenguajes declarativos: Lisp y Prolog. De estos, Prolog destacó por su habilidad para resolver problemas de lógica. Un clásico «Hello World» en Prolog consistía en resolver cuestiones familiares a través de un árbol genealógico, un ejemplo simple pero potente de cómo la programación declarativa podía facilitar tareas complejas con simplicidad.

Llegada de la verdadera programación declarativa con la IA Generativa

Pues bien, con la revolución de la IA generativa, la verdadera programación declarativa ha llegado. Para muestra, un botón.

Cuando se aprende a desarrollar frontend con frameworks modernos como Vue, Angular o React, un ejercicio común es crear una aplicación para gestionar una lista de tareas por hacer (ToDo list). Normalmente, se crea una aplicación de una sola página (SPA) donde, además de un listado, se incluye una entrada de texto con un botón para agregar una nueva tarea.

Nosotros hemos dado un paso más allá creando una versión actualizada, mucho más potente y flexible de una de estas aplicaciones, y lo mejor, 100% declarativa. Lo importante aquí es que no utilizamos la IA solo para generar el código, sino que la IA misma, en base a un prompt, manipula activamente la lista de tareas.

Implementación de la aplicación con IA

Para su implementación, utilizamos un workflow de n8n conectado a un bot de Telegram. Como modelo LLM, usamos GPT-4o mini y para el almacenamiento empleamos Redis con persistencia.

Screenshot de una lista de recordatorios en una app de chat

En este ejemplo, se puede ver cómo le pido a la IA que me liste los recordatorios pendientes. El poder del procesamiento del lenguaje natural hace que no tenga que mandar un comando estructurado o una palabra clave específica; la IA es capaz de detectar la intención. Hacer esto con un lenguaje imperativo requeriría añadir lógica adicional, a menudo compleja.

Añadir y eliminar tareas con IA

Añadir tareas o recordatorios es igualmente sencillo. Para eliminar tareas, tampoco es necesario darle las palabras exactas, ya que, en la caja negra del modelo, la IA analiza las opciones y busca la más parecida. Si hay dos tareas muy similares y la IA tiene dudas, nos preguntará directamente a cuál nos referimos.

Screenshot de una conversación de WhatsApp con una lista de recordatorios

Toda la magia de esto reside en un simple prompt.

Y aquí está la magia, un system prompt, 100% declarativo.

El Futuro de la programación

Como bien dice el CEO de nVidia, Jensen Huang, el lenguaje de programación del futuro es inglés. Y en Montevive.ai estamos completamente de acuerdo.

«Programming language should be human»

-Jense Huang, nVidia CEO

La flexibilidad y facilidad que ofrece este tipo de programación es inmensa, aunque siempre emerge algún argumento en contra. Un desafío frecuente es el gasto energético y computacional, al parecer desmesurado para una tarea relativamente sencilla. Sin embargo, los costos se optimizan constantemente y, a largo plazo, la flexibilidad y la eficiencia superan a los métodos tradicionales.

Conclusión

En definitiva, estamos avanzando hacia una nueva era de la programación, donde la programación declarativa se encuentra con la IA generativa para facilitar nuestra interacción con la tecnología de manera nunca antes vista. Bienvenidos a la era de la programación del futuro.

Espero que encuentres interesante y útil esta nueva perspectiva sobre la programación y el poder de la IA generativa. 🚀🔥

La programación imperativa ha muerto. ¡Larga vida a la programación declarativa!