Sono stati condotti studi sull'efficacia di OOP nella gestione della complessità del software? [chiuso]


14

OOP è spesso considerata un'efficace strategia di gestione della complessità del software, al contrario della programmazione procedurale non OOP.

Ci sono stati studi per testare questa nozione? È dimostrato che OOP spesso aiuta a gestire la complessità in grandi progetti?


4
Nonostante sia molto interessante, l'IMHO, misurare la "complessità" e l '"efficacia" dei paradigmi è uno sforzo difficile e incline. Ogni programma è unico, ogni sviluppatore è unico ed è difficile da confrontare. Inoltre, la produttività dipende da più di un paradigma ma dagli strumenti, dall'ecosistema, dal materiale di apprendimento. Uno studio imparziale dovrebbe consentire a interi gruppi di studenti di programmare gli stessi requisiti con entrambe le lingue e vedere i risultati. Tuttavia, anche loro hanno probabilmente una conoscenza preliminare che la rende di parte. Non conosco nessuno di questi studi.
Dagnelies,

Non studi, ma alcuni studi accademici: en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Den

1
Questa è una domanda un po 'complicata perché OOP come praticato nel settore tende ad essere altamente imperativo. Quindi siamo passati da procedure che toccano i globi a metodi che modificano oggetti che modificano altri oggetti che modificano altri oggetti; gli effetti collaterali sono in qualche modo più espliciti ma c'è ancora molta azione a distanza. D'altra parte, quando minimizzi gli effetti collaterali e rendi le cose immutabili, alcuni direbbero che stai facendo una programmazione funzionale.
Doval,

2
Non c'è modo di misurarlo realmente: è un effetto quantico in cui la misurazione influenza il risultato.
DeadMG

1
Per fare un confronto, è necessario disporre di un paradigma alternativo applicabile a sistemi di programmazione molto grandi, costruiti da programmatori di abilità ordinarie (cioè non da un team di esperti o accademici all'avanguardia). I sistemi di grandi dimensioni tendono ad includere tra l'altro reti, database, bilanciamento del carico e ridondanza (ovvero macchine non affidabili). Quest'ultimo elenco di problemi domina qualsiasi dibattito si possa avere per la programmazione dei paradigmi del linguaggio.
rwong,

Risposte:


10

Non sono a conoscenza di studi con misurazioni quantificabili. Come altri hanno menzionato nei commenti alla tua domanda, è praticamente impossibile farlo. Tuttavia ci sono articoli in qualche modo filosofici che cercano di rispondere a questo.

Il mio articolo preferito su questo argomento è Out of the Tar Pit di Ben Moseley e Peter Marks . Ragiona con varie affermazioni da fonti rispettabili sulla progettazione di sistemi complessi a risultati piuttosto interessanti.

Out of the Tar Pit conclude che la programmazione delle funzioni è in realtà il miglior paradigma per supportare le soluzioni che stanno proponendo. Il che ha senso, perché nella mia esperienza, i complessi sistemi OOP diventano molto vicini alla procedura nel tempo e la procedura inizia a sembrare OOP (non hanno una sintassi e altri attributi, ma un flusso di esecuzione potrebbe diventare abbastanza simile). La vera differenza arriva con un diverso paradigma o combinandolo con OOP. Al momento, tale paradigma è la programmazione funzionale che sta finalmente diventando utilizzabile in comuni applicazioni aziendali da programmatori comuni (ancora in arrivo).


5

Sì, ci sono stati alcuni studi. Eccone uno: http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep-%20printable.pdf

Fondamentalmente conclude che non c'è una differenza misurabile tra produttività del codice procedurale e produttività del linguaggio OO .... ma la verità è che questi tipi di domande sono così sensibili al contesto, nessuno studio ti dirà cosa dovresti fare in una determinata situazione .


Per molto tempo ci sono stati studi che hanno dimostrato che l'introduzione di computer desktop in un ambiente di ufficio non ha portato ad un aumento della produttività.

@nocomprende hai qualche motivo per credere che quegli studi abbiano fatto una conclusione sbagliata? Un PC del 1989 utilizzato dall'impiegato medio nel 1989 è completamente diverso da una macchina moderna utilizzata da un lavoratore moderno. Allo stesso modo, l'applicazione della tecnologia degli oggetti può o meno migliorare nel tempo.
Jørgen Fogh,

1
@ JørgenFogh Suppongo di essere d'accordo con l'affermazione che gli studi non mostrano sempre ciò che sembra essere buon senso. Le aziende non avrebbero iniziato a utilizzare i computer negli uffici se avessero peggiorato le cose. Le persone non avrebbero trascorso decenni a sviluppare l'approccio OO se non avesse aiutato. Lo farebbero? Bene, le persone possono sbagliarsi, ma come si può dimostrare in modo conclusivo in un modo o nell'altro? Ciò che si riduce è: "Funziona per te ?"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.