Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Deep C, uno slide show per approfondire C e C++
Scritto da Davide Panceri il 18-10-2011 ore 10:39
Intel Cluster Studio XE
Si può usare SlideShare per condividere presentazioni e filmati più o meno specialistici, ma bisogna dire che un corposo slide show dal titolo "Deep C", assemblato da Olve Mauda, sembra meritare ben più di un'occhiata e andrebbe letto da cima a fondo. Vediamo sommariamente di cosa tratta. Si parte con un esempio di codice C molto breve e apparentemente innocuo, che diventa però pretesto e motivo per esporre concetti e distinzioni piuttosto importanti, che a volte possono rimanere in ombra.

Questo vale, ad esempio, per alcune sottili differenze tra i diversi standard C, che col passar del tempo si sono accumulati, e dei quali può essere opportuno tener conto quando si programma usando questo linguaggio. Alcuni risultati sorprendenti, o non univocamente interpretabili, potrebbero dipendere peraltro anche da scelte del compilatore oltre che del linguaggio, e anche di questo occorre tener conto.

L'esposizione degli argomenti in Deep C è realizzata attraverso un confronto immaginario tra due personaggi, uno maschile, non troppo preciso, che risponde un po' a naso, alle stesse domande che la protagonista femminile, invece, riesce a risolvere dimostrando conoscenza approfondita della materia. Quello che rende un dipendente, o un collega, competitivo e affidabile dunque sembra essere la competenza su alcuni (apparenti) dettagli, come dichiarazioni e definizioni, convenzioni di chiamata, ottimizzazione e conoscenza degli standard.

Qui finisce una prima parte della presentazione, che nel seguito riprende e approfondisce i cosiddetti sequence point, veri e propri punti nodali dove si pagano le conseguenze delle scelte effettuate in precedenza. E' vero che in alcuni casi vengono proposte delle forme espressive che i più eviterebbero, ma probabilmente è anche vero che non tutti sanno esattamente per quali motivi certe forme andrebbero evitate. Altri approfondimenti sono quelli relativi alla differenti architetture a 32 e 64 bit, dalle quali a volte non si può prescindere.

L'autore della presentazione tratta comunque altri argomenti più generali, come il model memory, oppure le ottimizzazioni, prima di concludere con una sintetica e riassuntiva slide relativa allo spirito del linguaggio C: fiducia nel programmatore e semplicità mi sembrano i due punti principali di queste informali specifiche.

Passando a C++, i nostri due personaggi si autovalutano quanto a conoscenza del linguaggio, e ovviamente il meno preparato dei due è quello che riceve (da se stesso) il punteggio più alto. L'autore di Deep C si tiene nel mezzo assegnandosi un sette, prima di partire con un problemino, relativo alle dimensioni di una struct con due campi di tipo int e char. Presto arrivano domande più imbarazzanti, come ad esempio se è possibile che una struct C++ abbia funzioni membro.

Dal momento che la mia autovalutazione in C++ è decisamente in fase calante, mi limiterò a qualche cenno sugli argomenti oggetto di indagine, che sono tra gli altri le differenze e somiglianze con C, l'inizializzazione degli oggetti, le classi, le convenzioni sintattiche, la regola dei tre. Le ultime slide si occupano appunto di alcuni di questi argomenti e del ciclo di vita degli oggetti.

L'ultima parte di questa corposa presentazione insiste sull'opportunità di tenersi sempre aggiornati, incontrando persone, discutendo dal vivo o via Internet, frequentando dei corsi e leggendo dei libri: la capacità e la volontà di imparare cose sempre nuove distingue un programmatore buono da uno mediocre, e sarebbe opportuno che in un gruppo di lavoro ci fosse un discreto numero di rappresentanti della prima specie. D'altra parte, lavorando in gruppo si imparano molte cose anche dai colleghi, sempre se si è capaci di essere recettivi e senza pregiudizi.

Al termine di Deep C vengono fornite alcune indicazioni bibliografiche: ACCU; Test-Driven Development for Embedded C di James Grenning; il vecchio testo "Expert C programming" di Peter van der Linden; infine, per quanto riguarda C++, "Effective C++" di Scott Meyers e C++ coding standards di Herb Sutter e Andrei Alexandrescu.
Precedente: JavaScript++, JavaScript con classi
Successiva: L'altra faccia degli hacker
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.28 secondi.