Quali sono buone risorse per imparare il C?
0. Programma in C, non importa quanto sia spaventoso. Il modo migliore per costringerti a programmare in C è quello di far girare Linux o BSD sul tuo desktop: ad un certo punto, sarai praticamente costretto a compilare pacchetti e modificarli per farli funzionare. Sarete costretti ad usare gdb, strace ecc... Imparerete a lavorare con make/auto-tools (convenientemente, questa abilità da sola significa che potete ottenere un lavoro di "trasporto dell'acqua" nella maggior parte delle aziende tecnologiche che usano C o C++ in un ambiente UNIX). Scrivere applicazioni, contribuire a progetti open source.
Questa è la cosa più importante da tenere a mente non è leggere questi libri, ma lavorare attraverso di essi.
1. Il libro K&R è un must. Lavorateci sopra.
2. Il C Primer Plus è un buon complemento al libro K&R.
3. Una volta che conoscete il linguaggio, dovete imparare a risolvere i problemi con esso. È imperativo capire come implementare e usare le strutture dati e gli algoritmi chiave. Per questo i libri chiave sono:
"C Interfaces and Implementations," http://sites.google.com/site/cinterfacesimplementations/ (uno dei miei libri di programmazione preferiti di sempre)
"Mastering Algorithms with C," http://oreilly.com/catalog/9781565924536
"Datastructures: a pseudo code approach using C," http://www.amazon.com/Data-Structures-Pseudocode-Approach-C/dp/0534390803/ (un altro grande libro, ho imparato da esso. Facilmente disponibile usato)
4. Se sei interessato a contribuire a progetti open source non banali o a lavorare a tempo pieno in C, lavora attraverso Richard Stevens' Advanced Programming in UNIX Environment e UNIX Network Programming. Queste informazioni saranno anche molto utili se sceglierete di fare programmazione di rete o IPC in linguaggi di livello superiore, poiché il modello di programmazione BSD Socket e SysV IPC/shm sono (rispettivamente) i gold standard nei loro domini individuali.