Oppure

Loading
25/04/10 19:42
munkaka
ciao
mi sto ponendo una seria domanda, mi vale la pena continuare a studiare il c++?
Ho sentito dire piu volte che non vale piu la pena imparare bene il c++ ma piuttosto java, c# o altri, perchè?
Io non studio informatica ma matematica e a scuola ci hanno insegnato il c++, abbiamo fatto ereditarietà, polimorfismo, template, sdl, opengl e adesso non so se comprarmi un libro ben approfondito, tipo C++ Programming Language, e imparare veramente bene il c++ oppure lasciar perdere e cominciare un altro linguaggio. Non essendo studente in informatica non ho molto tempo per imparare svariati linguaggi quindi è meglio che mi concentri su uno in particolare, però non so cosa scegliere, voi credete che sia meglio approfondire il c++ o impararne un'altro da capo? Comunque il c++ mi sembra un linguaggio abbastanza potente no? perchè non viene piu consigliato?
PS: per consigliare il linguaggio non date importanza al fatto che magari un linguaggio sia piu richiesto che altri perchè l'informatica non sara il mio lavoro ma un hobby

edit by netarrow: tolto il ? dal titolo che crea problemi
Ultima modifica effettuata da netarrow 25/04/10 22:09
aaa
26/04/10 10:02
eddiewrc
una volta che sai programmare in un linguaggio (serio) sai programmare in tutti gli altri.
le strutture sono concettualmente le stesso.
aaa
26/04/10 18:28
TheKaneB
Postato originariamente da eddiewrc:

una volta che sai programmare in un linguaggio (serio) sai programmare in tutti gli altri.
le strutture sono concettualmente le stesso.


quoto eddie, e aggiungo che, dato che il tuo è un semplice hobby, il C++ è un buona scelta, perchè ti consente di leggere gran parte del vecchio software open source esistente e modificarlo, magari approfondendo anche il C.

Non esiste una scelta altrettanto vasta di programmi open source in Java, peggio ancora in C#, perchè sono linguaggi più giovani e generalmente vengono più usati in ambito web enterprise e software gestionali, due ambiti molto professionali (da cui la grande richiesta di programmatori C# e Java) che lasciano poco spazio all'hobbista e all'open source.

Linguaggi tipicamente usati dagli hobbisti sono, invece, C/C++, Visual Basic.Net (te lo sconsiglio, troppo astratto per i miei gusti), Python (linguaggio elegante e piacevole da imparare). Se ti viene il pallino potresti anche imparare qualche forma di Assembly.

In campo lavorativo ormai l'assembly viene soltanto usato (in realtà pochissimo, perchè affiancato da C, Ada e Pascal) da chi scrive firmware per microcontrollori, compilatori e sistemi operativi. Però, se la programmazione per te è puramente un hobby, troverai davvero divertente ed estremamente formativo scoprire come funziona una CPU a basso livello, soprattutto se ti concentri su una CPU RISC (tipicamente più eleganti e piacevoli da programmare) come ARM, MIPS, PowerPC, SPARC, ecc...

aaa
26/04/10 20:27
munkaka
grazie per il consiglio, ho deciso di approfondire il c++ e poi piu tardi magari farò un po di c, tralatro vorrei chiedere che vantaggi ha il c rispetto al c++ oltre al fatto di essere piu veloce?
riguardo all assembly avevo trovato una bella guida, un po lunga pero (piu di 1000 pg), e avevo iniziato a leggerla però non ho programmato niente, non avevo ancora finito il capitolo che introduce all architettura del pc. Cmq mi chiedevo, per processori diversi il codice cambia? Io per esempio ho un Intel Core 2 Duo, cambia molto rispetto ai processori piu vecchi? Nella guida parlano di alcuni modelli di processori ma il piu recente è il pentium III, quindi mi chiedevo se posso basarmi su questa guida o è troppo vecchia. I computer che ho sono intel, sono processori CISC vero?
aaa
26/04/10 22:15
TheKaneB
Il C non offre particolari vantaggi, anzi... viene usato solo su dispositivi con poca memoria e con CPU lente, per questioni più che altro legate al runtime environment, che non al programma in sè. Il C++ richiede la gestione delle exceptions, ad esempio, la quale può avvenire solo con la presenza di un sistema operativo (cosa non sempre presente su piccoli microcontrollori, o dentro gli strati più interni di un kernel). Inoltre il C++ ha le classi virtuali che richiedono un piccolissimo overhead, che possiamo trascurare sui PC, però fa qualche apprezzabile differenza su vecchie architetture o su microcontroller.

Per quanto riguarda il discorso dell'Assembly, questo cambia in base alla cosiddetta ISA del processore.

attualmente i Core 2 Duo implementano ben 3 ISA diverse:

- vecchia ISA a 16 bit (dall'8086 fino all'80286)
- IA-32 a 32 bit (dal 386 in poi)
- AMD64 / EM64T a 64 bit (dall'Athlon64 in poi, per AMD; dal Pentium 4 6xx e Pentium D in poi, per Intel)

mentre il Pentium 3 implementa solo le prime 2.

Se ti attieni all'ISA principale, senza usare istruzioni "estese" (quali ad esempio MMX, 3DNow!, SSE, ecc...) puoi tranquillamente creare programmi compatibili con tutti i processori della linea.

Se invece usi le estensioni, ad esempio SSE3 per citarne una, quel programma girerà soltanto sulle CPU che implementano quella particolare estensione.

Un'importante eccezione è data dalle istruzioni della FPU (Floating-point Processing Unit): nonostante le prime CPU non avessero la FPU interna, ma questa era opzionalmente montata sulla motherboard in un chip separato, le istruzioni di FPU sono sempre emulate dall'OS oppure dal firmware (chiamalo pure BIOS se vuoi) della macchina. Quindi nel caso, ad esempio, di un 386 senza FPU, verrà generata un'interruzione quando incontra un'istruzione dell'FPU, questa interruzione verrà gestita dall'OS tramite una opportuna routine che esegue il calcolo in software.
aaa
27/04/10 17:31
munkaka
ok adesso ho capito, appena finisco il semestre a avro piu tempo mi dedicherò al c++ e assembly
grazie mille per le risposte, mi hanno chiarito le idee
aaa
30/04/10 16:35
Ale96
Visto che vuoi programmare per hobby dovrai scegliere un certo tipo di programmi da poter fare (x es. Giochi, Antivirus, programmi di grafica, ecc.) è difficile trovare un linguaggio con cui si possa molto semplicemente fare proprio tutto (solo il binario permette questo, ma non credo sia così semplice da imparare!) quindi prova a leggere anche questa pagina
pierotofy.it/pages/guide_tutorials/Informatica/Il_miglior_linguaggio_di_programmazione/
aaa
30/04/10 18:49
TheKaneB
Postato originariamente da Ale96:

Visto che vuoi programmare per hobby dovrai scegliere un certo tipo di programmi da poter fare (x es. Giochi, Antivirus, programmi di grafica, ecc.) è difficile trovare un linguaggio con cui si possa molto semplicemente fare proprio tutto (solo il binario permette questo, ma non credo sia così semplice da imparare!) quindi prova a leggere anche questa pagina
pierotofy.it/pages/guide_tutorials/Informatica/Il_miglior_linguaggio_di_programmazione/


eh? *_* ti giuro... non ho capito che vuoi dire XD
aaa