Com\’è dura la professione!

1 novembre 2007

Fabbriche di codice

Filed under: letture,Programmazione — lbell @ 21:08
Tags: , , ,

Ho iniziato a sfogliare le prime pagine di “Beautiful Code”, un libro formato da un collezione di riflessioni di programmatori di prima classe su vari problemi di software design (a proposito, perché tra gli autori non ci sono anch’io?).
La prima riflessione è su di un motore di matching di espressioni regolari ed è firmata da sua Maestà Brian Kernighan a proposito di un pezzo di codice scritto da Rob Pike nel linguaggio degli Dei, in C. Dieci pagine per parlare di un programma di trenta righe non stupiscono, ogni riga di codice corrisponde ad una decisione di cui si deve rendere conto.
Scorrendo il codice incluso, spicca questa riga:

} while(*text != '' && (*text++ == c || c == '.' ));

in cui ritrovo tutta l’espressività del C e praticamente tutto quello che viene sconsigliato di mettere in pratica nei libri degli esperti di programmazione.
É strano notare che quello che viene considerato un capolavoro di sintesi ed espressività sia considerato dannoso nella pratica dell’industria, ed una delle ragioni dell’abbandono di un linguaggio tanto potente verso i più controllabili Java e C#.
Cosa c’è di tanto sbagliato? Un postincremento in una espressione di confronto e una dipendenza del risultato finale dall’ordine dei test, il che non è affatto chiaro a chi deve leggere il codice per la prima volta, se non ha molta esperienza.
Un modo migliore di svolgere lo stesso compito sarebbe di creare una variabile booleana prima del while, e spezzare il test su più righe esplicitando test ed operazioni.
La professione del programmatore è uscita da tempo dall’artigianato per entrare nell’era della produzione industriale in cui le differenze di stile e le soluzioni ‘brillanti’ di questo tipo, che escono dai canoni delle convenzioni sono viste con sospetto.

Blog su WordPress.com.