Sono un principiante. Posso iniziare direttamente ad imparare C ++ 11? o devo imparare il vecchio C ++? [chiuso]

35

Sono un principiante e ho solo poche conoscenze in programmazione.

Sarebbe bello se imparassi direttamente il C ++ dai libri che trattano il nuovo C ++ 11 o dovrei studiare attraverso i vecchi libri C ++ migliori?

Dovrei avere poche conoscenze su C ++ prima di imparare C ++ 11? o posso iniziare direttamente da lì?

Potrebbe causare problemi se avvio direttamente da C ++ 11? Se no, quindi suggerire alcuni libri su C ++ 11.

    
posta Dhananjay 28.08.2012 - 16:35
fonte

10 risposte

37

Ci sono molti miglioramenti dell'usabilità che rendono C ++ 11 più comprensibile per un principiante, specialmente per chi ha esperienza in altre lingue con queste caratteristiche. Altre modifiche in C ++ 11 interessano solo gli utenti avanzati, quindi è probabile che ti sentirai sopraffatto se prendi in mano un libro progettato principalmente per insegnare le differenze. Assicurati che ogni libro che ricevi sia progettato per principianti completi in C ++.

Detto questo, probabilmente dovrai imparare alla vecchia maniera, visto che c'è un sacco di codice esistente là fuori, e anche il nuovo codice C ++ 11 conterrà il vecchio modo di fare le cose se il programmatore sceglie. Scrivo C ++ per vivere e la mia azienda non è ancora riuscita a compilare valutando compilatori compatibili con C ++ 11, figuriamoci a usarne uno in produzione.

    
risposta data 28.08.2012 - 17:38
fonte
10

Non è necessario utilizzare il vecchio C ++ per iniziare a utilizzare C ++ 11, ci sono nuove funzionalità in C ++ 11 ma l'uso è facoltativo. Sapere come usare le funzionalità di C ++ 11 potrebbe essere un vantaggio, certamente non sarebbe uno svantaggio quando si lavora con basi di codice legacy (pre 11) una volta che si conoscessero le idiosincrasie delle versioni precedenti.

Learn C ++ sarebbe un buon punto di partenza per imparare e Appendice B ti insegnerà le funzionalità di C ++ 11 dopo aver imparato le basi.

Posso capire perché alcune persone hanno suggerito Java / CSharp ecc. come linguaggi alternativi più semplici ma ho imparato un po 'di C ++ prima di passare a CSharp e non sono un programmatore peggiore per questo, al contrario le capacità di programmazione vanno molto più profondo della sintassi / funzionalità del linguaggio e con una solida base in C ++ si può imparare facilmente qualsiasi altro linguaggio OOP imperativo.

    
risposta data 28.08.2012 - 17:52
fonte
8

Nonostante molti miglioramenti in C++11 , C++ non è ancora un linguaggio facile. Java, sebbene non sia facile come qualcuno potrebbe pensare, è ancora un linguaggio più semplice con ottime prestazioni (spesso quasi veloce come C++ ) e offre IDE migliori (forse Visual C++ è buono come attuali IDE Java ma senza fortuna qui su Linux), una libreria standard molto più completa (il JDK), più librerie (es. Iberna , Spring , JEE , Lucene , ecc.) e nessuna perdita di memoria (beh, quasi nessuna: è ancora possibile creare una perdita di memoria in Java, ma è più difficile farlo in C++ ). Per essere onesti, con il moderno C++11 , è molto più semplice evitare i porri di memoria.

C ++ 11 ha molte funzioni interessanti come lambdas, auto keyword, move semantics e molto altro. È sicuramente una lingua molto migliore di C++98 . Vedi questa panoramica di Herb Sutter sulle nuove funzionalità in C++11 : Elementi di Modern C++ Style.

Per riassumere, penso che tutti dovrebbero imparare almeno un po 'di C++ . Se hai programmato in Java , Scala , Ruby o Python per l'ultimo decennio e non hai mai toccato C o C++ , ora con C++11 Penso che sia ora di imparare C++11 e migliora le tue capacità di programmazione mentre lo fai.

Probabilmente non userò C++ molto al lavoro nei prossimi anni e quando avrò bisogno di un linguaggio più potente di Java , probabilmente andrò su Scala, ma darò un'occhiata più da vicino a C++11 e cerca di imparare e comprendere le nuove funzionalità, in particolare quelle relative al multithreading e alla concorrenza.

Remember: It always helps to learn a new programming language even when you don’t plan to use it in production.

    
risposta data 29.01.2014 - 11:51
fonte
7

È difficile da dire.

Old C ++ è più di un campo minato, ed è bello imparare a navigare come una bestia. Vi farà anche capire perché le cose vengono fatte come sono e quali sono le implicazioni dei diversi costrutti.

Inoltre, il vecchio C ++ non è quello che vuoi quando scrivi il codice.

Ma poi, ancora una volta, il vecchio C ++ è ciò che molta industria continuerà ad agitare per altri 20 anni.

Adoro C ++ 11, ma per ora è utilizzabile solo nelle startup. Non in grandi basi di codice legacy. E saltare direttamente al C ++ 11 potrebbe lasciarti con abilità non sviluppate in brutte parti in C ++. Che si ritorcerà una volta che alcuni C ++ 11 avanzati costruiranno perdite, o si bloccherà perché è usato in un modo sintatticamente corretto, ma logicamente scorretto.

    
risposta data 28.08.2012 - 17:33
fonte
1

