Ho questo grande libro che sostanzialmente copre tutti gli aspetti principali del C ++, il problema è che è piuttosto vecchio secondo gli standard C ++ di oggi, è ok usarlo?
Ho questo grande libro che sostanzialmente copre tutti gli aspetti principali del C ++, il problema è che è piuttosto vecchio secondo gli standard C ++ di oggi, è ok usarlo?
Va bene usarlo. Non riceverai le informazioni più aggiornate, ma la maggior parte del C ++ è la stessa lingua del 1998. Se stai solo imparando le basi, vai avanti. Tieni presente che sono stati apportati alcuni miglioramenti e cerchi risorse che spieghino le differenze in modo che tu ne sia a conoscenza.
Ecco alcune di quelle risorse:
C ++ 11 è un grosso problema, senza contare che i molti libri in 98 insegnavano C con Classi, piuttosto che C ++. Cercherei qualcosa di più nuovo. Abbiamo una domanda su Stack Overflow che fornisce consigli per libri che vale la pena possedere.
Modifica: Naturalmente, ci sono anche molte nuove tecniche C ++ che semplicemente non esistevano in precedenza, specialmente per quanto riguarda i modelli, e ci sono alcuni idiomi che non sono più, come il controllo dell'auto-assegnazione, per non parlare dei cambiamenti globali nel settore del software come spinge per il parallelismo.
Probabilmente è meglio imparare prima la vecchia versione:
In ogni caso, se non impari prima la vecchia versione, potresti avere difficoltà a capire come scrivere per qualsiasi sistema che non supporta completamente quello nuovo. Del resto, consiglierei di imparare C prima, prima di imparare la vecchia versione di C ++: ti farà risparmiare molti momenti angoscianti di "perché diavolo hanno fatto come che ?"
Vado a sostenere l'apprendimento di C ++ 11, non versioni precedenti. È vero che la stragrande maggioranza della sintassi e della semantica del linguaggio sarà la stessa ed è vero che ci sono virtualmente no codebase C ++ 11 nelle linee approssimativamente gazillion out in the wild. Quindi, sì, è vero che essenzialmente stai imparando un nuovo dialetto non ancora comune e questo potrebbe essere uno svantaggio se ti viene subito chiesto di fare qualcosa con un dialetto più vecchio.
Ma il nuovo dialetto è migliore e più semplice . Il problema, penso, è che quando fai vai a occuparti di una base di codice più vecchia, potresti essere confuso da "Perché non usano solo ...?" pensieri. Ma il rovescio della medaglia è che se impari un vecchio dialetto, come un principiante sei scarsamente preparato a sapere "Oh, okay, questo modello è sostituito da una cosa lambda molto più semplice ..." e puoi trovarti ad occuparti di alcuni codice dall'aspetto peloso.
È vero che il supporto del compilatore è ancora frammentario, ma penso che tutti abbiano auto
e lambdas e% di intervallo basato sufor
e supportano shared_ptr
/ unique_ptr
/ weak_ptr
. Quindi ci sono molte grandi vittorie veramente ampiamente disponibili.
(È vero, però, che se stai usando un libro, probabilmente non non sarà esposto al glorioso melange pieno di idiomi che vedi in una base di codice legacy.)
Il libro non è male, ma non è un libro di "lingua", ma molto di più un "libro di ingegneria del software".
Non dovrebbe essere usato per imparare una "lingua" ma per imparare "tecniche di progettazione". La lingua è solo uno strumento per implementare i campioni.
Detto questo, dobbiamo considerare che nel '98 il C ++ aveva un supporto di modello imperfetto e che molte tecniche non erano ancora state scoperte / inventate.
Devi quindi essere consapevole di alcuni potenziali rischi:
Morale: quando parli di C ++, i libri che precedono il 2003 non dovrebbero essere più considerati.