... Impara il C++ e le DirectX. XNA o C# secondo voi cosa sono, oggetti magici dei desideri? Sono tool che si basano esattamente su C e DirectX. Quindi, a mio avviso, meglio imparare le basi che le sovrastrutture.Personalmente io ho imparato il C++ per iniziare, ma ormai sono passati 10 anni. Non so se sia il caso, perché potrebbe essere che imparare il C++ oggi sia come imparare l'asm 10 anni fa: un esercizio potenzialmente inutile. Lo stesso dicasi per le DX...Meglio imparare bene C# e XNA perché questo é il futuro.
A un certo punto peró bisogna smettere di frequentare il forum e iniziare a studiare: non c'é strada migliore che aprire il proprio IDE :shrug:
Hai ragione ma non ti danno ascolto, ho già provato a dirlo molte pagine fa.
Mi sembra si sta facendo un po' di confusione fra "imparare a programmare" e "programmare videogiochi".
Se uno vuole "imparare a programmare programmando videogiochi da autodidatta" consiglierei francamente linguaggi piu' ad alto livello, tipo python, almeno ci si diverte.
Per quanto riguarda "imparare a programmare" qui e' dura, ed ognuno ha il suo approccio. Lasciando perdere le guerre fra i linguaggi, il C++ e' in assoluto uno dei linguaggi procedurali piu' tosti e che richiede il maggior background informatico. Non so quanto verra' ancora usato nel futuro per i VG (per altri tipi di industria, vi posso assicurare, terra' botta almeno per altri 10 anni, forse molto di piu') ma ha un vantaggio sicuro: se lo impari bene qualunque altro linguaggio procedurale "commerciale" su cui metti le mani ti sembrerra' un giocattolo. Dopo anni di esperienza in C/C++ imparare il Java (per dirne una) e' questione di un pomeriggio (parlo del "linguaggio". Conoscere le librerie e' un'altra cosa, seppur fondamentale: ad esempio senza SWIG o come si chiama, probabilmente, e' come non conoscere per niente il Java). Invece se si impara a programmare senza sapere quale sia la differenza fra stack e heap si avranno delle GROSSE lacune. E' importate colmare queste lacune? Bhe' dipende. Forse nei VG no (non ho idea di come vengano fatte le produzioni tripla A) ma in qualunque altro ambito eccome...
Se fai un corso come ing. informatica queste basi te le danno e poi sei libero, in funzione del lavoro che cerchi, di specializzarti sul linguaggi o che vuoi. Un corso di informatica che non ti insegna l'aritmetica dei puntatori, per dirne una, sarebbe come un corso di matematica dove non ti insegnano lo studio delle funzioni perche' tanto ci sono le calcolatrici scientifiche.
Per quanto riguarda lo sviluppo dei VG in quanto industria... temo dovrai andare il piu' lontano possibile dall'italia. Se non vuoi allontanarti troppo mi sembra che Germania e UK offrano qualche possibilita'
Ultima modifica di Frinn; 23-07-10 alle 15:24:22
Io sinceramente non riesco a notare queste differenze tra il C++ e Java. Sono fondamentalmente simili, sono due linguaggi a oggetti, tutto qua. Con il C++ puoi avere controllo diretto ai puntatori, ma in Java i puntatori li usi in egual modo, dal momento che in Java tutti i tipi sono puntatori. Inoltre, l'aritmetica dei puntatori, secondo il mio libro di programmazione era una bad practice...Mi sembra si sta facendo un po' di confusione fra "imparare a programmare" e "programmare videogiochi".
Se uno vuole "imparare a programmare programmando videogiochi da autodidatta" consiglierei francamente linguaggi piu' ad alto livello, tipo python, almeno ci si diverte.
Per quanto riguarda "imparare a programmare" qui e' dura, ed ognuno ha il suo approccio. Lasciando perdere le guerre fra i linguaggi, il C++ e' in assoluto uno dei linguaggi procedurali piu' tosti e che richiede il maggior background informatico. Non so quanto verra' ancora usato nel futuro per i VG (per altri tipi di industria, vi posso assicurare, terra' botta almeno per altri 10 anni, forse molto di piu') ma ha un vantaggio sicuro: se lo impari bene qualunque altro linguaggio procedurale "commerciale" su cui metti le mani ti sembrerra' un giocattolo. Dopo anni di esperienza in C/C++ imparare il Java (per dirne una) e' questione di un pomeriggio (parlo del "linguaggio". Conoscere le librerie e' un'altra cosa, seppur fondamentale: ad esempio senza SWIG o come si chiama, probabilmente, e' come non conoscere per niente il Java). Invece se si impara a programmare senza sapere quale sia la differenza fra stack e heap si avranno delle GROSSE lacune. E' importate colmare queste lacune? Bhe' dipende. Forse nei VG no (non ho idea di come vengano fatte le produzioni tripla A) ma in qualunque altro ambito eccome...
Se fai un corso come ing. informatica queste basi te le danno e poi sei libero, in funzione del lavoro che cerchi, di specializzarti sul linguaggi o che vuoi. Un corso di informatica che non ti insegna l'aritmetica dei puntatori, per dirne una, sarebbe come un corso di matematica dove non ti insegnano lo studio delle funzioni perche' tanto ci sono le calcolatrici scientifiche.
Per quanto riguarda lo sviluppo dei VG in quanto industria... temo dovrai andare il piu' lontano possibile dall'italia. Se non vuoi allontanarti troppo mi sembra che Germania e UK offrano qualche possibilita'
Metafora più azzeccata non potevi trovareUn corso di informatica che non ti insegna l'aritmetica dei puntatori, per dirne una, sarebbe come un corso di matematica dove non ti insegnano lo studio delle funzioni perche' tanto ci sono le calcolatrici scientifiche.
Per dirne una il java ha "solo" la programmazione ad oggetti, non ha niente di simile ai template. Ok ha i generics ma non c'è assolutamente paragone: dai un'occhiata a libboost o a libri che spiegano la metaprogramamzione (la "bibbia" in questo senso è considerata questo libro qui: http://www.amazon.com/Template-Metap.../dp/0321227255) per capire cosa si sono persi con Java nel fare una scelta miope di quel tipo.
Si ma questo è già il punto di vista di uno che conosce entrambi i linguaggi Se parli con qualcuno che ha studiato solo Java e provi a spiegarli cosa è un puntatore lui ti dirà: "eh in Java non hai i puntatori, è più semplice" mentre, come fai notare giustamente tu, in Java hai di fatto SOLO puntatori. Capisci cosa voglio dire? Avendo tu studiato il C sai benissimo cosa è un puntatore. Chi ha studiato solo Java non è detto che lo sappia (ho conosciuto laureati in informatica che non lo sapessero, in effetti) e non si rende conto nemmeno di costa sta usando. Ti pare una cosa buona per un "tecnico"?Con il C++ puoi avere controllo diretto ai puntatori, ma in Java i puntatori li usi in egual modo, dal momento che in Java tutti i tipi sono puntatori.
In generale, usata per fare applicazioni moderne e complesse lo è, perché molto error prone. Viene ancora usata solo in ambiti dove l'efficienza è fondamentale o dove si è costretti ad usare il C puro: in molti sistemi embedded e ad esempio quando si lavora in kernel space (che io sappia ancora non ci esistono sistemi operativi scritti in C++ o altri linguaggi diversi da C e assembler).Inoltre, l'aritmetica dei puntatori, secondo il mio libro di programmazione era una bad practice...
Ma, di nuovo, un conto è sapere cosa sia l'aritmetica dei puntatori e sapere che è meglio non usarla per certi motivi, un conto è non sapere nemmeno di che si parla. E' una questione di background. Uno studio unversitario DEVE dare certe nozioni, anche solo per motivi storici (e, in questo caso, i motivi non sono storici, visto che il C puro è ancora usatissimo).
Bada bene che non sto dicendo che il C++ sia il linguaggio definitivo e che andrebbe usato solo quello (tutt'altro, il C++ è fondamentalmente un linguaggio di design e viene utilizzato soprattutto a livello di "framework"). Dico solo che, fra i suoi pregi, c'è anche quello di esser parecchio didattico in un corso universitario dove, volenti o nolenti, è importante studiare ed avere certe basi, altrimenti si rischia di non sapersi adattare alle evoluzioni dell'informatica.
Quoto, io comunque preferisco programmare in C++ e non in Java, mi sa che non si era capito! Anche Java ha i suoi aspetti positivi, però io preferisco il C++, ma in generale devo ammettere che tralasciando le prestazioni e i dettagli messi da te sul tavolo programmare in C++ o in Java è fondamentalmente la stessa cosa.
Anch'io sono d'accordo sul fatto che bisogna conoscere bene C++ e Directx.
Frinn, in cosa sei laureato? Informatica o ingegneria informatica (tranquilli, non ricomincio...)?
Mi sembri molto esperto di programmazione. Da quanto hai detto, conoscere l'aritmetica dei puntatori è importante (se non sbaglio, in questa discussione qualcuno aveva detto che è un argomento poco importante, che si studia soltanto alle superiori)...
Io l'aritmetica dei puntatori l'ho studiata all'università... chi la studia alle superiori??
Bò per me è importante conoscere i puntatori, poi l'aritmetica impari cosa è e la metti nel cassetto. Bad practice.
Perdona la pignoleria, hai fatto informatica o ingegneria informatica (è solo una curiosità)?
Informatica io.
Non esiste programmare un videogame in un linguaggio che non sia il c++.
Questo se stiamo parlando di videogame che hanno certi requisiti intendo.
Si l'hai detta, più che altro perchè lo sforzo non paga necessariamente. Diciamo che è perfettamente inutile scrivere un gioco in assembly, anche perchè non è che l'assembly è uguale da tutte le parti. Ogni architettura ha il suo set di funzioni, se scrivi assembly generico che va bene un pò dappertutto, tanto vale che scrivi in c++ e lasci l'onere al compilatore.
E' invece utile conoscerlo, l'assembly, in quanto per alcune operazioni si possono sfruttare delle caratteristiche dell'architettura sulla quale si sta programmando, in modo da poter dare un boost alle prestazioni.
Ma è assurdo, chi può mai programmare un gioco in assembly??? E' fuori di testa!Si l'hai detta, più che altro perchè lo sforzo non paga necessariamente. Diciamo che è perfettamente inutile scrivere un gioco in assembly, anche perchè non è che l'assembly è uguale da tutte le parti. Ogni architettura ha il suo set di funzioni, se scrivi assembly generico che va bene un pò dappertutto, tanto vale che scrivi in c++ e lasci l'onere al compilatore.
E' invece utile conoscerlo, l'assembly, in quanto per alcune operazioni si possono sfruttare delle caratteristiche dell'architettura sulla quale si sta programmando, in modo da poter dare un boost alle prestazioni.
rispondevo a toty_
E' anche assurdo pensare che l'aritmetica dei puntatori (uooooo paroloooone), te la insegnino esclusivamente in università eh..
Quoto Cherno su tutto quello che ha detto, i puntatori e ciò che li riguardano ogni perito informatico li ha studiati e l'assembly è utile in certe circostanze, ovvio che non si fanno più giochi esclusivamente in assembly ma ad esempio è molto usato negli shader.
I puntatori io li ho studiati alle superiori.
La grande cazzata è che nella mia università il primo anno ti insegnano java,e nel secondo c'è un piccolo corso(trimestrale) di C
Da noi no, il primo semestre si fa il C, nel secondo Java, poi al secondo anno si fa programmazione avanzata di C++ e Java.
Programmazione avanzata di c++ in cosa consiste?
Si si non è che sia così complessa, è che non pensavo fosse argomento contenuto in qualche corso alle superiori.
Da noi pure C++ a manetta il primo anno. Abbiamo anche visto e programmato qualcosina in assembly, visual basic, ma il primo anno vediamo solo il C++. Il secondo anno vediamo Java e studiamo programmazione avanzata, in genere applicandola con java sempre.
Bè tieni conto che il perito informatico, l'analista informatico(facoltà informatica) e l'ingengnere informatico(facoltà ingegneria informatica) sono 3 competenze diverse. Mediamente il perito è quello che dovrebbe sapere programmare più di tutti, quindi si i puntatori sono nel programma di informatica delle superiori
Non C++, ma proprio il C. Quando abbiamo iniziato il corso ho detto al mio docente "Io ho studiato C++ alle superiori" e lui mi ha risposto: "Dimenticalo, il primo anno fai il C, ed il secondo anno fai C++ e dimentica quello che ti hanno insegnato alle superiori". Infatti il 70% dei periti informatici non ha passato l'esame del modulo A di informatica
Ing informatica, nel 2005. Ma ho fatto anche un ITI alle superiori, specializzazione informatica
Per quanto riguarda la programmazione in se, è sempre stata un mio pallino e quindi l'ho approfondita e studiata anche oltre i corsi universitari. Anche la prima tesi di laurea (quella triennale, prima che iniziassi la specialistica) l'ho fatta su argomenti di quel tipo.
Col senno di poi devo dire che mi sento quasi più informatico che ingegnere informatico comuqnue
Non rinnego comunque il corso di laurea che ho fatto visto il focus dato su architettura dei calcolatori, reti logiche, sistemi operativi che sono un'altra parte che mi ha interessato moltissimo.
Le war informatica vs ing. informatica sinceramente lasciano il tempo che trovano. Indubbiamente ci sono differenze di approccio fra i due corsi ma dubito fortemente che, nella maggior parte (e non tutti eh) dei lavori, le due figure non siano intercambiabili. Nella mia esperienza credo che conti molto di più l'università che hai fatto (leggi: i prof che hai avuto) piuttosto che il corso in se. A volte si sente uno sparar cazzate e si dice: "eh allora è vero che quel corso di laurea non serve ad un cazzo" ed invece magari è semplicemente il prof di Fondamenti I che era un imbecille
(Questo NON vale per gli ingegneri gestionali: quelli sono degli incompetenti ovunque abbiano studiato ).
(E dai su che scherzo Fra l'altro anche noi ingegneri informatici siamo considerati mezze seghe dagli ing elettronici, tanto per dire eheh)
Ultima modifica di Frinn; 24-07-10 alle 13:42:08
Questo è quello che anno fatto quest'anno quelli del 2°anno, risulta C ma è C++, mi è stato confermato dai ragazzi.
http://app.amm.unibs.it/elearning/Co...tionins=moduli
EDIT: probabilmente la pagina non è aggiornata, mi han detto che le pagine di e-learning di alcuni corsi non cambiano da 5 anni a questa parte nonostante molti contenuti siano variati. Docenti che non hanno voglia di sbattersi ad aggiornare
RIEDIT: non garantisco niente, sapete anche voi come va l'università in itaglia, ogni anno cambiano disfano rimettono.
Ultima modifica di ZioYuri78; 24-07-10 alle 13:31:22