C'è sempre stato un grosso dibattito circa lo stile di programmazione, indipendentemente dal linguaggio adottato. Lo stile raccoglie nozioni sintattiche e semantiche, ovvero come scrivere e allineare un pezzo di codice e come chiamare variabili, funzioni, e altri identificatori.
Tempo fa seguivo un thread ove mi sono permesso di esprimere un positivo commento sul linguaggio Python. Premetto che non sono un programmatore Python, ancora non riesco ad appassionarmi al linguaggio, forse perché il mio fidato compagno Perl riesce comunque a farmi svolgere gli stessi compiti. Ho comunque imparato le basi del linguaggio, proprio per sapere di cosa sto parlando quando si entra in discussione.
Ebbene un indubbio vantaggio di Python è l'indentazione basata sugli spazi. Eppure c'è ancora gente che trova questa cosa troppo rigida:
However, I've learned programming with languages where whitespace is throwaway and not having to bother about whitespace or indentation is more natural for me.
A prima vista il commento di cui sopra è piu' che ragionevole: dopotutto perché preoccuparsi di uno spazio di rroppo o di un'andata capo sbagliata? Ognuno di noi ha, inconsciamente, un proprio stile di programmazione, così come ha una propria calligrafia. E proprio come la calligrafia, anche lo stile di programmazione risulta molto influenzato dai primi insegnamenti e dagli esercizi fatti, ma non per questo risulta non-migliorabile.
Ora chiunque ritenga che un linguaggio libero nella formattazione possa essere migliore di uno rigido in tale aspetto è uno stupido (opinione ovviamente personale); analogamente lo è chi è pensa il vice-versa.
Il punto non è tanto la formattazione del codice, bensì lo stile: Python impone uno stile basato su spazi bianchi, mentre altri linguaggi non impongono tale stile. Ma di fatto per programmare in qualunque linguaggio occorre aderire ad uno stile. Non è solo una questione di sintassi, è una forma mentale.
Se si programma del codice con il proprio stile, altri programmatori potrebbero avere difficoltà nel leggere a manutenere tale codice. E se questo non rappresenta un problema per progetti "home-made", lo diventa per grossi progetti ove esistono precise regole di formattazione e di stile. La mancata applicazione di tali regole faranno si che il proprio codice sia escluso a priori, indipentemente da quanto possa essere efficace ed efficiente. L'esempio che sono solito fare è quello di un autore di libri: ogni libro deve avere una struttura che i lettori si aspettano, e quindi un indice, un titolo di capitolo, una numerazione di pagina, del testo formattato correttamente, un indice analitico, ecc. Se il libro non aderisce a tale struttura non significa che è illeggibile, ma semplicemente che la sua lettura potrebbe risultare deviata rispetto allo standard che i lettori si aspettano. Lo stesso vale per un pezzo di codice.
Il solo fatto di avere libertà di formattare il proprio codice come si vuole non significa che qualunque formattazione accettata da compilatore/preprocessore possa essere lecita. E quindi cosa succede? Si definiscono i suddetti stili. Cosa fa invece Python? Elimina in un certo senso il problema alla radice rimuovendo parte delle discussioni senza fine su dove piazzare parentesi ed andate a capo. E il solo fatto di aver rimosso tali discussioni gioca a favore del linguaggio.
Poi c'è l'aspetto creatività: molti sostengono che un linguaggio rigido nella formattazione impedisca o limiti la creatività del programmatore. Anche questo è falso: la creatività è insita nel processo, non solo nella sua implementazione. E' quindi l'algoritmo in primis che deve essere elaborato in modo creativo, non la sua implementazione.
Se la penso così come mai non sono ancora passato a Python? Dopotutto Perl è proprio l'anti-Python dal punto di vista della sintassi e dello stile. Ebbene, come già detto, non ho ancora trovato una sfida sufficientemente avvincente da farmi passare a Python. Tuttavia questo non significa che i miei programmi Perl siano offuscati, anzi, cero sempre in ogni programma di usare una sintassi coerente e chiara, aderendo il piu' possibile allo stile del contesto in cui mi trovo.
Nessun commento:
Posta un commento