-
Surge con las primeras computadoras programables. Las instrucciones controlaban directamente el hardware, se caracteriza por programas como secuencias de comandos que cambian el estado de la memoria y el uso intensivo de variables y saltos condicionales (goto).
-
Reacción a los problemas de mantenimiento de los programas imperativos con (goto), introducción de estructuras de control (if, while, for) y bloques lógicos. Mejora de la legibilidad, mantenibilidad y depuración.
-
Necesidad de modelar sistemas complejos y reutilizar código, Basado en objetos, que encapsulan datos (atributos) y comportamiento (métodos).
Principios: herencia, polimorfismo, encapsulamiento, abstracción. -
Inspirado en matemáticas y cálculo lambda; busca evitar errores comunes del estado mutable.
Lenguajes clave:
Lisp (1958): Uno de los más antiguos; base para IA.
Scheme (1975), ML (1973): Evolución de ideas funcionales.
Haskell (1990): Puramente funcional, con fuerte sistema de tipos. -
Enfocado en el "qué hacer", no en el "cómo hacerlo".
Programación basada en hechos, reglas y consultas, Uso común en inteligencia artificial y resolución de problemas. -
La complejidad del software requería combinar enfoques. Soporte para varios paradigmas (imperativo, OOP, funcional).
Flexibilidad para distintos estilos según el problema. Dominan el desarrollo moderno por su versatilidad. -
Aplicaciones distribuidas, móviles y en tiempo real necesitan manejar múltiples tareas simultáneas.
Lenguajes clave:
Elixir: Concurrencia basada en actores (Erlang).
Rust: Seguro y concurrente sin recolector de basura.
Go: Simplifica concurrencia con goroutines.
Kotlin: Popular en Android, con corrutinas nativas.