Come autore del post collegato, ho pensato di inserire un paio di pensieri.
FYI: Ho iniziato seriamente (vale a dire per il lavoro commerciale) utilizzando OOP/ORM/UML nel 1997, e mi ci sono voluti circa 5 anni di utilizzo quotidiano per essere veramente bravo a farlo. A quel punto stavo programmando in lingue ASM e non-OOP per circa 5 anni.
La domanda può essere formulata in modo imperfetto, ma penso che sia una buona domanda chiedersi e indagare - una volta che hai capito come esprimerlo meglio, avrai imparato molto utile su come tutto questo è insieme.
"Quindi OOP non sta cercando di sbarazzarsi di qualcosa che è qui per restare?"
In primo luogo, leggere l'articolo di Bjarne qui: http://www.stroustrup.com/oopsla.pdf
IMHO, nessuno dovrebbe essere insegnato qualsiasi OOP senza leggere che la carta (e ri-lettura dopo che hanno "imparato" OOP). Così tante persone fraintendono ciò con cui hanno a che fare.
IME, molti corsi universitari non insegnano bene OOP; insegnano alla gente come scrivere metodi, classi e come usare gli oggetti. Insegnano male perché si farebbe queste cose, da dove vengono le idee, ecc. Penso che gran parte del cattivo uso provenga da questo: quasi un caso di cieco che guida il cieco (non cieco in "come "per usare OOP, sono semplicemente ciechi nel" perché "usare OOP).
Per citare dal paragrafi finali del documento:
"come sostenete buone tecniche di programmazione e tecniche di progettazione buoni conta più di etichette e parole di ronzio L'idea fondamentale è semplicemente quello di migliorare la progettazione e la programmazione attraverso l'astrazione.. Vuoi nascondere i dettagli, vuoi sfruttare qualsiasi comunanza in un sistema e vuoi renderlo accessibile
Vorrei incoraggiarti a non rendere l'orientamento agli oggetti un termine senza senso. La nozione di oggetto -orientato '' è troppo frequentemente degradato: - equipaggiandolo con buono, - equipaggiandolo con un singolo lingua, o - accettando tutto come orientato agli oggetti.
Ho sostenuto che esistono e devono essere utili tecniche oltre alla programmazione e alla progettazione orientata agli oggetti. Tuttavia, per evitare di essere totalmente frainteso, vorrei sottolineare che non tenterei un progetto serio utilizzando un linguaggio di programmazione che non supportasse almeno la nozione classica di programmazione orientata agli oggetti. Oltre alle strutture che supportano la programmazione orientata agli oggetti, voglio e C++ offre funzionalità che vanno oltre quelle a supporto dell'espressione diretta di concetti e relazioni. "
Ora ... vorrei chiederti ... di tutti i programmatori OOP e progetti OOP che hai visto, quanti di loro può onestamente dire di aver aderito a quello che Bjarne richieste ci
IME, meno della maggioranza
Bjarne afferma che:?.
"L'idea fondamentale è semplicemente migliorare il design e la programmazione attraverso l'astrazione"
... eppure molte persone inventano per se stessi un significato diverso, qualcosa di simile:
"L'idea fondamentale è che OOP è buono, e tutto ciò, non-OOP è inferiore"
programmatori che hanno programmato sequenzialmente con ASM, poi ASM, poi pascal, poi C, poi C++, e sono stati esposti al caos che stava programmando il pre-incapsulamento, e tendono ad avere una migliore comprensione di questa roba. Sanno perché è arrivato OOP, che cosa stava cercando di risolvere.
Stranamente, OOP era non cercando di risolvere ogni problema di programmazione. Chi l'avrebbe mai detto, per dire di come si parla oggi?
Era rivolto a un piccolo numero di problemi che erano estremamente pericolosi quanto più grande è stato il tuo progetto, e che si è rivelato essere un posto tra "buono" e "molto buono" nel risolvere.
Ma anche alcuni di loro non è meglio che semplicemente "buono" nel risolvere; ci sono altri paradigmi che sono meglio ...
Tutto IMHO, ovviamente;)
Cosa si intende per "lineare"? –
Cosa intendi con "puro OOP"? – Ray
Ad esempio, dicendo che Dataset è malvagio o non SQL in un oggetto. – programmernovice