Parte 7 — Paradigmas

⏮️ Parte 6 · ⬅️ Programa · 📚 Índice · ⏭️ Parte 8

16 clases · rango 107–122 · clases de código · nivel intermedio · ~40 h (cronograma)

🧭 Los ocho estilos de resolver: qué considera cada paradigma una pieza legítima de solución.


🧭 De qué trata esta parte

Un paradigma no es una sintaxis: es un marco mental que decide cómo se descompone un problema y qué cuenta como pieza válida de la solución. Por eso el mismo problema resuelto en dos paradigmas no se parece ni en la forma ni en el vocabulario, aunque produzca la misma salida — que es justo lo que el verificador de equivalencia demuestra en cada clase.

La parte recorre imperativo y estructurado, procedimental, orientado a objetos (con su variante de prototipos, que JavaScript usa por debajo), funcional en tres escalones, declarativo, lógico, orientado a eventos, reactivo, concurrente y asíncrono. Ninguno se presenta como superior: cada uno se explica por el problema que vino a resolver y por el que crea.

Es la parte donde el curso rentabiliza toda su estructura comparada: ver la misma tarea como objetos, como composición de funciones puras y como consulta declarativa es lo que convierte los paradigmas en herramientas elegibles en vez de en banderas.

🎒 Qué necesitas traer

Las Partes 5 y 6. Funciones de primera clase (085), cierres (083), pureza (084) y registros (099) son requisito; sin ellos lo funcional y lo OO quedan en eslóganes.

🎯 Qué sabrás hacer al terminar

Resultados comprobables: si no puedes hacerlos, la parte no está cerrada.

  1. Identificar el paradigma dominante de un fragmento de código ajeno y sus consecuencias.
  2. Sustituir un condicional por polimorfismo, y saber cuándo no conviene hacerlo.
  3. Explicar la orientación a objetos por prototipos de JavaScript sin recurrir a la analogía de clases.
  4. Componer funciones y aplicar currying para fabricar funciones nuevas en vez de duplicarlas.
  5. Escribir la misma transformación en versión imperativa, funcional y declarativa (SQL).
  6. Distinguir concurrencia de asincronía y elegir el modelo adecuado a un problema real.

🗺️ El recorrido, clase a clase

Las clases están agrupadas en bloques por la razón que las une. El orden es secuencial: cada una asume la anterior.

🔹 Qué es un paradigma · clase 107

La clase que da el criterio con el que se leen las quince siguientes.

🔹 Imperativo y sus herederos · clases 108–109

El estilo más antiguo y su evolución hacia el orden: estructurado, procedimental y modular.

🔹 Orientación a objetos · clases 110–113

Estado encapsulado, polimorfismo, interfaces y el modelo de prototipos de JavaScript.

🔹 Funcional · clases 114–116

Inmutabilidad y pureza, composición y currying, y los patrones para encadenar efectos.

🔹 Declarativo y lógico · clases 117–118

Describir el qué en vez del cómo: SQL y el motor de inferencia de Prolog.

🔹 Eventos, flujos y concurrencia · clases 119–122

Cuando el control se invierte: callbacks, streams, hilos y async/await.

⚠️ Los malentendidos que esta parte corrige

Se suele creer Lo que ocurre en realidad
«La programación funcional es usar map y lambdas.» Empieza por una decisión sobre el estado, no por una sintaxis. Se puede escribir código imperativo lleno de lambdas.
«JavaScript tiene clases desde ES6.» Tiene azúcar sintáctico sobre prototipos. La diferencia se nota en cuanto inspeccionas la cadena de prototipos.
«Concurrente y asíncrono son sinónimos.» La concurrencia reparte trabajo entre líneas de ejecución; la asincronía evita esperar bloqueado, a menudo en un solo hilo.

🧪 Cómo estudiar esta parte

  1. Lee el modelo y el pseudocódigo primero. Si entiendes el algoritmo neutral, las diez implementaciones son diez traducciones, no diez problemas.
  2. Lee las diez implementaciones, no solo la de tu lenguaje. El aprendizaje está en el contraste: ahí se distingue lo esencial del accidente sintáctico.
  3. Ejecuta el verificador (python scripts/verificar_equivalencia.py NNN) y comprueba tú mismo que coinciden. Fuerza después un caso límite y observa quién se rompe primero.
  4. Lee primos.md para ver el mismo programa en la familia de cada lenguaje: es donde el concepto deja de estar atado a diez nombres concretos.
  5. Haz el reto de transferencia. Portarlo a un lenguaje que no dominas es la única prueba real de que aprendiste el concepto y no la sintaxis.

📚 Fuentes de referencia de esta parte

Cada clase cita estos libros en su sección de referencias. No se reproduce su contenido: la redacción es original.

🔗 Qué abre esta parte

Vistos los estilos, la Parte 8 baja al nivel que los explica: qué hace realmente la máquina con tu código.


⏮️ Parte 6 · ⬅️ Programa · 📚 Índice · ⏭️ Parte 8