OOP es probablemente el paradigma de programación más utilizado en el diseño de software actual. Mi pregunta es: ¿qué otros paradigmas pueden competir con él y reemplazar a la POO ? Para aclarar esa pregunta, no estoy preguntando qué otros paradigmas existen. Hay muchos, pero me gustaría saber cuál ...
- Se ha utilizado en la práctica, no solo en teoría.
- Puede competir con OOP , por lo que se puede utilizar en un gran proyecto con un mínimo de dolor.
- Se puede utilizar para desarrollar una aplicación de escritorio con lógica empresarial, bases de datos, etc.
- No se usa junto con OOP, sino como reemplazo de OOP.
Y si hay alguno, cuáles son sus pros / contras, por qué es mejor / peor que OOP, qué lenguajes son los mejores para usarlo, qué hay de usarlo en lenguajes populares, tiene algún patrón de diseño y puede reemplazar totalmente OOP?
language-agnostic
oop
programming-languages
paradigms
Dariusz Woźniak
fuente
fuente
Respuestas:
La programación funcional es otro paradigma de programación que es popular, principalmente entre los académicos. El mejor ejemplo de un lenguaje de programación funcional es Haskell y Standard ML .
La diferencia fundamental entre la programación funcional y la programación orientada a objetos es que está programando en el sentido de flujo de datos en lugar de flujo de control . Vea la presentación Efectos de domesticación con programación funcional de Simon Peyton-Jones para una buena introducción.
Un buen ejemplo de programación funcional utilizada en la industria es Erlang . Se utiliza principalmente en telecomunicaciones, sistemas distribuidos y tolerantes a fallas. Vea la presentación Erlang - Software para un mundo concurrente de Joe Armstrong .
También hay lenguajes de programación funcional más nuevos que combinan la programación funcional con OOP. Dos buenos ejemplos son F # para la plataforma .NET y Scala para la plataforma Java; a menudo pueden usar bibliotecas existentes en la plataforma escritas en otros idiomas.
La tendencia de los nuevos lenguajes de programación ahora es Multi-paradigma , donde múltiples paradigmas como la programación orientada a objetos y la programación funcional se combinan en el mismo lenguaje.
fuente
El procesamiento procedimental lo era todo antes de que apareciera la POO, ha producido algunas grandes aplicaciones del mundo real (de hecho, la mayoría de ellas originalmente) y muchos sistemas operativos.
Sin duda, se puede utilizar en productos a gran escala con un mínimo de dolor y un máximo de rendimiento.
fuente
El modelado de datos relacionales vectoriales se utiliza para crear modelos de información ejecutables con semántica relevante para el dominio dentro de la Arquitectura de red de información global, un intermediario de modelos residente en la red.
fuente
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:
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)
Programación procedimental
Programación lógica
Lenguajes declarativos / específicos de dominio en general
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.
fuente
FP - Programación funcional es un paradigma de programación extremadamente popular que ha existido durante mucho tiempo y, en años más recientes, ha comenzado a ser cada vez más prominente. FP favorece la inmutabilidad sobre la mutabilidad, recursividad y funciones sin efectos secundarios. Algunos ejemplos de lenguajes fp populares son Erlang, Scala, F #, Haskell y Lisp (entre otros).
fuente
Actualmente, no existen paradigmas que realmente puedan reemplazar la POO. El problema con (beneficio de) OOP es que hace una gran cantidad de trabajo por usted: libera recursos automáticamente, valida datos, etc., y facilita la validación del código, sin mencionar que la gran mayoría de las bibliotecas existentes en el mundo están escritos en un lenguaje de programación orientada a objetos como C ++, C # o Java. La realidad de arreglárselas sin bibliotecas a gran escala y tal es sumamente dudosa.
En mundos especializados o académicos, encontrará una gran cantidad de Programación funcional. Sin embargo, si realmente desea hacer un proyecto grande, la programación orientada a objetos es el único camino a seguir.
Creo que la programación genérica va a surgir como un nuevo paradigma. Sin embargo, todavía está en la fase de desarrollo y solo C ++ / D ofrece una programación genérica realmente buena.
fuente