Ciao, e benvenuto nell'ottava puntata della ventinovesima stagione. Nelle scorse puntate abbiamo visto come il CSS descrive e adatta l'aspetto. Oggi affrontiamo una caratteristica del CSS che lo distingue nettamente dai linguaggi di programmazione che abbiamo raccontato, e che rivela una filosofia profonda: la sua tolleranza agli errori. Il CSS, quando incontra qualcosa che non capisce o che è sbagliato, non si blocca, non fa crollare tutto: semplicemente ignora quella cosa e va avanti. È fatto per perdonare, invece che per rompere. Oggi capiamo questa tolleranza, e perché è una scelta profonda e non un caso.
Partiamo dal contrasto con i linguaggi di programmazione, perché è netto e illuminante. Nei linguaggi di programmazione, di solito, un errore è una cosa seria: un errore nel codice può bloccare tutto il programma, farlo smettere di funzionare, mandarlo in crash. Un solo sbaglio, e l'intera cosa si ferma. È il mondo del tutto o niente: o è giusto, o si rompe. Il CSS funziona in modo completamente diverso, quasi opposto. Se in un foglio di stile c'è una regola sbagliata, o una che il browser non capisce, non succede il disastro: il browser semplicemente salta quella singola regola, la ignora, e continua ad applicare tutte le altre. La pagina viene mostrata comunque, magari senza quella singola regoletta, ma viene mostrata. Non crolla nulla.
Voglio farti apprezzare quanto sia sorprendente questa cosa per chi viene dalla programmazione. Immagina di scrivere cento regole di stile, e una è sbagliata o incomprensibile per il browser. Cosa succede? Le altre novantanove funzionano perfettamente, e solo quella sbagliata viene silenziosamente ignorata. Il browser non si arrabbia, non blocca la pagina: salta l'ostacolo e prosegue, applicando tutto il resto. Un errore in un punto non contamina il resto: resta un problema locale, circoscritto a quella singola regola, mentre tutto il resto continua a vivere. È una capacità di perdonare che i linguaggi di programmazione non hanno.
Voglio spiegarti perché questa tolleranza sia una scelta profonda e deliberata, non pigrizia, perché ha una ragione bellissima. Il web deve funzionare su una varietà enorme di browser: browser vecchi e nuovi, di diverse capacità, che capiscono cose diverse. Una regola di stile moderna, capita da un browser nuovo, potrebbe essere incomprensibile per uno vecchio. Se il CSS si bloccasse davanti a ciò che un browser non capisce, allora le pagine moderne si romperebbero su tutti i browser vecchi. Invece, grazie alla tolleranza, un browser vecchio semplicemente ignora le regole nuove che non capisce, e mostra la pagina come può, con ciò che capisce. La tolleranza permette al web di funzionare, in qualche misura, ovunque, anche dove non tutto è capito. È fatta per la varietà infinita del web.
Voglio farti apprezzare l'eleganza di questa filosofia, che si chiama degradare con grazia. L'idea è questa: invece di funzionare perfettamente o rompersi del tutto, il CSS punta a funzionare il meglio possibile in ogni situazione, degradando dolcemente quando qualcosa non è supportato. Un browser che capisce tutto mostra la pagina in tutto il suo splendore; un browser che capisce meno mostra una versione più semplice, ma comunque funzionante; nessuno vede una pagina rotta. Le cose non capite vengono saltate, e resta sempre qualcosa di usabile. Questo degradare con grazia, questo offrire sempre il meglio possibile invece di tutto o niente, è una filosofia elegante e generosa, pensata per un mondo imperfetto e variegato dove non si può dare nulla per scontato.
Voglio collegare questa tolleranza a un tema profondo del web. Ricordi, dalle stagioni sulla rete e sulla sicurezza, lo spirito di robustezza del web, l'essere generosi nell'accettare, il far funzionare le cose anche in condizioni imperfette? La tolleranza del CSS è un pezzo di questa filosofia: il web è costruito per essere robusto, per continuare a funzionare nonostante errori, incompatibilità e imperfezioni, invece di rompersi al primo intoppo. Il CSS che perdona invece di rompere incarna questo spirito: la resilienza, la capacità di reggere l'imperfezione. È una delle ragioni per cui il web è così robusto e universale.
Voglio darti una nota onesta, per chiudere. La tolleranza è preziosa, ma ha un lato scomodo: siccome il CSS ignora silenziosamente gli errori, un tuo errore può passare inosservato. Se scrivi una regola sbagliata, il browser non ti avvisa: la salta e basta, e tu potresti non accorgerti che qualcosa non funziona come volevi, perché non c'è stato nessun crash a segnalartelo. Il silenzio del perdono può nascondere gli sbagli. Ma è un piccolo prezzo per un grande dono: la resilienza e l'universalità che la tolleranza regala al web valgono ampiamente la scomodità di cercare da sé gli errori silenziosi. Perdonare invece di rompere resta una delle scelte più sagge del CSS.
Per oggi ci fermiamo qui. Il CSS ha una tolleranza agli errori che lo distingue dai linguaggi di programmazione: quando incontra una regola sbagliata o che non capisce, non si blocca, ma la salta silenziosamente e continua con tutte le altre. Non è pigrizia: è una scelta profonda, per far funzionare il web sull'enorme varietà di browser vecchi e nuovi, degradando con grazia, offrendo sempre il meglio possibile invece del tutto o niente. È parte dello spirito di robustezza del web, la resilienza di reggere l'imperfezione. Con onestà, il silenzio del perdono può nascondere gli sbagli, ma è un piccolo prezzo per un grande dono. Nella prossima puntata affrontiamo con onestà la sua fama: facile da iniziare, difficile da domare. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.