Come diventare un esperto in C ++ [chiuso]

0

Ho una certa esperienza nella programmazione Java e nello sviluppo di applicazioni aziendali. Ho fatto OOP, strutture dati in C ++ per i miei studi universitari. Ma non potevo toccare C ++ per anni. Ora sono di nuovo interessato al C ++ e vorrei perfezionare le mie conoscenze in C ++ e diventare un esperto in C ++. Come posso iniziare di nuovo il mio viaggio in C ++?

In questo viaggio vorremmo imparare alcuni concetti avanzati in C ++ come programmazione di rete, calcolo distribuito, ecc.

    
posta Kanishka Dilshan 15.01.2013 - 11:22
fonte

3 risposte

3

Ovviamente ci sono molte aree che puoi guardare, le librerie STL e Boost ti vengono in mente, ma come sviluppatore ex-Java devi prima sistemare i concetti di base che sono diversi.

Il principale tra questi è la durata degli oggetti, in Java hai un GC e finalizzatori e tutto ciò, con C ++ hai definito esplicitamente ambiti e punti deterministici in cui il tuo oggetto (automaticamente) andrà via quando lascerà spazio. Generalmente si crea un oggetto sullo stack anziché l'heap in C ++ e si lascia decidere al compilatore quando liberarlo. Non pensare di dover creare tutti gli oggetti nell'heap e lasciare che il GC decida quando non vengono più utilizzati. Se hai bisogno di un oggetto a vita più lunga, o di un oggetto di grandi dimensioni che vada bene a vivere sull'heap, usa una classe puntatore intelligente per gestirlo. Potresti voler controllare le ultime specifiche con le sue funzioni come lambdas e specialmente la sintassi dell'operatore di spostamento.

Google per RAII e assicurati di apprendere gli ambiti C ++, è banalmente semplice, ma come molte cose che sono facili, devi prendere la piccola quantità di tempo per comprenderle.

    
risposta data 15.01.2013 - 12:21
fonte
3

Disclaimer: ciò che leggi qui sono le mie idee personali e non sono necessariamente corrette o ampiamente accettate.

In breve, pratica ! e probabilmente più pratica. Se voglio parlare in dettaglio, ci sono alcune cose che mi piace sottolineare. Ero più o meno nella stessa situazione, avendo una certa esperienza in java e conoscendo c ++ in superficie.

Per padroneggiare il c ++ né i libri né le lezioni sul video sono stati di grande aiuto. Non fraintendetemi, i libri vanno bene, ma nel mio caso si trattava solo di controllare la sintassi o di conoscere il concetto in dettaglio. Quello che mi ha veramente aiutato, è stato lo sviluppo di un paio di progetti molto seri con c ++ e, mentre lo facevo, ho imparato a fondo alcuni dei concetti più importanti. Quindi, ancora, pratica, fai progetti e intanto sai cosa stai facendo. Con "sapere cosa stai facendo" intendo che dovresti sapere che cosa sta facendo esattamente il tuo codice (ad esempio, qual è la differenza tra passare per riferimento e passare per puntatore ed ecc.)

Inoltre, dovresti imparare alcuni dettagli come funzionano il compilatore e il linker, quali sono le macro e altro. Il punto è che java è un linguaggio molto carino durante lo sviluppo (opinione personale); è facile e veloce da sviluppare e non è necessario preoccuparsi di molti aspetti della programmazione. C ++ d'altra parte non è così facile. Se vuoi veramente padroneggiare la lingua, dovresti conoscere i dettagli di compilatore, linker, macro, debugger e così via.

Non voglio iniziare una battaglia sui sistemi operativi qui ma consiglio vivamente di lavorare con linux. La bella architettura di Linux ti permette di vedere veramente come funzionano le cose e strumenti come cmake (che è cross platform btw) ti permettono di capire meglio il processo di compilazione. Se non vuoi usare linux, almeno dimentica gli IDE automatizzati come ms visual studio in cui tutto avviene con un semplice clic.

Ma se voglio fare solo un suggerimento, devo ripetere ancora: PRACTICE!

    
risposta data 15.01.2013 - 12:07
fonte
3

Suggerirei un consiglio, andare su StackOverflow, cercare domande senza risposta su C ++ e provare a rispondere . L'importo che impari dal rispondere alle domande è immenso e rimarrai sorpreso di quanto spesso tendano a emergere come problemi più avanti per te.

    
risposta data 15.01.2013 - 12:58
fonte

Leggi altre domande sui tag