Qual è il modo migliore per passare da Java/C# a C++?


10

Nella mia università la maggior parte delle mie lezioni sono state in Java. Recentemente ho anche imparato C# (e l'ambiente Visual Studio) durante uno stage estivo. Ora sto prendendo una lezione introduttiva in Computer Graphics e il laureando che insegna alla classe ci preferisce usare C++ per accedere ai binding OpenGL tramite GLUT.

Qualcuno ha delle buone risorse su come effettuare una buona transizione da Java/C# a C++? Ovviamente i puntatori saranno un grosso problema, ma qualsiasi altra cosa dovrei cercare? Qualsiasi tutorial, guida, ecc. Sarebbe molto utile!

Grazie!

8

Sì, sono stato morso dallo stesso bug. L'università tendeva ad appoggiarsi su Java e quindi ti permetteva di scegliere la lingua con cui volevi lavorare durante i progetti.

Il modo migliore è quello di fare un salto. Inizia in piccolo, fai piccoli passi e solo cose di Google che ti confondono quando arrivi. Trova anche progetti che hanno rilasciato il loro codice sorgente. Guarda come strutturano i loro programmi. Fondamentalmente, solo armeggiare con i concetti. Ci sono molte informazioni sul web.

Rendilo divertente e prendi uno C++ game development book in modo che non diventi ansioso troppo rapidamente.

Ecco alcuni posti che ho trovato utile, mentre l'apprendimento

http://www.cprogramming.com/

http://www.wikipedia.com

http://www.cplusplus.com/


4

Se già conosci Java/C#, consiglierei di passare direttamente a C anziché a C++. Secondo il sito web, GLUT ha gli stessi binding per C come C++ quindi dovresti essere tutto pronto. Ad ogni modo, il modo migliore per imparare C è acquistare e leggere una copia di "The C Programming Language" e sedersi con il compilatore C e fare in modo che i tuoi contenuti vengano eseguiti.


2

Effective C++ di Scott Meyers è un ottimo libro per aiutarti ad imparare il C++. Offre una panoramica della lingua e introduce molti concetti chiave che verranno utilizzati durante lo sviluppo di praticamente qualsiasi programma C++.


2

Effective C++ da Scott Meyers è un grande libro per aiutarlo ad imparare C++. Offre una panoramica della lingua e introduce molti concetti chiave che verranno utilizzati durante lo sviluppo di praticamente qualsiasi programma C++.

Amo questo libro in tutte e 3 le edizioni, ed era uno dei libri di una classe che ho avuto come Senior in UT, ma non è solo un libro di partenza. Puoi sentirti a tuo agio in C++ con molto meno, anche se certamente non lo farai con il compilatore finché non avrai letto il lavoro di Meyer.

Non so se è ancora in stampa ma ho trovato Navigazione C++ utile, ma mi è stato molto comodo anche con i puntatori di Pascal. Ovviamente, sto dimenticando che 15 anni fa dovevi imparare cosa fosse OOP, ora è un po 'più scontato. Quindi forse Meyer non è fuori linea. Pensieri?


2

Wikipedia ha un articolo su comparisons between Java and C++.

Non devi preoccuparti delle eccezioni controllate in C++, ma devi sapere su const correctness.


2

Esistono due differenze principali: la sintassi e la gestione della memoria.

In C++ si hanno riferimenti a puntatori, che sono più potenti (o meno potenti in base alla propria interpretazione di potenza), che si conoscono già da Java.

In Java si potrebbe fare questo:

Thing mything = new Thing(); // mything is an object reference 
mything.method(); 

In C++ si dovrebbe fare questo:

Thing * mything = new Thing(); // mything is an object pointer 
mything->method(); 
delete mything; 

La differenza sintattica è evidente: '->' invece di '' quando si chiama un metodo oggetto da un puntatore a un oggetto. In C++, devi liberare la memoria esplicitamente quando hai finito con un oggetto. Alla fine della giornata stai facendo la stessa cosa in C++ e Java, istanziando oggetti e metodi di chiamata, mettendo il punto e virgola inutile alla fine di ogni riga, ecc. C'è da stupirsi che Python stia diventando così popolare ?:

mything = Thing() # mything is whatever I want it to be 
mything.method() 

Sfogliare qualsiasi testo C++ decente ti aiuterà a completare il resto dei dettagli.


2

Inoltre consiglio vivamente lo Thinking in C++ di Bruce Eckel. Un libro fantastico per programmatori già esperti che vogliono entrare nella mentalità C++.

È abbastanza gentile da rendere versioni elettroniche dei suoi libri available for free.


2

Consiglio vivamente che chiunque stia imparando C++ legge Stroustrups "Il linguaggio di programmazione C++". Meyers ed Eckel hanno grandi cose, ma non c'è niente di meglio che imparare dal ragazzo che ha deciso quale dovrebbe essere la lingua e come ha voluto che fosse usata.


2

Ho avuto lo stesso identico problema. L'unico libro che sono riuscito a trovare era "Pro Visual C++ 2005 for C# Developers" by Dean C. Wills. È una buona lettura con esempi eccellenti, e penso che l'angolo da cui proviene il libro sia probabilmente quello che stai cercando.


1

Avrete bisogno di una sensazione completamente diversa per la gestione della memoria. Pensa anche a liberare tutto ciò di cui non hai più bisogno. In Java e C# lasci andare i tuoi oggetti e la memoria si rassetta per te - non puoi farlo in CPP