Sin embargo, últimamente el mundo del software parece inclinarse a favor de otros paradigmas como la programación funcional.
Eso es discutible. Primero, no veo otros paradigmas además de OOP y la programación funcional que se discuten de manera amplia, así que supongo que podemos olvidar la frase "otros paradigmas como" , hablemos de FP, nada más.
Las razones por las que la programación funcional se hizo tan popular en los últimos años se discutieron en otras preguntas aquí en profundidad, no voy a repetir esto (ver aquí o aquí , por ejemplo). Pero, en mi opinión, esto no se debe a que "OOP fue un gran error", o "Funcional vs. OOP son mutuamente excluyentes", es más como personas que extienden su caja de herramientas e intentan obtener lo mejor de ambos mundos. Ok, seguramente hay expertos que son intransigentes que favorecen a uno sobre el otro, pero encontrarás a esos tipos en ambos lados.
Me hace pensar, ¿qué pasa con la encapsulación y otros principios OOP? ¿Están equivocados?
La encapsulación tiene muchos sabores diferentes. Los lenguajes de programación funcional y las construcciones de lenguaje proporcionan ciertas formas de encapsulación, otras orientadas a objetos. Si está buscando ejemplos de encapsulación con medios funcionales, comience con cierres .
Con respecto a "otros principios": no, no están equivocados, pero para ciertos escenarios como la paralelización a gran escala, los enfoques funcionales probablemente escalan mejor. Para otros escenarios, como la creación de marcos de interfaz de usuario bien diseñados, los enfoques OOP escalan probablemente mejor (YMMV, no solo tengo un mejor ejemplo a la mano). Además, estoy seguro de que para la mayoría de los escenarios del mundo real depende del conocimiento y la experiencia del equipo con su paradigma de programación favorito qué tan bien escalará cierto sistema.
¿Es que la POO se aplica mal? Por ejemplo, Alan Kay se destaca por decir en la nota clave de OOPSLA'97: "Inventé el término orientado a objetos, y puedo decirte que no tenía C ++ en mente".
Seguramente, muchas personas aplican incorrectamente la POO, pero estoy seguro de que lo mismo es cierto para FP. Y me sorprendería que John Mc Carthy (diseñador de Lisp) tuviera en mente algo como Javascript cuando pensaba en la programación funcional (piedad de mí, no me llame demasiado para esa comparación ;-)
Joe Armstrong - "Los objetos unen funciones y estructuras de datos en unidades indivisibles. Creo que este es un error fundamental ya que las funciones y las estructuras de datos pertenecen a mundos totalmente diferentes".
Supongo que el inventor de Erlang tiene algunos buenos argumentos, pero también tiene su propio punto de vista, así que déle su opinión y cree la suya. Hay muchos otros expertos que tienen una idea diferente de esto.