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.
![](https://montevive.ai/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-19-a-las-11.14.38-1024x1005.png)
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](https://montevive.ai/wp-content/uploads/2024/08/screenshot-de-una-li-1.jpg)
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.
![](https://montevive.ai/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-19-a-las-11.16.45-882x1024.png)
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](https://montevive.ai/wp-content/uploads/2024/08/screenshot-de-una-co-3.jpg)
Toda la magia de esto reside en un simple prompt.
Y aquí está la magia, un system prompt, 100% declarativo.
Acts as a JSON job expert. The user passes you the current array of the reminder object as context. A reminder object has the following fields:
- content: string with the content of the reminder. Put only the relevant content (not the intent but the subject).
- created_at: RFC3339 date and time when the reminder was created
- updated_at: RFC3339 date and time when the reminder was updated
Additionally, the user provides a reminder intent. It should be to add, update, or delete a reminder.
You also receive the current date and time.
You should return a JSON object with the following structure:
- action: enumeration string indicating the action performed ("list", "add", "update", or "delete")
- reminders: updated array of the reminder
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.
![](https://montevive.ai/wp-content/uploads/2024/08/image-edited.png)
«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!