- Paradigma Imperativo
- Paradigma Declarativo (Funcional)
- Diferencias entre Imperativo y Declarativo
- Otros Paradigmas
- Resumen
Un paradigma de programación es una forma de pensar y escribir código. Es como un estilo de programación que define cómo organizamos y resolvemos problemas con una computadora.
No es solo otro algoritmo, sino una manera diferente de abordar los problemas.
Dependiendo del paradigma, el código puede verse muy distinto. Algunos enfoques son más avanzados y requieren conocimientos extra (por ejemplo, la programación con autómatas necesita entender teoría de autómatas).
La mayoría de los lenguajes modernos permiten usar varios paradigmas al mismo tiempo. Esto significa que puedes escribir código en diferentes estilos dentro del mismo programa.
Hasta ahora, hemos trabajado con dos paradigmas principales:
- Paradigma imperativo
- Paradigma declarativo (o funcional)
Paradigma Imperativo
La programación imperativa consiste en escribir código como una secuencia de instrucciones, utilizando variables y ciclos.
# Encontrar el número máximo en una lista
numbers = [10, 20, 52, 105, 56, 89, 96]
max_num = numbers[0]
for number in numbers:
if number > max_num:
max_num = number
print(max_num) # => 105
Características:
- Usa asignaciones y variables mutables.
- Usa bucles (
for,while) para iterar. - Se enfoca en cómo lograr el resultado.
Lenguajes con fuerte influencia imperativa: Python, Java, JavaScript, C#, PHP, Ruby, Go.
✅ Ventaja: Fácil de entender y se alinea con la forma en que funciona el hardware.
❌ Desventaja: Puede ser difícil de escalar y mantener debido a la mutabilidad de los datos.
Paradigma Declarativo (Funcional)
El paradigma declarativo describe el qué queremos obtener en lugar de cómo hacerlo. A menudo se le asocia con la programación funcional.
⏬ Ejemplo en Python usando reduce():
# Encontrar el número máximo en una lista
from functools import reduce
numbers = [10, 20, 52, 105, 56, 89, 96]
max_num = reduce(lambda acc, number: number if number > acc else acc, numbers)
print(max_num) # => 105
Características:
- Se enfoca en describir el resultado, no en los pasos.
- Evita asignaciones mutables.
- Usa funciones puras y evita estados globales.
Lenguajes funcionales puros: _Haskell, Erlang, Elixir, OCaml, F#.
Lenguajes híbridos con fuerte soporte funcional: Scala, Clojure, Python, JavaScript.
✅ Ventaja: Código más claro, predecible y fácil de probar.
❌ Desventaja: Puede ser más difícil de aprender para quienes vienen de un enfoque imperativo.
Diferencias entre Imperativo y Declarativo
| Característica | Imperativo | Declarativo |
|---|---|---|
| Enfoque* | Explica cómo lograr el resultado | Explica qué resultado obtener |
| Uso de variables | Variables mutables, asignaciones constantes | Variables inmutables, sin asignaciones |
| Uso de bucles | Usa for y while |
Usa recursión o funciones de orden superior (map, filter, reduce) |
| Ejemplo de uso | Algoritmos iterativos, manipulación de memoria | Expresiones matemáticas, procesamiento de datos |
Muchos lenguajes admiten ambos enfoques, aunque suelen priorizar uno sobre el otro.
Otros Paradigmas
Además de la programación imperativa y declarativa, existen otros paradigmas importantes:
| Paradigma | Descripción |
|---|---|
| Programación lógica | Basada en reglas y hechos (Ej: Prolog). |
| Programación con autómatas | Usa máquinas de estado finito, útil en sistemas embebidos. |
| Programación orientada a objetos (OOP) | Modelo basado en objetos con propiedades y métodos (Python, Java, C#). |
| Metaprogramación | Código que genera o modifica código en tiempo de ejecución (frameworks en Lisp, metaclases en Python). |
Cada paradigma tiene su propio campo de aplicación y se pueden combinar dentro de un mismo proyecto.
Resumen
- La mayoría de los lenguajes modernos permiten programar en más de un paradigma.
- El paradigma imperativo es más intuitivo y se basa en instrucciones secuenciales.
- El paradigma declarativo se enfoca en lo que queremos obtener, evitando estados mutables.
- Otros paradigmas como OOP, programación lógica y metaprogramación tienen usos específicos.
Saber cuándo y cómo aplicar cada paradigma mejora la calidad del código.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.