solutions_
💻 Programación

Paradigmas de Programación

Un paradigma es una forma de pensar y estructurar el código. La mayoría de los lenguajes modernos soportan múltiples paradigmas.

🧩 Los principales paradigmas — haz clic para expandir
🏗️
Orientado a Objetos
Object-Oriented Programming (OOP)
Organiza el código en objetos que combinan datos (atributos) y comportamiento (métodos). El paradigma más popular en la industria.
Pilares
EncapsulamientoHerencia PolimorfismoAbstracción
Lenguajes
JavaPythonC++C#PHPSwift
Ejemplo — clase en Python
class Perro: def __init__(self, nombre): self.nombre = nombre def ladrar(self): return f"{self.nombre} dice ¡Guau!" rex = Perro("Rex") print(rex.ladrar()) # Rex dice ¡Guau!
λ
Funcional
Functional Programming (FP)
Trata la computación como evaluación de funciones matemáticas. Evita el estado mutable y los efectos secundarios. Código más predecible y testeable.
Conceptos clave
Funciones purasInmutabilidad Map / Filter / ReduceComposición
Lenguajes
HaskellErlangClojureF#ScalaJS (parcial)
Ejemplo — JavaScript funcional
// Suma de cuadrados de números pares const nums = [1, 2, 3, 4, 5, 6]; const resultado = nums .filter(n => n % 2 === 0) // [2, 4, 6] .map(n => n * n) // [4, 16, 36] .reduce((acc, n) => acc + n, 0); // 56
📋
Procedural / Imperativo
Procedural Programming
Le dices al ordenador exactamente qué pasos seguir, en qué orden. El código se organiza en procedimientos/funciones que se ejecutan secuencialmente.
Conceptos clave
SecuenciaSelección (if/else) Iteración (loops)Subrutinas
Lenguajes
CPascalBASICGoBash
Ejemplo — C
int factorial(int n) { int resultado = 1; for (int i = 1; i <= n; i++) { resultado *= i; } return resultado; } // factorial(5) = 120
📣
Declarativo
Declarative Programming
Describes QUÉ quieres obtener, no CÓMO obtenerlo. El motor/intérprete decide la implementación. El opuesto al paradigma imperativo.
Conceptos clave
Qué, no CómoSin efectos secundarios Expresiones
Lenguajes / tecnologías
SQLHTML/CSSPrologXSLTRegex
Ejemplo — SQL (declarativo)
SELECT nombre, salario FROM empleados WHERE salario > 50000 ORDER BY salario DESC; -- No dices cómo buscar, solo qué quieres
Reactivo
Reactive Programming
Programación orientada a flujos de datos y propagación de cambios. La UI o el sistema reacciona automáticamente cuando los datos cambian.
Conceptos clave
Observables / StreamsSuscriptores Propagación de cambiosAsync
Frameworks / libs
RxJSReactVueSvelteRxJava
Ejemplo — RxJS
// Cada vez que el usuario escribe, busca fromEvent(input, 'input') .pipe( debounceTime(300), map(e => e.target.value), switchMap(q => buscarAPI(q)) ) .subscribe(resultados => mostrar(resultados));
📡
Basado en Eventos
Event-Driven Programming
El flujo del programa está determinado por eventos: clics, mensajes, señales de red. El código espera eventos y ejecuta manejadores (handlers) cuando ocurren.
Conceptos clave
Event LoopCallbacks Promises / Async-AwaitListeners
Entornos
Node.jsJavaScriptPython asyncioGo channels
Ejemplo — Node.js
servidor.on('request', (req, res) => { // Este código corre SOLO cuando llega una petición res.end('¡Hola mundo!'); }); boton.addEventListener('click', () => { console.log('Click detectado'); });
📊 Comparativa rápida
ParadigmaEnfoqueMutabilidadMejor para
OOPObjetos y mensajesEstado mutableApps grandes, modelado del mundo real
FuncionalFunciones y transformacionesInmutable (preferido)Data pipelines, concurrencia, finanzas
ProceduralPasos secuencialesMutableScripts, sistemas embebidos, bajo nivel
DeclarativoDescripción del resultadoN/AConsultas de datos, UI (HTML), configuración
ReactivoFlujos de datosInmutable (streams)UIs en tiempo real, aplicaciones web
Basado en eventosEventos y handlersMixtaServidores, GUIs, sistemas I/O bound