Fai un respiro profondo e leggi questo articolo di Peter Norvig.

L'hai letto? Ok, se sei un principiante, devi iniziare a piccoli passi. -inserire la lingua qui- può venire più tardi, controlla Coursera o Udacity per alcuni corsi introduttivi di introduzione all'informatica.

Dopo averlo completato, consiglierei lentamente di farsi strada attraverso K & R's The C programming lingua se sei impostato su una lingua "C".

Lavora sulle basi, il resto arriverà in tempo.

    
risposta data 28.08.2012 - 16:47
fonte
1

I libri introduttivi recenti su C ++ riguardano sempre più anche il linguaggio C ++ 11. Ho letto Sam's Teach Yourself C ++ dopo aver lavorato con linguaggi script ma non C / C ++ per quasi dieci anni e l'ho trovato davvero utile. Ho subito capito le idee centrali del C ++ (incluso un sacco di STL) e sono consapevole di molti dettagli diversi in C ++ 11.

Come alcuni altri utenti hanno menzionato, C ++ 11 è in molti modi più semplice rispetto agli standard precedenti con aggiunte in stile script come auto , for(int &i : m_vector){} ecc. Quindi se la tua "piccola conoscenza" deriva da linguaggi come Python o Matlab, troverai C ++ 11 un po 'più "naturale" rispetto agli standard precedenti.

Vorrei anche sottolineare che ormai la compatibilità del compilatore per C ++ 11 è ( quasi ) completa quindi avere un codice che è "troppo aggiornato per compilare" non è più un problema.

In breve, fallo.

    
risposta data 12.01.2014 - 14:09
fonte
-1

Quando la mia volta, C era considerato un prerequisito del C ++, specialmente per i principianti della programmazione. Perché devi capire che cosa fa un linguaggio e perché è stato progettato in questo modo. C ha un sacco di idee grandi e sufficienti di linguaggio di programmazione, che non sarà mai obsoleto. Quindi, credo che questo sia l'inizio migliore.

E dopo aver avuto un punto di vista di base sui programmi, potresti dover scegliere cosa fare come mossa successiva, il che significa scegliere una lingua per imparare più profondamente che puoi. Indipendentemente dalla profondità, generalmente puoi decidere quanto puoi ottenere in profondità per qualsiasi altra lingua, il che significa che, indipendentemente da quante lingue hai imparato, la più profonda sarà sempre la prima che hai scoperto. Per quanto mi riguarda, ho eseguito ricerche su Java e realizzato alcuni modelli di Java per capire meglio la sua funzionalità del kernel.

Dopo, potresti essere in grado di imparare tutto ciò che vuoi, perché hai una comprensione totale della tecnologia del linguaggio di programmazione. Ho iniziato ad imparare C #, Go, Python anche Scala e ho fatto molti progetti per divertimento / lavoro. Il record personale è di 3 mesi dall'avvio dell'apprendimento di una lingua per diventare 1.0 capo di un progetto in via di sviluppo.

Nel mio caso, sono trascorsi più di 15 anni dal mio primo programma e non ricordo nemmeno di cosa si tratta. Credo che se lavori abbastanza, diventerai sicuramente migliore e più veloce di me.

    
risposta data 29.01.2014 - 06:09
fonte
-2

Come principiante, penso che prima devi passare attraverso i concetti C ++ perché C ++ 11 e tutto è come una nuova versione, ma C e C ++ sono la base per qualsiasi tipo di sviluppo. Una volta imparato il C ++, la maggior parte dei concetti verrà automaticamente cancellata.

    
risposta data 29.01.2014 - 07:57
fonte
-3

C ++ È un linguaggio davvero grande e potente. Tuttavia, pone anche molte responsabilità sul programmatore.

Se sei completamente nuovo alla programmazione, rendi la tua vita più facile e inizia con C #. La sintassi è basata su C ++, ma la gestione degli errori è molto più intuitiva nell'aiutarti quando le cose vanno male.

Se sei a tuo agio con metodi, classi, ereditarietà e desideri svilupparsi in un ambiente in cui la gestione della memoria e delle risorse di sistema è più importante della produttività, allora il C ++ è una buona scelta e inizierei imparando lo standard attuale. Ricorda che C ++ richiede di comprendere la memoria e di gestirla attivamente. Fai errori qui, e tutto ciò che ottieni è un core dump o i tuoi dati contengono byte che non hanno senso. E spesso il punto in cui si trova il problema non è correlato a dove sia effettivamente la causa.

    
risposta data 27.01.2014 - 16:02
fonte
-6

Perché vuoi iniziare con C ++?

Personalmente raccomando contro il C ++ come prima lingua. È difficile, complesso, difficile ... semplicemente molto più basso e più "non sicuro" rispetto alla maggior parte degli altri linguaggi di programmazione.

Ti consiglio di scegliere c #, java, python o javascript ... e un buon libro lungo la strada. Avrai un tempo molto più divertente con questi.

    
risposta data 28.08.2012 - 16:51
fonte

Leggi altre domande sui tag