← Tutti gli episodi
Copertina di Gli spazi che contano: la leggibilità forzata
Stagione 26 · Episodio 003

Gli spazi che contano: la leggibilità forzata

1 settembre 2026 5:32
0:00 5:32

Ciao, e benvenuto nella terza puntata della ventiseiesima stagione. Nelle scorse puntate abbiamo capito la filosofia della leggibilità di Python. Oggi vediamo come questa filosofia si traduce nella scelta tecnica più caratteristica, riconoscibile e discussa di tutto il linguaggio: usare gli spazi vuoti, il modo in cui il codice è disposto e rientrato, come parte essenziale del linguaggio stesso. È una scelta che rende la leggibilità non facoltativa, ma obbligatoria, e che divide le opinioni. Oggi capiamo cos'è, perché è geniale, e perché fa discutere.

Partiamo dal problema che questa scelta risolve, perché è reale. In quasi tutti i linguaggi, il modo in cui disponi visivamente il codice, i rientri, gli spazi che usi per mostrare la struttura, è puramente decorativo: lo fai per rendere il codice più leggibile a te e agli altri, ma il linguaggio non se ne cura, non gli importa. La struttura vera del codice, cosa sta dentro cosa, è indicata da altri simboli, e la disposizione visiva è solo un aiuto estetico. Il problema è che, essendo decorativa, la disposizione può mentire: puoi disporre il codice in un modo che suggerisce una struttura, mentre in realtà ne ha un'altra, ingannando chi legge.

Ed ecco la scelta radicale di Python, che voglio farti afferrare bene. In Python, il modo in cui disponi il codice, il rientro, non è decorativo: è la struttura stessa. Il linguaggio guarda a come hai rientrato le righe per capire cosa sta dentro cosa. Se una parte di codice è più rientrata, allora sta dentro quella sopra; se torni indietro col rientro, esci da quella parte. La disposizione visiva e la struttura reale non sono più due cose separate: sono la stessa cosa. Come vedi il codice disposto sulla pagina è esattamente come il codice è fatto. Il rientro non abbellisce la struttura: il rientro è la struttura.

Voglio farti capire perché questa idea sia geniale, perché realizza la filosofia in modo profondo. In Python, siccome la disposizione è la struttura, il codice è costretto a essere disposto in modo chiaro e ordinato, sempre. Non puoi disporlo male, perché la disposizione conta davvero. E la disposizione non può mai mentire, perché coincide con la struttura reale: ciò che vedi è ciò che è. Così Python ottiene, per forza, ciò che gli altri linguaggi ottengono solo per buona volontà: un codice sempre disposto chiaramente, in cui l'aspetto visivo rispecchia sempre fedelmente ciò che il codice fa davvero. La leggibilità non è più lasciata alla disciplina del programmatore: è garantita dal linguaggio stesso. È la filosofia della leggibilità resa obbligatoria dalla tecnica.

Voglio collegare questo a una scelta simile che abbiamo visto, perché il parallelo è illuminante. Ricordi Go, e la sua formattazione automatica e uniforme, che dava a tutto il codice lo stesso aspetto ordinato? C'è un cugino di quell'idea qui. Go rende uniforme l'aspetto con uno strumento automatico; Python rende obbligatoria la disposizione chiara facendola contare nel linguaggio. Sono due strade diverse verso lo stesso obiettivo profondo: garantire la leggibilità invece di sperare che il programmatore la curi. Entrambi i linguaggi, ciascuno a modo suo, hanno deciso che la chiarezza del codice è troppo importante per lasciarla al caso, e l'hanno resa, in un modo o nell'altro, non facoltativa. È un valore condiviso, realizzato in modi diversi.

Devo però essere onesto: questa scelta di Python è controversa, e divide le opinioni, quindi voglio darti entrambi i lati. Chi la ama dice: è geniale, perché garantisce codice sempre chiaro, elimina un'intera categoria di confusione, e rende inutili certi simboli ingombranti che altri linguaggi usano per la struttura. Chi la critica dice: è fastidioso essere costretti, il fatto che degli spazi invisibili contino può creare errori sottili e insidiosi, e toglie libertà al programmatore. Entrambe le posizioni hanno le loro ragioni: è davvero una questione di gusti e di compromessi, tra la garanzia di chiarezza da un lato e la costrizione e la delicatezza degli spazi invisibili dall'altro. Non c'è un giusto assoluto: c'è una scelta di valori, coerente con la filosofia di Python.

Voglio chiudere ricollegando questa scelta al carattere profondo di Python, perché la riassume. Che tu la ami o la critichi, questa scelta è il simbolo più chiaro di cosa sia Python: un linguaggio disposto a fare scelte forti, anche impopolari, pur di mettere la leggibilità al primo posto. Ha deciso che la chiarezza del codice valesse più della libertà di disporlo come si vuole, e ha reso la buona disposizione parte obbligatoria del linguaggio. È coerenza pura: se credi davvero che la leggibilità venga prima di tutto, allora la rendi obbligatoria, non facoltativa. Gli spazi che contano sono la filosofia di Python resa visibile, letteralmente, in ogni riga di codice.

Per oggi ci fermiamo qui. La scelta tecnica più caratteristica di Python è usare la disposizione del codice, il rientro, come struttura vera del linguaggio, non come semplice decorazione. Così la disposizione non può mentire e il codice è sempre disposto chiaramente: la leggibilità non è lasciata alla buona volontà, ma garantita dalla tecnica. È un cugino della formattazione uniforme di Go: due strade diverse per garantire la chiarezza invece di sperarci. È una scelta controversa, che divide tra chi apprezza la garanzia di chiarezza e chi mal sopporta la costrizione. Ma è coerenza pura: la filosofia della leggibilità resa obbligatoria. Nella prossima puntata vediamo perché Python è finito ovunque: il coltellino tuttofare. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.