CITAZIONE (1S1K @ 24/11/2013, 05:19)
Quindi se parto dal C e riesco a studiarlo posso affrontare gli altri più facilmente essendo "complicato" come linguaggio?
In linea di massima diciamo di si. Nel senso che ci sono concetti che in altri linguaggi non interessano in quanto non sono direttamente controllabili. Ad esempio i puntatori. In C/C++ hai a disposizione i puntatori e puoi direttamente controllarli per puntare dove vuoi. In Java e C# ad esempio queste cose non ci sono; esistono i riferimenti (agli oggetti), che puntano ad un oggetto e quindi indirettamente sono dei puntatori, ma non puoi controllare nulla.
Il problema che potresti avere passando poi dal C a Java/C# è lo stile nella programmazione, o per meglio dire il paradigma di programmazione utilizzato. Ho conosciuto in passato ragazzi molto bravi con il C, che quando hanno provato a studiare la OOP (programmazione orientata agli oggetti) in Java l'hanno detestata.
Ma questo problema è del tutto normale... alla fine lo avresti anche se facessi il percorso contrario, anche se credo sia (almeno secondo me, poi dipende) più semplice in quanto la OOP ha degli schemi di ragionamento particolari, specie nella progettazione di un programma.
Quindi tenuti in considerazione questi parametri, potrei risponderti di Si, come ho detto all'inizio. Comunque puoi iniziare dal linguaggio che preferisci, che ti piace di più. Alla fine non c'è una regola da seguire... io però consiglio sempre di iniziare da un linguaggio con sintassi C-Like (Java, C, C#, C++). Se dai un occhio a Visual Basic .Net ti renderai conto che la sintassi è enormemente diversa.
CITAZIONE
So che i sistemi operativi, per lo meno la maggior parte sono scritti in C, dico bene?
Certo, il kernel di Linux è scritto in C ed alcune parti in C++.
Windows è scritto in C per la maggior parte, piccole parti in C++ e le parti che richiedono una velocità maggiore (precisamente il context switching) e le parti che comunicano con l'hardware.
Come dicevo il C è molto potente. Ma il C++ non è ovviamente da meno in quanto ha tutte le caratteristiche del C più molte "comodità" come le stringhe ed una libreria chiamata STL che mette a disposizione un sacco di classi utili.
CITAZIONE
Leggendo vecchie discussioni qui e su altri forum alcuni consigliano di abbinare allo studio della programmazione anche altro, visto che ho già un adeguata conoscenza hardware, è utile studiare in contemporanea elettronica e appunto programmazione?
Per elettronica intendo proprio circuiti, come funzionano, come crearli, come farli funzionare e simili.
Quando parli di conoscenza hardware che intendi?
Per quanto riguarda i circuiti in teoria non è utile ed in pratica nemmeno. Questo perchè conoscere transistor, diodi piuttosto che condensatori o oscillatori non ti cambierà nulla. Diversa è invece la conoscenza nel senso dell'architettura del PC e non dei circuiti stessi.
Ti consiglio di studiare ed applicare i concetti che studi piuttosto. Fai esercizi insomma.
Più avanti potrai studiare altro sempre in relazione alla programmazione, se ti piace. E' il caso ad esempio degli algoritmi.
CITAZIONE
So che il C è sempre quello, il libro che mi hai consigliato pone le basi o approfondisce?
Mah guarda, quella guida è scritta dal creatore del C. Non è lunghissima come vedi, contiene proprio l'essenziale. Parla sempre di concetti come i puntatori e le strutture... quindi tocca un po' tutto ciò che è C. Io te la consiglio comunque, poi se vuoi leggerti altro puoi farlo in seguito (molte cose poi le imparerai in seguito, utilizzandolo).
CITAZIONE
Non penso di sbagliarmi, il C è sempre quello giusto?
Non ha versioni come Java dico bene?
Si più o meno è come dici tu. Nel senso che esiste ad esempio C99 che introduce nuove cose. Tuttavia molti compilatori di permettono di compilare per il C classico (normale) o per C99 specificandolo al momento della compilazione.
Una di quelle introdotte è ad esempio la possibilità di dichiarare una variabile ed iniziarla come parte "inizializzazione" di un for. Il for in C è questo:
CODICE
int i;
for(i=0; i<n; i++) {
}
In C99 si può scrivere direttamente:
CODICE
for(int i=0; i<n; i++) {
}
Comunque basati pure sulla guida che ti ho linkato al momento. Anche perchè è gratuita.
PS: scusa se tendo a scrivere molto quando rispondo...