Ciao, e benvenuto nella terza puntata della ventitreesima stagione. Nella scorsa puntata abbiamo capito che Go ottimizza per chi legge il codice, non per chi lo scrive. Oggi approfondiamo proprio questa scelta, perché ha delle conseguenze concrete e affascinanti su come si lavora con Go, e una in particolare è quasi rivoluzionaria: un modo per rendere tutto il codice uniforme e per porre fine, una volta per tutte, a certe eterne discussioni tra programmatori. Oggi parliamo di leggibilità e convenzioni, e del perché il codice uniforme e prevedibile sia un dono.
Partiamo da una verità che ogni programmatore esperto conosce e che è il fondamento di questa puntata: il codice viene letto molto più di quanto venga scritto. Quando lavori a un progetto, passi molto più tempo a leggere codice, tuo e di altri, che a scriverne di nuovo. Leggi per capire come funziona qualcosa, per trovare un errore, per modificare una parte, per orientarti. Ogni riga la scrivi una volta, ma la rileggi decine, centinaia di volte, per anni, tu e chiunque altro lavori sul progetto. Se questo è vero, allora rendere il codice facile da leggere è la cosa più importante di tutte, molto più che renderlo veloce o brillante da scrivere. Ed è esattamente ciò su cui Go punta tutto.
Vediamo come Go persegue la leggibilità, e la prima cosa è la semplicità della sintassi, che abbiamo già toccato. Go ha una sintassi minimale, pulita, con poche costruzioni. Non ci sono modi astrusi o densi di scrivere le cose: tutto tende a essere esplicito, disteso, chiaro. Ci può volere qualche riga in più rispetto a un linguaggio più conciso, ma quelle righe si leggono senza sforzo, senza dover decifrare simboli criptici o costruzioni ingegnose. È come la differenza tra una frase scritta in modo semplice e diretto, e una frase densa e contorta piena di sottintesi: la prima si capisce al volo, la seconda va decifrata. Go preferisce sempre la frase semplice e diretta.
Ma ora arriva la scelta più caratteristica e geniale di Go in fatto di leggibilità, quella che voglio farti apprezzare davvero: la formattazione automatica e uniforme del codice. Go viene con uno strumento che prende il tuo codice e lo riformatta automaticamente secondo uno stile unico, ufficiale, uguale per tutti. Non importa come tu abbia scritto e disposto il codice: lo strumento lo sistema nella forma canonica, quella che tutto il codice Go del mondo condivide. Il risultato è che tutto il codice Go, scritto da chiunque, ovunque, ha lo stesso identico aspetto: la stessa disposizione, gli stessi spazi, la stessa forma. Non esiste lo stile personale nella formattazione: c'è un solo stile, quello ufficiale, applicato automaticamente.
Voglio farti capire perché questa cosa, apparentemente piccola, sia in realtà rivoluzionaria, perché tocca un dolore antico. Tra i programmatori, per decenni, sono infuriate discussioni interminabili e feroci su questioni di stile: come disporre il codice, dove mettere gli spazi, come allineare le cose. Discussioni senza fine, senza una risposta giusta, che facevano perdere tempo ed energie e generavano attriti tra le persone. Go ha risolto tutto questo con un colpo di genio: ha semplicemente deciso uno stile ufficiale e lo ha reso automatico. Fine delle discussioni. Non c'è più nulla su cui litigare, perché lo stile è deciso e applicato dalla macchina, uguale per tutti. Ha eliminato un'intera categoria di dispute inutili rendendole prive di senso.
Voglio evidenziare il vantaggio profondo dell'uniformità, che va oltre la fine delle liti. Quando tutto il codice ha lo stesso aspetto, leggere il codice di un altro è facile come leggere il proprio, perché è disposto esattamente allo stesso modo. Non devi adattarti allo stile altrui, non ci sono sorprese visive: la forma è sempre quella, familiare. Questo abbassa enormemente la fatica di lavorare su codice altrui, di entrare in un progetto nuovo, di collaborare in grandi team. L'uniformità trasforma tutto il codice Go del mondo in un'unica lingua scritta allo stesso modo, che chiunque conosca Go può leggere senza attrito.
Voglio collegare questo a un tema profondo che abbiamo incontrato, perché è la stessa idea sotto forma nuova. Ricordi la stagione sull'Agile, e quanto contassero le persone, la collaborazione, il lavorare bene insieme in team? Le convenzioni uniformi di Go sono uno strumento tecnico al servizio proprio di quel valore umano: rendono la collaborazione più facile, riducono gli attriti, permettono a tante persone di lavorare sullo stesso codice senza pestarsi i piedi sullo stile. Go incarna, nel suo design, l'idea che il software lo fanno le persone insieme, e che vale la pena sacrificare un po' di libertà individuale per rendere il lavoro collettivo più fluido. È una scelta tecnica con un cuore profondamente umano.
Per oggi ci fermiamo qui. Go punta tutto sulla leggibilità, perché il codice si legge molto più di quanto si scriva. Lo fa con una sintassi semplice e distesa, che si capisce al volo, e soprattutto con la formattazione automatica e uniforme: uno strumento che dà a tutto il codice Go del mondo lo stesso identico aspetto, ponendo fine alle eterne discussioni sullo stile e rendendo il codice di chiunque facile da leggere come il proprio. È l'uniformità come dono per la collaborazione, uno strumento tecnico al servizio del valore umano del lavoro di squadra. Nella prossima puntata vediamo un'altra ossessione di Go: compilare in un lampo. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.