Wurden Studien zur Wirksamkeit von OOP bei der Verwaltung der Softwarekomplexität durchgeführt? [geschlossen]

14

OOP wird oft als eine effektive Strategie zur Verwaltung der Komplexität von Software angesehen, im Gegensatz zur prozeduralen Programmierung ohne OOP.

Gab es Studien, die diese Vorstellung testeten? Ist es bewiesen, dass OOP bei großen Projekten oft hilft, die Komplexität zu managen?

Aviv Cohn
quelle
4
Trotz des großen Interesses ist die Messung der "Komplexität" und "Wirksamkeit" von Paradigmen meiner Meinung nach ein schwieriges und tendenzielles Unterfangen. Jedes Programm ist einzigartig, jeder Entwickler ist einzigartig und schwer zu vergleichen. Darüber hinaus hängt die Produktivität nicht nur von einem Paradigma ab, sondern auch von den Tools, dem Ökosystem und dem Lernmaterial. Eine unvoreingenommene Studie sollte es ganzen Studentengruppen ermöglichen, mit beiden Sprachen die gleichen Anforderungen zu programmieren und die Ergebnisse zu sehen. Es ist jedoch wahrscheinlich, dass auch sie über Vorkenntnisse verfügen, die eine Verzerrung bewirken. Ich kenne keine derartigen Studien.
dagnelies
Keine Studien, aber ein akademischer Schrei: en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Den
1
Dies ist eine trickreiche Frage, da die in der Branche praktizierte OOP in der Regel sehr wichtig ist. Wir sind also von Prozeduren, die globale Elemente berühren, zu Methoden übergegangen, die Objekte ändern, die andere Objekte ändern, die andere Objekte ändern. Die Nebenwirkungen sind etwas deutlicher, aber auf Distanz ist immer noch viel los. Wenn Sie andererseits Nebenwirkungen minimieren und Dinge unveränderlich machen, argumentieren einige, dass Sie eine funktionale Programmierung durchführen.
Doval
2
Es gibt keine Möglichkeit, es wirklich zu messen - es ist ein Quanteneffekt, bei dem das Messen das Ergebnis beeinflusst.
DeadMG
1
Um einen Vergleich anzustellen, muss man ein alternatives Paradigma haben, das auf sehr große Programmiersysteme anwendbar ist, die von Programmierern mit normalen Fähigkeiten (dh nicht von einem Expertenteam oder hochmodernen Akademikern) erstellt wurden. Große Systeme umfassen unter anderem Netzwerke, Datenbanken, Lastenausgleich und Redundanz (dh unzuverlässige Maschinen). Die letztgenannte Liste von Themen dominiert alle Debatten, die man über Paradigmen für Programmiersprachen führen kann.
Rwong

Antworten:

10

Mir ist keine Studie mit quantifizierbaren Messwerten bekannt. Wie andere in den Kommentaren zu Ihrer Frage erwähnt haben, ist es praktisch unmöglich, dies zu erreichen. Es gibt jedoch etwas philosophische Papiere, die versuchen, das zu beantworten.

Mein Lieblingsartikel zu diesem Thema ist Out of the Tar Pit von Ben Moseley & Peter Marks . Dies begründet sich mit verschiedenen Aussagen aus seriösen Quellen zum komplexen Systemdesign zu durchaus interessanten Ergebnissen.

Out of the Tar Pit kommt zu dem Schluss, dass die Funktionsprogrammierung tatsächlich das beste Paradigma ist, um die von ihnen vorgeschlagenen Lösungen zu unterstützen. Dies ist sinnvoll, da komplexe OOP-Systeme nach meiner Erfahrung im Laufe der Zeit sehr nahe an der Prozedur liegen und die Prozedur wie OOP aussieht (sie haben keine Syntax und keine anderen Attribute, aber ein Ausführungsablauf kann sich durchaus ähneln). Der wahre Unterschied liegt in einem anderen Paradigma oder in der Kombination mit OOP. Im Moment ist ein solches Paradigma die funktionale Programmierung, die von den üblichen Programmierern (die immer noch da sind) endlich in den üblichen Geschäftsanwendungen verwendet werden kann.

frzng
quelle
5

Ja, es gab einige Studien. Hier ist eine: http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

Grundsätzlich wird der Schluss gezogen, dass es keinen messbaren Unterschied zwischen der Produktivität des prozeduralen Codes und der Produktivität der OO-Sprache gibt. Die Wahrheit ist jedoch, dass diese Art von Fragen so kontextsensitiv sind, dass keine Studie Ihnen sagen wird, was Sie in einer bestimmten Situation tun sollten .

Calphool
quelle
Lange Zeit gab es Studien, die zeigten, dass die Einführung von Desktop-Computern in einer Büroumgebung nicht zu einer Produktivitätssteigerung führte.
@nocomprende hast du Grund zu der Annahme, dass diese Studien die falsche Schlussfolgerung gezogen haben? Ein PC aus dem Jahr 1989, der von einem durchschnittlichen Büroangestellten im Jahr 1989 verwendet wurde, unterscheidet sich grundlegend von einer modernen Maschine, die von einem modernen Arbeiter verwendet wird. Ebenso kann sich die Anwendung der Objekttechnologie im Laufe der Zeit verbessern oder auch nicht.
Jørgen Fogh
1
@ JørgenFogh Ich schätze, ich stimme der Aussage zu, dass Studien nicht immer zeigen, was gesunder Menschenverstand zu sein scheint. Unternehmen hätten nicht begonnen, Computer in Büros zu verwenden, wenn sie die Situation verschlimmert hätten. Die Menschen hätten nicht Jahrzehnte damit verbracht, den OO-Ansatz zu entwickeln, wenn er nicht geholfen hätte. Würden Sie? Nun, die Leute können sich irren, aber wie beweist man es schlüssig auf die eine oder andere Weise? Worauf es ankommt ist: "Funktioniert das für Sie ?"