Ci sono persone che dicono che puoi scrivere oggetto codice orientato in qualsiasi lingua, e ci sono anche persone che dicono che puoi scrivere codice orribilmente non strutturato in qualsiasi lingua.
Il linguaggio "OO" reale fornisce una serie di meccanismi per l'implementazione della progettazione OO: i linguaggi hanno concetti integrati per oggetti e/o classi, per incapsulare codice con dati, per ereditarietà e così via. C non ha sostanzialmente nulla di tutto ciò, ma non c'è nulla che ti impedisca di eseguire la programmazione OO in C, date alcune tecniche e autodisciplina (come sicuramente ti dice il tuo libro).
Ma vorresti?
La mia opinione è questa: se stai solo imparando a fare la programmazione OO, potrebbe avere più senso imparare questo mentre è "tenuto per mano" da un linguaggio che già incorpora profondamente i concetti. Un linguaggio ben strutturato, semplice e interattivo sarebbe bello per questo: data una scelta libera, raccomanderei Ruby, Python o Groovy. Dato un linguaggio con la "magia" OO incorporata diventa molto ovvio quando stai facendo cose OO e quando sei solo strutturato, disciplinato e ben organizzato. Ci possono essere anche cose da imparare quando ci si sposta da C ad un'altra lingua: le caratteristiche comuni, le differenze.
Alcune persone consigliano di imparare il C++ come progressione OO naturale da C. Non lo sostengo con tutto il cuore, perché considero il C++ un bullismo piuttosto brutto delle funzionalità di OO su un linguaggio che era già più "pratico" di elegante. Quando si passa dalla programmazione C "standard" alla programmazione OO, penso che un programmatore dovrebbe prendere in considerazione l'idea di allontanarsi dalla manipolazione diretta dei puntatori, ad esempio, e certamente troverei gravoso dover gestire la memoria per i miei dati. I moderni linguaggi OO automatizzano questo in modo che un programmatore abbia più cellule cerebrali rimaste per compiti di livello superiore. L'attrazione del C++, ovviamente, è la velocità non elaborata. Poiché può cadere allo stesso livello di metallo vicino a C, di solito è il "più veloce" dei linguaggi OO.
Tutto ciò detto: se si dispone di un grande progetto in cui la lingua richiesta è C e si desidera utilizzare e praticare le tecniche OO, quindi con tutti i mezzi andare avanti! Altrimenti, potresti trarre vantaggio dall'imparare OO in un ambiente che incoraggia e supporta questo, e forse più tardi tornare a C con la tua conoscenza di OO. Le tecniche insegnate nel libro avranno quindi un senso per te, e sarai in una posizione migliore per decidere se vuoi davvero farlo in C o in un linguaggio OO "reale".
fonte
2010-07-24 13:54:09
Ci sono alcuni veramente grandi risposte qui che ho pienamente d'accordo con! –