Paradigmas Fundamentales de Programación
Un paradigma de programación es un enfoque, modelo mental o estilo fundamental que guía la forma en que los programadores estructuran, razonan y escriben el código para resolver un problema.
No se trata de qué lenguaje de programación utilizamos, sino de cómo pensamos y organizamos las instrucciones y los datos. La mayoría de los lenguajes modernos son multiparadigma, lo que significa que permiten combinar diferentes enfoques según el caso de uso.
1. La Gran División: Imperativo frente a Declarativo #
1PARADIGMAS DE PROGRAMACIÓN 2 │ 3 ┌───────────────────────┴───────────────────────┐ 4 ▼ ▼ 5 ENFOQUE IMPERATIVO ("CÓMO") ENFOQUE DECLARATIVO ("QUÉ") 6 (Instrucciones paso a paso y (Describe el resultado deseado 7 mutación de variables de estado) sin controlar el bucle manual) 8 ┌──────────┴──────────┐ ┌──────────┴──────────┐ 9 ▼ ▼ ▼ ▼ 10 PROCEDIMENTAL ORIENTADO A OBJETOS FUNCIONAL DECLARATIVO / SQL 11 (C, Pascal) (Java, C++, C#) (Haskell, Clojure) (SQL, HTML)
2. Los Cuatro Paradigmas Principales #
Paradigma Imperativo y Procedimental #
- Filosofía: El programa es una secuencia cronológica de órdenes e instrucciones que cambian el estado de las variables en memoria paso a paso ("primero haz esto, luego evalúa aquello, después incrementa el contador").
- Conceptos clave: Bucles (
for,while), condicionales (if/else), funciones y procedimientos con variables mutables. - Lenguajes representativos: C, Pascal, Fortran, Go.
Paradigma Orientado a Objetos (POO) #
- Filosofía: El sistema se modela como un conjunto de objetos autónomos que colaboran entre sí enviándose mensajes. Cada objeto agrupa sus propios datos internos (estado) y las funciones que operan sobre ellos (comportamiento).
- Los Cuatro Pilares de la POO:
- Encapsulación: Ocultar el estado interno protegiendo los atributos privados.
- Abstracción: Exponer únicamente las operaciones esenciales mediante interfaces públicas.
- Herencia: Reutilizar y extender atributos y métodos de una clase base hacia clases hijas.
- Polimorfismo: Tratar diferentes objetos derivados bajo una interfaz común respondiendo con comportamientos específicos.
- Lenguajes representativos: Java, C++, C#, Smalltalk, Python.
Paradigma Funcional #
- Filosofía: El programa se concibe como una composición matemática de funciones puras. Se prohíbe la mutación de estado (Inmutabilidad) y los efectos secundarios imprevistos.
- Conceptos clave:
- Funciones de Primer Orden (First-Class Functions): Las funciones pueden guardarse en variables, pasarse como argumentos o retornarse desde otras funciones.
- Funciones Puras: Para las mismas entradas, la función siempre produce exactamente la misma salida sin alterar variables globales ni hacer I/O oculta.
- Transformación Declarativa: Uso intensivo de
map,filter,reducey recursividad en lugar de buclesforcon variables mutables.
- Lenguajes representativos: Haskell, Lisp, Elixir, Erlang, F#, JavaScript/TypeScript funcional.
Paradigma Declarativo y Basado en Reglas #
- Filosofía: Se especifica qué datos o resultado se desea obtener, delegando en el motor del sistema la optimización y la ejecución del algoritmo de búsqueda interno ("Qué queremos, no cómo buscarlo").
- Ejemplos clásicos:
- SQL:
SELECT nombre, salario FROM empleados WHERE departamento = 'IT' AND salario > 3000; - HTML / CSS: Describe la estructura y diseño visual de la interfaz.
- Prolog / Programación Lógica: Conjuntos de hechos y reglas lógicas evaluadas por un motor de inferencia.
- SQL:
3. Comparativa Práctica: Filtrar y Duplicar Números Pares #
Cargando actividad al acercarte…
Resumen del tema
Conceptos clave #
- Imperativo vs Declarativo: el imperativo detalla el flujo de control y las mutaciones de memoria paso a paso; el declarativo describe la meta deseada.
- Procedimental: estructuración modular en funciones y bloques condicionales.
- POO: encapsula estado y comportamiento en clases y objetos con herencia y polimorfismo.
- Funcional: funciones puras, inmutabilidad y transformaciones declarativas (
map,filter,reduce). - Multiparadigma: los lenguajes contemporáneos permiten combinar lo mejor de la POO con técnicas funcionales para escribir software más limpio y mantenible.
Qué debes recordar #
Dominar los diferentes paradigmas te permite elegir el enfoque mental más simple y natural para cada tipo de problema computacional.