PDA

View Full Version : Imparare il C++


Codename87
13-07-2004, 22:31
Devo imparare a tutti i costi il C++, qualcuno sà dove posso trovare delle ottime guide o dei tutorials?
Oppure c'è qualcuno disponibile ad insegnarmelo? :D

Più o meno sò il Pascal...non sò quanto sia d'aiuto...

Il mio fine sarebbe quello di programmare videogiochi o robe simili, ma sò che per arrivare a quei livelli ce ne vuole di tempo...
Grazie e ciao! ;)

end.is.forever
14-07-2004, 00:26
Beh, tutto di pende da dove ti trovi, che conoscenza hai del pascal.

Io ti consiglio, se hai una conoscenza non troppo elevata in pascal, di partire dal c e andare per passi; già nel c ci sono un bel po di cose da imparare rispetto alla programmazione procedurale di pascal, ma più che altro per abituarti alla sintassi del c e all'uso dei vari tool Microsoft e non.

Se poi non conosci ancora i puntatori, allora te lo consiglio ancora più caldamente.

Un secondo passo potrebbe essere poi quello di imparare un linguaggio object oriented o object based, principalmente java o c++, dei due java è più semplice ed è il più diffuso nel mondo del software "non ludico".

E' una piattaforma che ti garantisce che i tuoi programmi gireranno allo stesso modo su qualunque macchina con installato java; è molto intuitivo e permette di vedere risultati da subito.

Per i giochi si usa invece più c++, perchè essendo più vecchio si trovano più librerie già fatte e poi perchè ci sono le directx che semplificano molto la vita.
Per il programmatore, però, soprattutto in ambito windows, c'è un po più da imparare rispetto alla semplice sintassi, dato che, a meno che tu non voglia fare giochi per dos, dovrai imparare le MFC oppure direttamente le api Win32; io ti consiglio le prime perchè sono più chiare, e ormai Win32 non si usa quasi più.

Poi se avrai ancora voglia di continuare c'è il .NET, con il quale già ora si iniziano a vedere i primi giochi, e che dall'uscita di Longhorn diventerà il più utilizzato.

Per quanto riguarda i libri non ti so consigliare, io ho imparato da autodidatta o da qualche corso qua e la, ma se hai un p2p penso non farai fatica a trovarne :D

Ciao.

