Migliorare il livello del mio codice C / C ++

16

Ho programmato per 3-4 anni e sento che non posso più essere definito un principiante, ma ho letto alcune domande su questo sito e penso che WTF stiano parlando? Mi sento allo stesso modo quando raccolgo libri di programmazione al giorno d'oggi.

Ho letto diversi libri di programmazione iniziali, alcuni su C / C ++ e altri sui giochi. Ho scritto alcune cose più complesse come interfaccia AI, seriale e TCP / IP di base.

Ho intenzione di diventare un programmatore di giochi, ma recentemente mi sono interessato ai sistemi embedded dopo aver avuto la possibilità di lavorare su di essi (l'interfaccia seriale).

Ho trovato molto difficile trovare materiali per continuare il mio apprendimento dopo aver completato l'introduzione e i libri per principianti in quanto non sono libri di C ++ intermedi che riesco a trovare.

Quale consiglio daresti per crescere e migliorare le mie conoscenze e competenze? Le risorse specifiche sarebbero molto apprezzate.

    
posta Skeith 13.05.2011 - 12:56
fonte

4 risposte

11

Se stai parlando di C / C ++, allora sicuramente potresti usare qualche esperienza in più. Il primo suggerimento che ti darò è che C e C ++ sono lingue completamente diverse . La migliore risorsa per imparare il C ++ è StackOverflow: ci sono molte persone che hanno una grande quantità di esperienza e conoscenza.

La prossima cosa da fare è iniziare un progetto importante, come provare a scrivere un motore grafico 3D in un'API di basso livello come DirectX, e quando il tuo design fallisce miseramente come fanno tutti i primi progetti, allora imparerai qualcosa su come non programmare.

Puoi controllare questo link su StackOverflow per un elenco di grandi dimensioni di buoni libri per imparare il C ++.

    
risposta data 13.05.2011 - 13:21
fonte
5

Prima di tutto, aumenta il tuo background teorico di base in tutto ciò che non sai ancora. Studia la teoria e scrivi alcuni brevi esempi.

Esempio di background teorico di base include:

  • Algoritmi e datastrucche
  • Progettazione software (UML, modelli di progettazione, OOP)
  • Sistemi operativi e programmazione parallela

Quindi, considera l'apprendimento di una lingua aggiuntiva (ad esempio Java o C #). - Lo studio di altre lingue aiuta a capire meglio i pro e i contro di qualsiasi lingua tu stia utilizzando e ti aiuta ad apprendere le migliori pratiche di cui potresti non essere a conoscenza.

Quindi scegli un nuovo dominio (programmazione web, computer grafica, elaborazione delle immagini, visione artificiale, accesso ai dati, ...). Studia la teoria e scrivi alcuni brevi esempi.

Quindi crea un grande esempio che incapsula un'applicazione multistrato, gestendo l'accesso ai dati, l'interfaccia utente e un dominio specifico che hai scelto. Metti l'accento sull'architettura dell'applicazione (assicurati che le sue parti siano il meno possibile accoppiate).

Speriamo che imparerai come apprendere nuovi approcci e tecnologie e integrarli con una buona architettura.

In particolare per la programmazione di giochi, consiglio di scegliere i seguenti domini / tecnologie:
  • Nozioni di base sull'elaborazione delle immagini
  • Qualsiasi tecnologia di interfaccia utente specifica
  • Informazioni di base sulla grafica per computer
  • Qualsiasi motore grafico specifico (ad esempio DirectX, OpenGL, OGRE, ODG, Java3D, ...)
  • Informazioni di base sulla fisica meccanica
  • Qualsiasi motore fisico specifico (ad esempio PhysX, ...)
  • Qualsiasi motore di gioco specifico (ad esempio XNA, ...)
  • Programmazione multi-thread
  • Programmazione distribuita

Modificare:

Come imparare:

  • Leggi ed esegui esempi da CodeProject.
  • Sfoglia alcuni libri in una biblioteca di libri / libri elettronici o archivia fino a trovare un paio di libri che ti piacciono (che corrispondono al tuo stile di lettura + coprono gli argomenti di cui vuoi leggere).
  • Leggi i blog.
  • Prova le cose e chiedi a StackOverlow quando ti blocchi.
risposta data 13.05.2011 - 13:11
fonte
1

Usando C ++ (in combinazione con C) supponiamo che avrai ancora molto da imparare per capire il WTF di cui stanno parlando. Il C ++ è composto da più lingue, diversi livelli di astrazione vivono nello stesso posto e ci vuole un sacco di tempo per esplorarlo tutto una volta, quindi capire quello che hai appena visto.

Sono stato nel tuo caso e sto ancora imparando a conoscere quelle lingue. Ho anche imparato molto lavorando su sistemi embedded.

Ecco il mio consiglio:

  • Leggi quei libri: link - > Inizia con i libri introduttivi, anche se ritieni di non essere un principiante, perché devi prima approfondire le tue conoscenze di base prima di andare avanti. Quindi scopri le metaprogrammazione dei modelli e le restrizioni dei sistemi incorporati.
  • Pratica molto: più applica ciò che impari, più lo capisci. Su questo punto, il mio modo di fare è testare qualsiasi angolo delle lingue e del contesto in piccoli progetti di test. Ho anche "grandi" progetti a casa dove ho il controllo di tutto e pratico nuove tecniche e li spingo fino a quando non si rompono.

Non presumere che tu sappia già molto sulla programmazione. La maggior parte degli sviluppatori sta maturando nella programmazione solo dopo più di 10 anni di pratica del mondo reale, con diversi contesti e tipi di progetti, piattaforme ecc.

Stai appena iniziando il tuo viaggio.

    
risposta data 13.05.2011 - 14:40
fonte
0

In base ai tuoi interessi nella programmazione e nei giochi incorporati, ti suggerisco anche quanto segue: puoi consultare le liste dei post sopra per trovare materiale di buona qualità su tutti questi argomenti. Un libro che ho trovato essenziale era La libreria standard C ++: un tutorial e un riferimento

  • Se non ti senti a tuo agio con le basi di OOP, impara prima quelle. Comprendere le basi dell'ereditarietà e dell'incapsulamento. Scopri come si comportano le parole chiave virtuali, pubbliche / protette, private e statiche.

  • Cerca di usare puntatori e riferimenti (e generalmente preferisci riferimenti). Impara e usa lo smart_ptr < > costruire per ottenere una gestione della memoria "automatica".

  • Scopri come utilizzare i modelli C ++, inizialmente solo come tipi di dati contenitore. Scoprirai continuamente nuove e più potenti tecniche che i modelli C ++ possono eseguire tramite meta-programmazione.

  • Scopri STL: usa le string, iostream, le eccezioni e le classi contenitore e preferiscile sui tipi di dati char *, FILE * e char [] di livello inferiore, quando possibile.

  • Inizia a utilizzare parti della libreria Boost - ti consiglierei di imparare prima la libreria di asio e thread, dati i tuoi interessi . Si tratta di una sorgente di codice C ++ molto potente, open source e multipiattaforma che ti permetterà di scrivere codice di alta qualità che è anche portatile. (Molte aggiunte allo standard core C ++ hanno avuto origine nei contributi Boost)

  • Buon divertimento! Seriamente, scegli alcuni progetti per animali da codificare. Forse armeggiare con le schede Arduino se ti piacciono i progetti di programmazione incorporati.

  • Ottieni un po 'di esperienza - se hai usato solo Windows / Visual Studio C ++, prova a scrivere del codice per Linux / g ++ o OS X / XCode (puoi codificare C ++ sul Mac, oppure puoi allarga davvero i tuoi orizzonti e vai su Objective-C, per vedere come un altro ramo delle lingue OOP affronta le cose!)

risposta data 13.05.2011 - 16:05
fonte

Leggi altre domande sui tag