Fundamentos de Programación

Descubre qué es programar realmente y los conceptos esenciales del desarrollo de software. Una inmersión profunda en paradigmas y definiciones.

12 min de lectura
Nivel básico
Matías Beltramone
04 Sep 2025
1

¿Qué es programar? Y, ¿qué es un programa?

¡Comencemos! Si estás aquí, es probable que ya hayas escuchado las palabras "programar" o "programa" mil veces, y quizás te preguntes qué es la "programación web". Pero puede que no tengas del todo claro a qué nos referimos con cada término. ¡No te preocupes! En este post vamos a desglosar estos conceptos de la forma más simple posible, empezando por la programación web, ya que de esto se derivan los conceptos asociados, dejando así unos fundamentos sólidos.

Descomponiendo el concepto: Programación Web 🌐

Cuando decimos programación web, estamos uniendo dos ideas principales:

Programación: El acto de crear un programa.
Web: El universo de internet, sitios y servicios a los que accedemos.

Para entender la programación web, primero necesitamos entender qué es programar y qué es un programa. ¡Vamos a empezar por ahí!

2

El misterio del Programa: ¿Qué es? 🧐

Probablemente, la definición más común que encuentres sea: "Un programa es una secuencia de instrucciones para una computadora".

Aunque no es del todo incorrecta, esta definición es un poco limitada. Piensa en esto:

¿Por qué esta definición es limitada?

  • Es como decir que el arte es "pintar con pinceles". Pero también puedes esculpir, usar fotografía, arte digital, collage... El arte es la expresión, el pincel es solo una herramienta..
  • Es como si dijéramos que la astronomía es la "ciencia de mirar por un telescopio". El telescopio es solo una herramienta, no el objeto de estudio.
  • No todos los programas son una lista de pasos. Por ejemplo, hay lenguajes (como Prolog) donde le das a la computadora hechos y reglas, y ella saca sus propias conclusiones.
  • Los programas modernos por ejemplo responden a eventos. Una app no ejecuta pasos fijos: espera que toques un botón, llegue un mensaje, etc.

🖥️ La máquina de Von Neumann: El porqué de la definición clásica

La definición de programa como una "secuencia de instrucciones" tiene sus raíces en la forma en que se construyen y operan la mayoría de las computadoras que usamos hoy en día. Esto se conoce como la arquitectura de Von Neumann.

En esta arquitectura, la computadora funciona con:

CPU (Unidad Central de Procesamiento)

El "cerebro" que realiza los cálculos.

Memoria (RAM)

Donde se almacenan tanto el programa como los datos que se van a usar.

El programa es una serie de instrucciones almacenadas una tras otra en la memoria. La CPU las ejecuta en un ciclo continuo conocido como Fetch-Decode-Execute:

1
Fetch (Buscar): La CPU va a la memoria y busca la siguiente instrucción.
2
Decode (Decodificar): La CPU decodifica esa instrucción para entender qué debe hacer.
3
Execute (Ejecutar): La CPU ejecuta la acción indicada por la instrucción.

💡 La clave: Este ciclo es una secuencia de pasos, uno detrás del otro. Por eso, históricamente, la definición de un programa se ató a este modelo. La limitación es que confunde el concepto de programa con una herramienta específica.

🧩 Un ejemplo para contrastar: La lógica de Prolog

Para entender que no todos los programas son una secuencia de pasos, veamos un ejemplo con Prolog, que sigue el paradigma de programación lógica.

Imagina que queremos que la computadora sepa si un elemento está en una lista. En un lenguaje tradicional, le diríamos paso a paso qué hacer. En Prolog, le decimos la lógica del problema:

Hechos:
contiene(X, [X | _]).

Este hecho dice: El elemento X está en una lista si X es el primer elemento de la lista.

Reglas:
contiene(Y, [_ | XS]) :- contiene(Y, XS).

Esta regla dice: El elemento Y está en una lista si Y está en el resto de la lista.

¿Cómo funciona? 🤔

Cuando le preguntas a Prolog si el número 2 está en [1, 2, 3], el programa no sigue una secuencia de pasos. En su lugar, el motor de inferencia razona:

1 "Quiero saber si el 2 está en [1, 2, 3]."
2 "La regla contiene(X, [X | _]) no aplica porque el 2 no es el primer elemento."
3 "Uso la otra regla: necesito saber si el 2 está en el resto de la lista [2, 3]."
4 "¡Ahora sí! El 2 es el primer elemento de [2, 3]."
Conclusión: ¡True (verdadero)!

🎯 La diferencia clave: No le dimos una serie de pasos fijos. Simplemente le dimos la lógica, y ella usó esa lógica para encontrar la respuesta.

👨‍👩‍👧‍👦 Otro ejemplo: Relaciones familiares

Veamos cómo Prolog puede deducir relaciones familiares a partir de hechos básicos:

Hechos básicos:
padre(juan, maria).
padre(juan, carlos).
padre(pedro, juan).
madre(ana, maria).
madre(ana, carlos).

Estos hechos establecen relaciones directas: "Juan es padre de María", etc.

Reglas de inferencia:
abuelo(X, Z) :- padre(X, Y), padre(Y, Z).
abuelo(X, Z) :- padre(X, Y), madre(Y, Z).

hermanos(X, Y) :- padre(P, X), padre(P, Y), X \= Y.

