Inside C by Giuseppe Di Cataldo
Italian | 28 Jul. 2017 | ISBN: 1521964882 | ASIN: B074D25KHV | 248 Pages | AZW3 | 867.31 KB
Italian | 28 Jul. 2017 | ISBN: 1521964882 | ASIN: B074D25KHV | 248 Pages | AZW3 | 867.31 KB
Questo libro ha la stessa impostazione pratica del precedente “Stack Frames: A look from inside” in cui il lettore può trovare utili informazioni su molti dei temi trattati qui. Concentrandosi sugli argomenti principali, esamina dettagli di implementazione che spesso sfuggono, o non interessano, agli studenti nel loro primo approccio col linguaggio.
Il libro è dunque indirizzato principalmente a tutti coloro i quali, avendo già imparato il C, desiderano approfondirne la conoscenza osservando come il codice sorgente viene implementato dai compilatori. Si tratta di esaminare il linguaggio da una differente angolazione; in altre parole: uno sguardo verso il basso. È un'occasione per esplorare un mondo tanto misterioso quanto affascinante, la cui rilevanza è spesso sottovalutata. L'Autore è sempre stato un convinto sostenitore della validità dell'insegnamento del linguaggio assembly come utile background culturale di ogni buon programmatore C.
Il C e l'assembly sono così simili che neppure per un principiante è uno sforzo eccessivo confrontarne i codici. Sotto il C infatti c'è un solo linguaggio: l'assembly di una specifica CPU. La fatica di guardare il codice assembly di un programma e confrontarlo col sorgente C è ampiamente ripagata dalla conoscenza di come il computer lavora e dalla possibilità di ottimizzare quelle porzioni di codice responsabili di rallentare l'eseguibile, assumendo di aver già scelto l'algoritmo più efficace e le opzioni di ottimizzazione più adatte.
Ma non si può scendere nel dettaglio senza dover rinunciare a qualcosa; dato che esistono più architetture, linguaggi assembly e compilatori, è necessario fare delle scelte. L'ambiente di lavoro sarà un sistema operativo GNU installato su un personal computer con processore x86 a 64 bit. Gli strumenti di lavoro saranno i compilatori gcc, clang e il debugger gdb. Il lettore può anche usare un compilatore online, per esempio rextester (http://rextester.com/) che permette di scrivere, compilare ed eseguire programmi usando più compilatori e linguaggi (fra cui C ed assembly). Esistono anche siti (fra cui https://godbolt.org/) che permettono di generare codice assemby e visualizzarlo con sintassi AT&T oppure Intel.
Un'altra differenza rispetto ai tradizionali libri di C è il carattere discorsivo del testo: pochi capitoli che coprono i temi più importanti del linguaggio e, spesso, lunghi paragrafi poveri di dettagliate definizioni ma ricchi di esempi e prove che il lettore è invitato a ripetere sul proprio sistema operativo, confrontandone i risultati. Non mancano domande ed esercizi utili per verificare la propria preparazione.
Se il lettore non ha mai studiato C ed assembly non si scoraggi: tutte le istruzioni sono sufficientemente commentate e accompagnate da immagini e spiegazioni dettagliate per affrontare con profitto la lettura di questo libro. L'unico requisito necessario è il desiderio di apprendere.