Y a-t-il eu des études sur l'efficacité de la POO dans la gestion de la complexité des logiciels? [fermé]

14

La POO est souvent considérée comme une stratégie efficace de gestion de la complexité des logiciels, par opposition à la programmation procédurale non-POO.

Y a-t-il eu des études testant cette notion? Est-il prouvé que la POO aide souvent à gérer la complexité des grands projets?

Aviv Cohn
la source
4
Malgré très intéressant, à mon humble avis, la mesure de la «complexité» et «efficacité» des paradigmes est une entreprise difficile et sujette à des biais. Chaque programme est unique, chaque développeur est unique et c'est difficile à comparer. De plus, la productivité dépend de plus d'un paradigme mais des outils, de l'écosystème, du matériel d'apprentissage. Une étude impartiale devrait permettre à des groupes d'étudiants entiers de programmer les mêmes exigences avec l'une ou l'autre langue et voir les résultats. Cependant, même ils sont susceptibles d'avoir des connaissances préalables, ce qui le rend biaisé. Je ne connais aucune de ces études.
dagnelies
Pas d'études, mais quelques délires académiques: en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Den
1
C'est un peu une question piège parce que la POO telle qu'elle est pratiquée dans l'industrie a tendance à être très impérative. Nous sommes donc passés de procédures qui touchent des globaux à des méthodes qui modifient des objets qui modifient d'autres objets qui modifient d'autres objets; les effets secondaires sont un peu plus explicites mais il y a encore beaucoup d'action à distance. D'un autre côté, lorsque vous minimisez les effets secondaires et rendez les choses immuables, certains diront que vous faites de la programmation fonctionnelle.
Doval
2
Il n'y a aucun moyen de le mesurer réellement - c'est un effet quantique où le mesurer influence le résultat.
DeadMG
1
Pour faire une comparaison, il faut avoir un paradigme alternatif applicable aux très grands systèmes de programmation, construit par des programmeurs de compétences ordinaires (c'est-à-dire pas par une équipe d'experts ou des universitaires de pointe). Les grands systèmes impliquent généralement la mise en réseau, la base de données, l'équilibrage de charge et la redondance (c'est-à-dire les machines non fiables), entre autres. Cette dernière liste de questions domine tous les débats que l'on peut avoir sur les paradigmes du langage de programmation.
rwong

Réponses:

10

Je n'ai connaissance d'aucune étude avec des mesures quantifiables. Comme d'autres l'ont mentionné dans les commentaires de votre question, il est pratiquement impossible d'y parvenir. Cependant, il existe des articles quelque peu philosophiques qui tentent de répondre à cette question.

Mon article préféré sur ce sujet est Out of the Tar Pit de Ben Moseley & Peter Marks . Il raisonne avec diverses déclarations de sources respectables sur la conception de systèmes complexes pour des résultats assez intéressants.

Out of the Tar Pit conclut que la programmation fonctionnelle est en fait le meilleur paradigme pour soutenir les solutions qu'ils proposent. Ce qui est logique, car d'après mon expérience, les systèmes OOP complexes deviennent très proches de la procédure au fil du temps et la procédure commence à ressembler à la POO (ils n'ont pas de syntaxe et d'autres attributs, mais un flux d'exécution peut devenir assez similaire). La vraie différence vient avec un paradigme différent ou en le combinant avec la POO. À l'heure actuelle, un tel paradigme est la programmation fonctionnelle qui devient enfin utilisable dans les applications commerciales courantes par les programmeurs communs (toujours en train d'y arriver).

frzng
la source
5

Oui, il y a eu des études. En voici un: http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

Fondamentalement, il conclut qu'il n'y a pas de différence mesurable entre la productivité du code procédural et la productivité du langage OO .... mais la vérité est que ces types de questions sont si sensibles au contexte, aucune étude ne vous dira ce que vous devez faire dans une situation donnée .

Calphool
la source
Pendant longtemps, des études ont montré que l'introduction d'ordinateurs de bureau dans un environnement de bureau n'entraînait pas une augmentation de la productivité.
@nocomprende avez-vous des raisons de croire que ces études ont fait une mauvaise conclusion? Un PC de 1989 utilisé par un employé de bureau moyen en 1989 est complètement différent d'une machine moderne utilisée par un travailleur moderne. De même, l'application de la technologie objet peut ou non s'améliorer avec le temps.
Jørgen Fogh
1
@ JørgenFogh Je suppose que j'étais d'accord avec l'affirmation selon laquelle les études ne montrent pas toujours ce qui semble être du bon sens. Les entreprises n'auraient pas commencé à utiliser des ordinateurs dans les bureaux si elles avaient empiré les choses. Les gens n'auraient pas passé des décennies à développer l'approche OO si cela n'avait pas aidé. Seraient-ils? Eh bien, les gens peuvent se tromper, mais comment pouvez-vous le prouver de façon concluante dans un sens ou dans l'autre? Cela revient à dire: "Est-ce que cela fonctionne pour vous ?"