disumano
14-07-2004, 00:48
io ho imparato C++ da uno di quei libretti gialli "for dummies" della Apogeo, credo.
non sarà la bibbia del C++, ma mi ha fatto ben entrare nel cranio tutta la sintassi del linguaggio, compresi classi, ereditarietà, puntatori, template e ca@@ate varie.
secondo me puoi partire da lì (io ci ho fatto 2 esami di C+ all'università:D ) e poi passare a qualche cosa di massiccio come i libroni di Eckel e compagnia cantando (col p2p se ne trovano abbastanza:nonio: ).

Ziosilvio
14-07-2004, 09:27
Parti dal C.
Poi scegli che tipo di giochi vuoi programmare (maxi bestie in 3D o cose più semplici) e lì scegli tra C++ e Java.

Per il C, trovi un sacco di cose sulla pagina Web di Steve Summit (http://www.eskimo.com/~scs/).
Per C++ e Java, i testi di Bruce Eckel si possono scaricare dal suo sito (http://www.mindview.net/), anche se magari non nell'ultimissima versione.

Per tutti e tre i linguaggi esistono degli ottimi manuali (autori: Deitel&Deitel) editi da Apogeo.
I testi di riferimento, comunque, sono:
- per il C: B. Kernighan, D. Ritchie, "Linguaggio C --- Seconda edizione" (detto anche "il K&R");
- per il C++: B. Stroustrup, "C++ --- Linguaggio, libreria standard, principi di programmazione";
- per Java: J. Gosling et al., "Java --- Manuale ufficiale"
tutti pubblicati da Pearson Education Italia.

cionci
14-07-2004, 09:36
Originariamente inviato da Ziosilvio
Poi scegli che tipo di giochi vuoi programmare (maxi bestie in 3D o cose più semplici) e lì scegli tra C++ e Java.
Dai...Java per i giochi !?!?!? Ma neanche se facessi uno sparatutto 2D... Al max ci puoi fare snake !!!!

cionci
14-07-2004, 09:42
Il primo volume di Eckel c'è anche in italiano: http://pensareincpp.altervista.org/

ri
14-07-2004, 10:18
Originariamente inviato da cionci
Dai...Java per i giochi !?!?!? Ma neanche se facessi uno sparatutto 2D... Al max ci puoi fare snake !!!!

beh oddio... mica tanto... a me java sta sui maroni, però guarda qui (http://ea.pogo.com/rooms/roomtabs.jsp?game=ccstrike&site=eaga) (username: justatesthw pass: test)

cionci
14-07-2004, 10:34
Ok...era così per dire...ma se vuoi sfruttare un po' l'hardware che hai a disposizione non è certo Java il modo migliore...

ri
14-07-2004, 11:28
su questo non ci piove

Codename87
14-07-2004, 11:36
Mi interessa la programmazione sui videogiochi per un lavoro futuro ;)

Giochi in 3D, quelli massicci di adesso...

Però non sò da cosa partire :D

Che programma mi consigliate per programmare in C++?

Io ho scaricato Visual C++ Toolkit 2003 e Dev C++ 4.

Vedo se riesco a trovare qualche buon libro...
Penso che una volta entrato in questo mondo poi la voglia non mi mancherà per continuare ;)

cionci
14-07-2004, 11:41
L'importante è non pensare subito ai giochi, ma pensare ad imparare a prorammare in C++... Poi dopo verrà il momento di cominciare a pensare ai giochi ed a OpenGL...

end.is.forever
14-07-2004, 11:42
Se dite che Java ancora non ha delle api 3d ben sviluppate, su questo sono d'accordo.

Se invece dite che java sfrutta l'hardware peggio di c allora non sono d'accordo; Java attualmente è il linguaggio che permette il migliore sfruttamento di qualunque hardware; le ottimizzazioni che fa di base sono migliori di quelle di qualsiasi compilatore statico c/c++, senza parlare di quello che puoi ottenere ottimizzando la precompilazione con hotspots ecc...

.NET per ora gli sta dietro in quanto ad ottimizzazioni, ma in futuro data la grande mole di sviluppatori che Microsoft gli sta mettendo dietro, probabilmente lo supererà.

Per quanto riguarda il 3d quello è tutto un altro discorso, li purtroppo lo standard lo detta Microsoft e quindi le cose vanno a rilento, non c'è dubbio che come le directx non ci sia niente in Java, ma sicuramente se ci fosse sarebbe in futuro sicuramente migliore di quello fornito da linguaggi compilati.

Concludendo, se devi fare un gioco 3d ora lascia perdere Java, prendi un manuale di MFC, uno di DirectX 9 unmanaged e vai con quelli.
Se vuoi imparare un linguaggio, o meglio un concetto di programmazione che in futuro sarà lo standard incontrastato, orientati verso linguaggi non compilati o simili, quindi Java o .NET (dei due per i giochi ti consiglio il secondo).

Ciao.

end.is.forever
14-07-2004, 11:46
Originariamente inviato da Codename87

Però non sò da cosa partire :D

Che programma mi consigliate per programmare in C++?

Io ho scaricato Visual C++ Toolkit 2003 e Dev C++ 4.

Vedo se riesco a trovare qualche buon libro...
Penso che una volta entrato in questo mondo poi la voglia non mi mancherà per continuare ;)

Dev-cpp è ottimo, se però ti vuoi concedere tutti i lussi allora scegli Visual Studio.

Per quanto riguarda la voglia, dipende molto dalle persone, quelle che ci si divertono qualunque cosa si programmi di solito non si stancano, quelle che lo fanno solo per lavoro e non hanno interesse nell'arte di questo mestiere si rompono presto.

Ciao.

cionci
14-07-2004, 11:48
Originariamente inviato da end.is.forever
Se invece dite che java sfrutta l'hardware peggio di c allora non sono d'accordo; Java attualmente è il linguaggio che permette il migliore sfruttamento di qualunque hardware; le ottimizzazioni che fa di base sono migliori di quelle di qualsiasi compilatore statico c/c++, senza parlare di quello che puoi ottenere ottimizzando la precompilazione con hotspots ecc...
Per sfruttare...indendevo dal punto di vista prestazionale... Ma come fai a dire questo di un linguaggio che è interpretato ?!?!?? Vuoi comprare le prestazioni di un codice C che fa una qualsiasi operazione matematica con quelle del byte code che fa la stessa operazione ?

end.is.forever
14-07-2004, 11:55
Originariamente inviato da cionci
Per sfruttare...indendevo dal punto di vista prestazionale... Ma come fai a dire questo di un linguaggio che è interpretato ?!?!?? Vuoi comprare le prestazioni di un codice C che fa una qualsiasi operazione matematica con quelle del byte code che fa la stessa operazione ?

Parlo in termini generali.
Se scrivi uno sparatutto 3d in asm per il tuo processore su questo non ci piove che finchè lo fai girare sul tuo processore sarà il migliore del mondo.
Se quello che hai fatto vuoi che vada gia su un altro processore, le cose cambiano.

Quello che intendo dire è che le ottimizzazioni fatte da un linguaggio dinamico sono svolte dalla macchina virtuale o dal jit del computer dell'utente finale, e quindi saranno sempre migliori di quelle che hai fatto tu staticamente sul tuo computer.

Ognuno sfodera i benchmark che vuole ma secondo me in futuro non ci sarà confronto, Microsoft se n'è accorta e sta correndo ai ripari, e con buona probabilità riuscirà a monopolizzare un'altra volta il settore.

cionci
14-07-2004, 12:20
Originariamente inviato da end.is.forever
Quello che intendo dire è che le ottimizzazioni fatte da un linguaggio dinamico sono svolte dalla macchina virtuale o dal jit del computer dell'utente finale, e quindi saranno sempre migliori di quelle che hai fatto tu staticamente sul tuo computer.

Mah...questo è opinabile... Ci sono le librerie multipiattaforma apposta per questo... La maggior parte delle ottimizazzioni vengono fatte da chi compila le librerie...ed ecco che il tuo programma è ottimizzato e renderà prestazionalmente molto di più di un programma interpretato...

Ti parlo di SDL, Glut + OpenGL... Usando librerie del genre il porting del tuo programma diventa uno scherzo...

Codename87
14-07-2004, 12:26
Mà...vediamo che riesco a fare :D

end.is.forever
14-07-2004, 12:39
Codename scusa se siamo andati un po' ot comunque non ti preoccupare troppo di quale linguaggio usi.

L'importante è imparare i concetti, una volta imparati quelli per imparare un nuovo linguaggio ci metterai pochissimo :)

E l'importante è avere sempre la passione, se no diventa tutto una rottura :)

Milotto
14-07-2004, 14:27
Ma con un po di impegno è possibile imparare C/C++ senza conoscer altri linguaggi.....?

cionci
14-07-2004, 14:32
Certo, ma ti serve un ottimo libro... Lo Stroustrup certo non è per principianti...

Milotto
14-07-2004, 14:35
Originariamente inviato da cionci
Certo, ma ti serve un ottimo libro... Lo Stroustrup certo non è per principianti...

Puoi suggerirmene uno per principianti ? (Non fa differenza se cartaceo o e-book:l'importante è che sia buono ;) )
Grazie

cionci
14-07-2004, 14:41
Quello che ho linkato sopra è abbastanza buono, ma c'è di meglio in forma cartacea... Non sono molto esperto di libri, sicuramente qualcuno saprà consigliati meglio...

Milotto
14-07-2004, 15:07
Originariamente inviato da cionci
Quello che ho linkato sopra è abbastanza buono, ma c'è di meglio in forma cartacea... Non sono molto esperto di libri, sicuramente qualcuno saprà consigliati meglio...

Quello che hai linkato è relativo al C++ , o può essere utilizzato tranquillamente anche per il C?
Per quanto riguarda libri cartacei di qualità e per principianti aspetto vs info...
Grazie

cionci
14-07-2004, 15:21
Quello è per il C++, ma ti consiglio di partire con quello... Dopo per passare al C ti ci vogliono due giorni ed un manuale della libreria standard sotto mano...