Programmazione orientata agli oggetti: perché "orientato"?

14

Sono in gran parte attraverso la mia laurea in programmazione di giochi. Questa non è una laurea in informatica, quindi gran parte della teoria è evitata a favore della costruzione di un portfolio pratico e di ciò che vedo come apprendimento JIT, che è apparentemente più importante nell'industria dei giochi. Il primo argomento era "Introduzione alla programmazione orientata agli oggetti".

Questa frase non mi ha infastidito fino a quando non ho appreso i diversi paradigmi di programmazione (sto ricevendo questa lista da link ):

  • imperativo
  • Funzionale
  • procedurale
  • Structured
  • Event-Driven
  • Object Oriented
  • dichiarativa
  • automi-Based

Ho capito che questa non è una lista esauriente, e che non tutti questi concetti sono uguali e che la maggior parte di essi non sono nemmeno esclusivi, ma non capisco perché la maggior parte di essi ottenga solo una parola - imperativo; funzionale; dichiarativo - ma quando parliamo di programmazione con oggetti, dobbiamo chiarire che siamo orientati attorno a quegli oggetti. Non possiamo semplicemente utilizzare oggetti? Non possiamo solo avere oggetti? Perché devono orientarci , come nostra stella guida?

Guardando qui ( link ), da nessuna parte si usa il termine "orientato" come termine proprio . Viene spiegato solo "oggetto".

Inoltre, posso vedere per motivi pratici perché viene usato Event-Driven, perché la Programmazione degli eventi è già una cosa che fai quando stai facendo una conferenza, e la Programmazione Automata ti fa sembrare che stai preparando un robot linea di produzione, quindi aiuta ad avere ulteriori parole chiarificatrici lì.

Cosa rende la Programmazione oggetti, come una frase, non sufficiente per descrivere ciò che facciamo quando usiamo gli oggetti nella nostra programmazione?

Ovviamente dal mio tono non mi piace troppo la parola "oriented". Mi ricorda il mio tempo come reporter di tribunale, ascoltando l'avvocato dopo che l'avvocato ha usato la frase "in relazione a" come una specie di zecca verbale. Non significava niente; era solo un termine usato per riempire l'aria mentre cercavano di pensare a cosa dire dopo. Tuttavia, non sto cercando di sostenere un cambio di lingua, sto solo chiedendo perché è così com'è. Se qualcuno sa perché è stato conosciuto in quel modo per motivi puramente storici, rari, allora questa è la risposta. Saranno le munizioni se mai deciderò di sprecare il mio tempo a favore di un cambio di lingua.

D'altra parte, se c'è effettivamente una ragione utile per cui una lingua o un pezzo di codice deve puntare verso gli oggetti, con l'esclusione di tutte le altre direzioni, invece di averli semplicemente in il suo cinturone, come strumenti , sarei davvero interessato a scoprirlo. Mi piace imparare cose utili.

    
posta Excrubulent 16.03.2013 - 00:41
fonte

3 risposte

24

Credo che tu stia leggendo modo troppo in un semplice costrutto grammaticale. Dai un'occhiata al tuo elenco di paradigmi, ordinati in modo diverso per un motivo a cui arriveremo a breve:

  • imperativo
  • Funzionale
  • procedurale
  • Structured
  • dichiarativa
  • Event-Driven
  • automi-Based
  • Object Oriented

Che cosa hanno in comune le parole? Sono tutti aggettivi perché hanno lo scopo di modificare la parola "programmazione". Inoltre, con l'eccezione di "imperativo" non sono tutti aggettivi "naturali", ma sostantivi "aggiustati" - nomi che in realtà descrivono il nucleo del paradigma: funzione, struttura, automi e oggetto.

E ci sono due modi diversi in cui i nomi sono aggiustati: attraverso un suffisso come -al o -ed, o attraverso la creazione di una parola composta usando un trattino. Ora, come ha sottolineato Doc Brown, i suffissi che potrebbero essere usati per rettificare "oggetto" hanno un significato diverso. Che lascia composizione.

E suppongo che sia pura coincidenza o gusto che Alan Kay abbia scelto di usare "orientato" per il suo aggettivo composito "object-oriented". Sarebbe stato altrettanto "object-driven", o "object-based", e potresti anche leggere troppo in questi. Non "guidato" suona come una sorta di ossessione malsana?

    
risposta data 21.07.2013 - 01:35
fonte
18

but when we talk about programming with objects, we have to clarify that we are oriented around those objects. Can't we just use objects? Can't we just have objects?

Francamente, è un retaggio della storia. La programmazione funzionale è davvero una programmazione orientata alle funzioni, la programmazione dichiarativa è davvero una programmazione orientata alla dichiarazione ... dopotutto non usiamo solo le funzioni? Non possiamo avere solo funzioni?

"Orientato agli oggetti" migliora la lingua, ed è storicamente radicato.

L''orientamento' viene perché non stiamo parlando di programmazione ma di design. Solo perché usiamo oggetti, o usiamo funzioni, o usiamo eventi, non significa che la nostra metodologia di progettazione sia fatta modellando tutti e tre. Specificando l'orientamento della metodologia di progettazione, aiuta a comunicare ai programmatori come dovrebbero interpretare ed estendere tale progettazione - in che modo l'attenzione alla modellazione colora l'implementazione.

    
risposta data 16.03.2013 - 00:51
fonte
2

Chiamarlo aiuta a spiegare che gli oggetti sono una parte molto importante del paradigma.

La programmazione orientata agli oggetti ha le sue radici in Simula , che era essenzialmente ALGOL più alcune nuove funzionalità di programmazione degli oggetti. E in linea con questa storia, anche oggi è completamente possibile in molte lingue (anche i "puri linguaggi OO") codificare qualcosa che è essenzialmente solo un programma procedurale con alcuni oggetti in esso contenuti. Ma questo è considerato un cattivo stile dagli sviluppatori più esperti.

In realtà fare qualcosa "il modo orientato agli oggetti" è molto diverso dal "modo procedurale". Il concetto più importante è l'uso dell'ereditarietà e del polimorfismo. Quando comprendi veramente e interiorizzi il modo in cui funzionano le classi e i metodi virtuali, è un'esperienza che apre gli occhi e cambia il modo in cui scrivi il codice in molti casi, un vero cambio di paradigma. (Supponendo, ovviamente, che tu abbia iniziato a scrivere prima il codice procedurale. Molti studenti in questi giorni vanno direttamente a Java o C # come prima lingua, e IMO si dimenticano di capire davvero i vantaggi di OO facendolo.)

La chiamiamo programmazione orientata agli oggetti perché un programma scritto in stile OO non contiene solo oggetti; la struttura dell'intero programma è basata su di loro e sul modo in cui lavorano.

    
risposta data 16.03.2013 - 00:51
fonte

Leggi altre domande sui tag