Una delle caratteristiche di qualità del codice di un programma è la sua
leggibilità. Esistono diverse linee guida per la scrittura di codice leggibile e comprensibile, e i punti condivisi sono più o meno gli stessi: nomi di variabili e di classi significativi, convenzioni grafiche per nomi composti, utilizzo di blocchi di codice brevi e concisi, indentazione, ecc. Alcuni sostenitori delle
metodologie agili sostengono addirittura che un codice scritto bene non deve aver bisogno di commenti.
Il
vantaggio di un codice leggibile sta in una maggiore garanzia di
manutenibilità, soprattutto quando questo deve essere modificato da una persona diversa da chi l'ha scritto. Tuttavia, se il requisito di leggibilità è auspicabile per il codice scritto dallo sviluppatore, non dovrebbe valere lo stesso principio anche per i linguaggi di programmazione?
Alfred Thompson fa notare, in un suo recente
post, che sembra esserci in atto una sorta di
regressione nel grado di leggibilità offerto dai linguaggi di programmazione: mentre i linguaggi di vecchia generazione, come COBOL e BASIC, erano molto verbosi (e in alcuni casi forse un po' troppo), i linguaggi più recenti tendono a essere abbastanza criptici, come mostra la
tabella comparativa tra PHP, Python, Perl e Ruby di
Hyperpolyglot.
Espressioni come
7 ~~ @a in Perl o
!$a in PHP sono leggibili ai soli addetti ai lavori; difficilmente un programmatore abituato a utilizzare un altro linguaggio può immaginare cosa vogliano indicare. Anche l'uso, abbastanza consolidato in vari linguaggi, di operatori come
&& e
! risulta discutibile: perché non utilizzare i più leggibili
And e
Not?
Come se non bastasse, alle strutture criptiche proprie del linguaggio di programmazione talvolta si aggiungono i
virtuosismi di alcuni programmatori, che condensano in pochi caratteri quello che altri fanno in alcune righe. E' per esempio il caso mutuato da un utilizzo intensivo di assegnamenti con incremento o decremento tipiche del linguaggio C, eventualmente utilizzati in combinazione con altri costrutti, come le espressioni condizionali; oppure le chiamate di funzioni annidate e composte a vari livelli. Il risultato della combinazione della scarsa leggibilità dei costrutti di un linguaggio di programmazione e della fantasia del programmatore può essere un codice accessibile a un gruppo ristretto di iniziati.
Se si vuole che gli sviluppatori scrivano codice leggibile, i linguaggi di programmazione dovrebbero fare un primo passo: un linguaggio di programmazione dovrebbe fare da stimolo a produrre codice altamente leggibile e non andare nella direzione opposta.