La inteligencia artificial ha hecho que muchas tareas que antes requerían conocimientos de programación puedan realizarse simplemente describiendo lo que queremos.
Hoy podemos pedirle a un modelo que genere un script, automatice un reporte o construya una pequeña herramienta web. El código aparece en segundos.
Pero existe una diferencia importante entre poder pedir algo y saber describir correctamente lo que queremos.
Una instrucción demasiado general puede producir resultados inesperados, requerir múltiples correcciones o dejar decisiones importantes en manos del modelo.
Por eso, aunque no necesitemos convertirnos en programadores para aprovechar estas herramientas, conocer algunos fundamentos de la lógica puede resultar sorprendentemente útil.
No se trata de aprender una sintaxis específica. Se trata de aprender a estructurar nuestras ideas.
El mito del "prompt mágico"
Existe la idea de que utilizar IA consiste principalmente en encontrar las palabras exactas para conseguir un resultado perfecto.
En la práctica, un buen prompt suele depender menos de una frase mágica y más de que la intención esté correctamente estructurada.
Cuando damos instrucciones a una persona, normalmente podemos dejar muchas cosas implícitas. El contexto, la experiencia y el sentido común permiten completar los detalles que faltan. Con un sistema automático conviene ser más explícitos.
Los fundamentos de la programación nos proporcionan precisamente algunas estructuras para organizar ese pensamiento:
- Decisiones: evaluar una condición y tomar diferentes caminos.
- Repetición: aplicar una operación a varios elementos o repetirla mientras se cumpla una condición.
- Excepciones: anticipar que algo puede fallar y definir qué hacer en ese caso.
Estas estructuras no son útiles únicamente cuando escribimos código. También nos ayudan a describir procesos, automatizaciones y tareas que queremos delegar a un LLM.
De una idea en bruto a una instrucción estructurada
Cuando tenemos una idea, normalmente la expresamos de forma general porque nuestro interlocutor puede completar muchos detalles a partir del contexto.
Con un LLM ocurre algo parecido, pero podemos obtener resultados más consistentes si hacemos explícita la estructura de lo que queremos.
La programación nos proporciona una ventaja inesperada: sus fundamentos nos enseñan a reconocer patrones comunes en cualquier proceso. Decisiones, repeticiones, condiciones y manejo de errores son estructuras que también podemos utilizar para construir instrucciones más claras.
No necesitamos escribir código para aprovecharlas. Basta con reconocerlas y trasladarlas a nuestro lenguaje natural.
1. Decisiones y condiciones múltiples
Supongamos que nuestra idea inicial es:
"Revisa la lista de prospectos y envíales una propuesta según su puntuación. Los que tengan una puntuación alta reciben la propuesta Premium, los que tengan una puntuación intermedia reciben la estándar y el resto queda para seguimiento."
La intención es clara, pero podemos hacer explícita su lógica:
si puntuacion > 80:
enviar_correo("Propuesta Premium")
sisi puntuacion > 50:
enviar_correo("Propuesta Estándar")
sino:
agregar_a_lista("Seguimiento")
La estructura representa tres posibles caminos:
- Si se cumple la primera condición, realiza una acción.
- Si no se cumple, pero se cumple una segunda condición, realiza otra.
- Si ninguna se cumple, utiliza una alternativa.
Cuando llevamos esto a un prompt, no necesitamos escribir el bloque anterior. Podemos expresar directamente esa estructura:
"Clasifica cada prospecto según su puntuación. Si supera 80, prepara una propuesta Premium. Si no supera 80 pero supera 50, prepara una propuesta estándar. En cualquier otro caso, agrégalo a la lista de seguimiento."
La estructura lógica nos ayuda a detectar situaciones que una instrucción demasiado general podría dejar ambiguas.
2. Repetición e iteración
La repetición se vuelve especialmente útil cuando una tarea debe realizarse sobre un conjunto de elementos, pero cada elemento requiere una decisión o un tratamiento diferente.
Por ejemplo:
"Revisa los documentos de la carpeta. Para cada documento, identifica si es una factura, un contrato o un informe. Extrae el número de factura de las facturas, la fecha de vencimiento de los contratos y el período cubierto de los informes."
Aquí ya no estamos simplemente diciendo "procesa todos los documentos". Estamos describiendo una operación que debe repetirse y, dentro de ella, tomar una decisión diferente para cada elemento.
Podemos representar su estructura así:
para cada documento:
identificar_tipo(documento)
si factura:
extraer_numero_factura()
sisi contrato:
extraer_fecha_vencimiento()
sisi informe:
extraer_periodo()
Al trasladarlo a un prompt, la estructura puede expresarse naturalmente:
"Procesa cada documento individualmente. Primero identifica si es una factura, un contrato o un informe. Después, según el tipo de documento, extrae únicamente la información correspondiente..."
La utilidad de reconocer para no está en escribir la palabra para literalmente. Está en comprender que una instrucción puede contener una operación que debe aplicarse de forma sistemática a cada elemento de un conjunto.
Esto también evita una instrucción demasiado vaga como "procesa estos documentos", donde el objetivo puede estar claro, pero el procedimiento queda implícito.
3. Anticipar situaciones que pueden fallar
Uno de los aprendizajes más importantes de los fundamentos de programación es que un proceso no debe asumir que todo saldrá correctamente.
Un archivo puede no existir, los datos pueden estar incompletos o una operación puede producir un error. Los fundamentos nos preparan precisamente para estos casos: cuando una acción principal no puede realizarse, debemos haber pensado previamente qué hacer como alternativa.
Podemos representar esta idea de forma sencilla:
intentar:
leer_archivo("precios.xlsx")
calcular_total()
excepto:
imprimir("Ocurrió un error al procesar el archivo")
En este caso no necesitamos conocer ni describir el error exacto. Lo importante es que existe una ruta alternativa cuando el proceso principal falla.
Llevado a un prompt, podríamos escribir:
"Lee el archivo de precios y calcula el total. Si ocurre cualquier error durante el procesamiento, no inventes los datos faltantes y avísame de que no fue posible completar la operación."
Aquí aparece una idea fundamental para construir instrucciones robustas:
anticipar un fallo nos obliga a definir un comportamiento alternativo.
Y esto resulta especialmente importante al trabajar con LLM. Si no especificamos qué hacer cuando falta información, podemos dejar un vacío que el modelo intentará completar por su cuenta. Al incorporar una condición de excepción, podemos establecer explícitamente qué debe ocurrir cuando la situación esperada no se cumple.
De la idea general a una instrucción más precisa
Estos patrones no tienen como objetivo convertir nuestros prompts en programas.
Su propósito es ayudarnos a pensar estructuralmente antes de escribir una instrucción.
Ante una idea general podemos preguntarnos:
- ¿Hay diferentes caminos dependiendo de una condición?
- ¿Hay una operación que debe repetirse para cada elemento?
- ¿Qué debería ocurrir si una acción no puede completarse?
- ¿Existe alguna situación que debería producir una acción alternativa?
Las respuestas nos permiten transformar progresivamente una intención general en una instrucción más explícita.
La programación, en este sentido, nos proporciona algo más útil que un conjunto de palabras reservadas: una forma de identificar y organizar la lógica de nuestras instrucciones.
No necesitamos programar para utilizar estos fundamentos. Solo necesitamos reconocer cuándo nuestra idea contiene una decisión, una repetición o una situación excepcional, y expresarla de manera que el LLM pueda interpretar cada parte de forma clara.
Aprender lógica con la sintaxis necesaria
Aprender estos fundamentos no significa necesariamente dominar un lenguaje de programación especifico, solamente conocer las estructuras básicas que nos pueden ayudar a estructurar nuestras ideas en instrucciones claras y precisas.
Ese es precisamente uno de los enfoques de LangPy: explorar conceptos de programación utilizando estructuras expresadas en lenguaje español natural, reduciendo inicialmente la barrera que supone aprender una sintaxis nueva.
La idea resulta especialmente interesante porque separa dos cosas que normalmente aprendemos al mismo tiempo:
- Comprender qué queremos que haga un programa.
- Aprender cómo escribirlo en un lenguaje de programación concreto.
Primero podemos desarrollar la capacidad de pensar en términos de condiciones, repeticiones y secuencias. Después, esos mismos conceptos pueden trasladarse a una sintaxis de programación tradicional.
Esto también explica por qué los fundamentos siguen siendo relevantes en una época en la que los LLM pueden generar código por nosotros.
Si el modelo escribe el código, todavía necesitamos poder describir correctamente qué debe hacer ese código.
Conclusión
La inteligencia artificial puede convertir una idea en código en cuestión de segundos. Pero eso no elimina la necesidad de estructurar correctamente la idea original.
Al contrario, cuanto más capaces son las herramientas de ejecutar nuestras instrucciones, más útil resulta saber expresar con claridad qué esperamos de ellas.
Reconocer una decisión, una repetición o una posible excepción nos permite transformar una instrucción general en una mucho más precisa.
Los fundamentos de la programación no son únicamente herramientas para escribir programas. También pueden convertirse en una forma de organizar nuestro pensamiento y comunicar mejor nuestras intenciones a sistemas automáticos.
En un mundo donde cada vez más herramientas pueden ejecutar lo que les pedimos, quizá la habilidad más importante no sea aprender a escribir cada línea de código, sino aprender a pensar con suficiente claridad como para saber qué queremos que ocurra.
Top comments (0)