Va bene studiare il C ++ da un libro che supporta solo la versione del 1998 standard? [chiuso]

3

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?

    
posta user827992 29.06.2012 - 23:51
fonte

5 risposte

6

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:

risposta data 30.06.2012 - 00:00
fonte
9

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.

    
risposta data 30.06.2012 - 00:12
fonte
2

Probabilmente è meglio imparare prima la vecchia versione:

  • Potrebbe volerci un po 'di tempo prima che C ++ 11 sia completamente supportato dall'ultima versione del tuo compilatore preferito. O il compilatore che il tuo particolare progetto richiede di usare.
  • Codice scritto prima che C ++ 11 non lo usi. Potrebbe essere un po 'di tempo (come in, "possibilmente mai") prima che un determinato progetto migri in C ++ 11.
  • Per comprendere il ragionamento alla base del design di C ++ 11, è probabilmente meglio capire la forma originale della lingua.

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 ?"

    
risposta data 30.06.2012 - 00:33
fonte
2

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.)

    
risposta data 30.06.2012 - 03:50
fonte
2

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:

  1. L'autore non parla di una tecnica perché non è ancora disponibile. Questa è incompletezza di informazioni, puoi riempire con un'ulteriore lettura. Non male da solo ... ma perché non iniziare con una lettura più recente?
  2. L'autore non è (ancora) consapevole di un potenziale problema che una tecnica può insegnare (perché è stata scoperta in seguito). Un po 'più pericoloso: se non riempi questa spaccatura, potresti essere in difficoltà ad altri che sono già lontani da.
  3. L'autore è consapevole di alcuni problemi e ti insegna tecniche per evitarli / risolverli. Forse ora ci sono modi più efficaci / corretti per evitare / risolvere questi problemi, rendendo superflue quelle tecniche.

Morale: quando parli di C ++, i libri che precedono il 2003 non dovrebbero essere più considerati.

    
risposta data 05.07.2012 - 09:13
fonte

Leggi altre domande sui tag