En primer lugar, tenga en cuenta que muchos de los lenguajes de programación que se utilizan actualmente (especialmente los "lenguajes de nivel superior") son de paradigma múltiple . Eso significa que nunca está creando programas que sean puramente OOP (excepto si usa Smalltalk o Eiffel para construir sus grandes proyectos, tal vez).
Eche un vistazo a PHP, por ejemplo:
- Tiene muchos elementos de programación orientada a objetos (desde la versión 5)
- Antes era mayoritariamente procedimental
- Tiene elementos de programación declarativa (por ejemplo, las funciones de matriz)
- Implementó muchos elementos de programación funcional (desde la versión 5.4)
Básicamente, PHP está uniendo muchos paradigmas diferentes (y es un "lenguaje adhesivo" en sí mismo).
También Java implementa muchos conceptos que no son del paradigma Orientado a Objetos (por ejemplo, de programación funcional).
Eche un vistazo a la lista de lenguajes de programación por tipo en Wikipedia: https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Imperative_languages (no es 100% exacto).
Programación funcional (subconjunto de programación declerativa)
- Wideley utilizado en la práctica (pasó a formar parte de lenguajes pegados como PHP , también Java y muchos otros han implementado conceptos de programación funcional)
- Muchas ideas se originan en LISP que definitivamente vale la pena echarle un vistazo.
- Puede crear aplicaciones completas, por ejemplo, con Haskell, por lo que puede "reemplazar" OOP
Programación procedimental
- C (como lenguaje mayoritariamente procedimental) sigue siendo uno de los lenguajes más utilizados
- Muchos lenguajes de pegamento modernos eran procedimentales al principio
- Aún así, muchos programas son principalmente de procedimiento (por lo que si lo desea, puede "reemplazar" OOP)
Programación lógica
- El ejemplo más destacado es Prolog. Se utiliza para tareas específicas que se benefician de consultas lógicas basadas en reglas.
- No puede "reemplazar" la programación orientada a objetos en términos de construcción de un gran proyecto, pero puede reemplazarlo en otros términos
Lenguajes declarativos / específicos de dominio en general
- ¿Utiliza SQL en sus proyectos? Entonces no son puramente POO, SQL es esencialmente declarativo.
- Muchos lenguajes específicos de dominio (como CSS) son declarativos
Programación imperativa en general
Esta lista no está completa, solo dará una idea. Solo tenga en cuenta que, por lo general, está utilizando muchos paradigmas diferentes al escribir una gran aplicación e incluso cada lenguaje que está utilizando está implementando múltiples paradigmas.
La programación orientada a objetos generalmente se considera una buena opción para estructurar relaciones grandes y complejas al modelar datos. No siempre es el paradigma a seguir para muchas otras tareas.