¿Se han realizado estudios sobre la efectividad de OOP en la gestión de la complejidad del software? [cerrado]

14

A menudo, la OOP se considera una estrategia eficaz para gestionar la complejidad del software, en oposición a la programación de procedimientos que no son de la OOP.

¿Ha habido algún estudio que pruebe esta noción? ¿Está comprobado que OOP a menudo ayuda a gestionar la complejidad en grandes proyectos?

Aviv Cohn
fuente
44
A pesar de ser muy interesante, en mi humilde opinión, medir la "complejidad" y la "efectividad" de los paradigmas es una tarea difícil y propensa a sesgos. Cada programa es único, cada desarrollador es único y es difícil de comparar. Además, la productividad depende de algo más que un paradigma, sino de las herramientas, el ecosistema y el material de aprendizaje. Un estudio imparcial debería permitir que grupos enteros de estudiantes programen los mismos requisitos con cualquier idioma y vean los resultados. Sin embargo, incluso es probable que tengan conocimientos previos que lo hagan sesgado. No conozco ninguno de esos estudios.
Dagnelies
No estudios, pero algunos comentarios académicos: en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Den
1
Esta es una pregunta un poco difícil porque la POO, tal como se practica en la industria, tiende a ser muy imprescindible. Así que pasamos de los procedimientos que tocan a los globales a los métodos que modifican objetos que modifican otros objetos que modifican otros objetos; Los efectos secundarios son algo más explícitos, pero todavía hay mucha acción a distancia. Por otro lado, cuando minimiza los efectos secundarios y hace que las cosas sean inmutables, algunos argumentan que está haciendo una programación funcional.
Doval
2
No hay forma de medirlo genuinamente: es un efecto cuántico donde medirlo influye en el resultado.
DeadMG
1
Para hacer una comparación, uno debe tener un paradigma alternativo que sea aplicable a sistemas de programación muy grandes, construidos por programadores de habilidades ordinarias (es decir, no por un equipo de expertos o académicos de vanguardia). Los sistemas grandes tienden a involucrar redes, bases de datos, equilibrio de carga y redundancia (es decir, máquinas poco confiables), entre otras cosas. La última lista de cuestiones domina cualquier debate que uno pueda tener para paradigmas de lenguaje de programación.
rwong

Respuestas:

10

No conozco ningún estudio con mediciones cuantificables. Como otros han mencionado en los comentarios a su pregunta, es prácticamente imposible lograrlo. Sin embargo, hay documentos algo filosóficos que intentan responder a eso.

Mi artículo favorito sobre ese tema es Out of the Tar Pit por Ben Moseley y Peter Marks . Razona con varias declaraciones de fuentes respetables sobre el diseño de sistemas complejos con resultados bastante interesantes.

Out of the Tar Pit concluye que la programación de funciones es en realidad el mejor paradigma para soportar las soluciones que proponen. Lo que tiene sentido, porque en mi experiencia, los sistemas OOP complejos se vuelven muy cercanos a los procedimientos con el tiempo y los procedimientos comienzan a parecerse a OOP (no tienen una sintaxis y otros atributos, pero un flujo de ejecución puede ser bastante similar). La verdadera diferencia viene con un paradigma diferente o al combinarlo con OOP. Por el momento, dicho paradigma es la programación funcional que finalmente se está volviendo utilizable en aplicaciones comerciales comunes por programadores comunes (aún llegando).

frzng
fuente
5

Sí, ha habido algunos estudios. Aquí hay uno: http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

Básicamente, concluye que no hay una diferencia medible entre la productividad del código de procedimiento y la productividad del lenguaje OO ... pero la verdad es que este tipo de preguntas son tan sensibles al contexto que ningún estudio le dirá qué debe hacer en una situación dada .

Calphool
fuente
Durante mucho tiempo hubo estudios que demostraron que la introducción de computadoras de escritorio en un entorno de oficina no conducía a una mayor productividad.
@nocomprende ¿tiene alguna razón para creer que esos estudios llegaron a una conclusión incorrecta? Una PC de 1989 utilizada por el empleado de oficina promedio en 1989 es completamente diferente de una máquina moderna utilizada por un trabajador moderno. Del mismo modo, la aplicación de la tecnología de objetos puede o no mejorar con el tiempo.
Jørgen Fogh
1
@ JørgenFogh Creo que estaba de acuerdo con la afirmación de que los estudios no siempre muestran lo que parece ser de sentido común. Las empresas no habrían comenzado a usar computadoras en las oficinas si empeoraran las cosas. La gente no hubiera pasado décadas desarrollando el enfoque OO si no hubiera ayudado. ¿Lo harían ellos? Bueno, la gente puede estar equivocada, pero ¿cómo se demuestra de manera concluyente de una forma u otra? Todo se reduce a: "¿Funciona esto para usted ?"