Estas reglas definen: "X es abuelo de Z si X es padre de Y, y Y es padre/madre de Z".

¿Qué sucede cuando preguntamos? 🤔

Si preguntamos: ?- abuelo(pedro, maria).

1 "¿Pedro es abuelo de María?"
2 "Para eso, Pedro debe ser padre de alguien que sea padre/madre de María."
3 "Pedro es padre de Juan. ¿Juan es padre/madre de María?"
4 "¡Sí! Juan es padre de María."
Conclusión: ¡Pedro ES abuelo de María!

🔍 Lo fascinante: Nunca le dijimos explícitamente que Pedro era abuelo de María. Prolog dedujo esta información usando las reglas que le dimos. ¡Es como un detective digital!

3

¿Qué son los paradigmas de programación?

Hablamos de Prolog que es un lenguaje de programación, que la mayoría lo asocia directamente a un paradigma de programación lógico. ¿Pero de qué estamos hablando cuando hablamos de paradigmas de programación? Un paradigma de programación es una filosofía o un estilo para construir programas. Piensa en ello como una forma de pensar sobre cómo resolver un problema.

Así como en la pintura existen diferentes estilos (realismo, impresionismo, etc.), en programación existen varios paradigmas. Los dos grandes grupos son:

Paradigmas Imperativos

Aquí le dices a la computadora "cómo hacer algo", paso a paso.

  • Programación procedural: Una secuencia de procedimientos o subrutinas. Es el enfoque más tradicional.
  • Programación orientada a objetos (POO): Organizas el código en "objetos" que contienen datos y acciones.

Paradigmas Declarativos

Aquí le dices a la computadora "qué hacer", sin especificar el cómo.

  • Programación lógica: Como en Prolog, defines hechos y reglas para que el programa deduzca una solución.
  • Programación funcional: Se basa en funciones matemáticas, muy popular para problemas complejos.

💭 Reflexión: La definición clásica de programa se centra en el paradigma imperativo y lo trata como si fuera la única forma de programar. Pero como vimos, hay otras formas de pensar un programa.

4

¿Cuál es una mejor definición?

Un programa es la representación de conocimiento ejecutable sobre un dominio de interés

Vamos a pensar en un programa como la representación de conocimiento sobre un dominio de interés, que es ejecutable por una computadora.

Analicemos esto por partes:

Representación de conocimiento: El programa es un modelo. Es nuestra forma de "traducir" la realidad a un lenguaje que la computadora pueda entender.
Dominio de interés: Es el tema o área sobre la que estamos trabajando.
  • 🏪 Dominio de negocio: Sistema para supermercado (productos, ventas, clientes)
  • 🎯 Dominio de problema: App para resolver Sudokus (lógica del juego)
Ejecutable: Una computadora puede "leer" y "correr" este modelo para obtener un resultado.

🎯 ¿Por qué es mejor? Esta definición es mucho más amplia y útil, porque nos muestra que un programa no es solo código técnico, ¡también es una expresión de ideas y de nuestra compleja realidad!

Lenguaje vs. Paradigma: No son lo mismo

Un lenguaje de programación (como JavaScript, Python o C++) es la herramienta que usamos para escribir el programa. El paradigma es la filosofía o estilo.

La confusión surge porque muchos lenguajes están asociados con un paradigma:

🐍
Python y Java
Orientación a objetos
🧮
Haskell
Programación funcional
🧠
Prolog
Programación lógica

🚀 Tip importante: Muchos lenguajes modernos son multiparadigma. JavaScript es el mejor ejemplo: puedes escribir código imperativo, orientado a objetos y funcional, todo en el mismo lenguaje.

Esto te da libertad de elegir la mejor herramienta para el problema y explorar diferentes formas de pensar sin cambiar de lenguaje constantemente.

5

El proceso de Programar: Más que escribir código

Si un programa es el producto, entonces programar es el proceso de crearlo. Pero este proceso no es lineal.

Programar es un proceso de aprendizaje continuo

Como programadores, no llegamos sabiendo todo sobre el dominio de interés. Nuestro trabajo es:

1
Escuchar y observar: Hablar con las personas que entienden el negocio (dueños, empleados, clientes).
2
Aprender: Entender las reglas, los procesos y las necesidades del dominio.
3
Representar: Convertir todo ese conocimiento en un programa que la computadora pueda ejecutar.

🔄 Proceso continuo: Este proceso nunca termina. Los negocios evolucionan, las leyes cambian, la tecnología avanza. Casi siempre trabajarás en un programa que ya existe y tu tarea será adaptarlo y mejorarlo.

🛠️ Habilidades clave: Programar no solo requiere habilidades técnicas, también necesitas ser un buen observador y comunicador. Eres un solucionador de problemas, y para resolverlos, primero debes entenderlos.

6

Resumen para llevar a casa

¿Qué es un programa?

Una representación ejecutable del conocimiento sobre un dominio de interés, no solo una lista de instrucciones.

¿Qué es programar?

Un proceso de aprendizaje constante donde observamos, entendemos y traducimos problemas a soluciones ejecutables.

Programación profesional

Un oficio que combina habilidades técnicas con la capacidad de entender y colaborar en un mundo dinámico.

📚

¿Terminaste de leer?

Marca este tutorial como completado para llevar un seguimiento de tu progreso en el roadmap.