Che la presenza dell’informatica nella vita quotidiana stia crescendo sempre più è un fatto che non ha bisogno di dimostrazione. Eppure è vero che vi sono anche indizi di segno contrario. Il rinascere del mercato degli LP in vinile, il persistere di appassionati della fotografia su pellicola, il moltiplicarsi delle associazioni per la diffusione dell’arte della calligrafia nell’era della scrittura al computer, la costante preferenza espressa dai ragazzi per lo studio sui buoni vecchi libri di carta: questi e altri sono segni che costringono a pensare. Se non le si vogliono giudicare reazioni retrograde, bisogna cercare di capire che cosa sia realmente in gioco. Il primo aspetto comunque tra tanti casi differenti è forse il fatto che tutte le alternative «antiche» che stanno oggi avendo momenti di gloria sono strade più difficili rispetto a quelle digitali. L’osservazione è abbastanza ovvia: l’informatica (come la maggior parte delle tecnologie, peraltro) punta non solo a rendere possibili cose che prima non lo erano, ma anche a rendere più facili cose che prima erano laboriose. Ascoltare una canzone sfiorando un tasto è più facile che cercare il disco nello scaffale, tirarlo fuori dalla custodia, spolverarlo delicatamente, posarlo sul giradischi, e così via. Il fatto che siano più difficili significa che richiedono più tempo, più forze e più attenzione, ogni singola piccola tappa è percepita e vissuta: significa insomma che il risultato viene sperimentato come più proprio, e in conclusione come più umano.
Ma siamo davvero sicuri che informatica vuol dire solo maggiore facilità? In realtà c’è qui uno strano paradosso: la tecnologia informatica è la più complessa mai elaborata dall’umanità. Non è mai esistita prima una tecnologia che abbracciasse tanti ordini di grandezza quanti l’informatica, in cui una sola operazione finale visibile fosse il risultato di milioni di operazioni elementari normalmente invisibili, e che però devono essere tutte pensate e progettate fino all’ultimo dettaglio. Spesso si osserva che di un grande programma informatico non esiste sicuramente nessuno che ne conosca per intero il funzionamento interno. Ovvio: questo non deriva solo da un difetto di procedure nelle aziende che producono software, ma è una conseguenza inevitabile di un’avventura intellettuale incredibilmente complessa che come nessun’altra sta diventando sempre più necessariamente collettiva, nello spazio e anche nel tempo. Di fronte ad essa c’è da restare ammirati: sono intere storie intellettuali a volte di secoli che vengono riassunte, sono scoperte logiche e matematiche che vengono combinate insieme. C’è inoltre una cronaca di tutti i giorni che parla di software scritto spesso nei ritagli di tempo solo per il piacere e la soddisfazione di farlo e di contribuire ad una comunità. Tutti i telefoni Android hanno il loro centro nel kernel Linux iniziato per passione da un giovane studente finlandese, tutte le pagine Internet si basano su un protocollo inventato da un timido informatico britannico che non ne ha mai ricavato un penny. Non solo complessità, dunque, ma anche il libero piacere dell’invenzione.
L’informatica offre insomma questo doppio volto: da una parte la facilità di ottener cose quasi magicamente, dall’altra l’enorme impresa di chi ha reso e rende possibili, con intelligenza e creatività, queste magie. Una grande sfida è oggi far sì che parlare di informatica e farla entrare nell’insegnamento non sia solo lasciar stupiti di fronte a magie, ma mettere in mano, o almeno far capire, i super poteri che consentono di effettuarle. Tutti gli indizi apparentemente anti-tecnologici che abbiamo citato prima fanno capire quanto ciò sia urgente e importante: gli esseri umani se ne fanno poco di cose facili se queste alla fine non vengono almeno in parte comprese, vissute, fatte proprie. Tra i due estremi di chi interpreta l’attaccamento all’antico come segno del fallimento della tecnologia e di chi pigramente osserva che proteste contro le cose nuove ci sono sempre state, e poi sono scomparse, c’è la strada mediana più difficile: capire che ora c’è una posta in gioco più alta, che richiede un impegno e un’intelligenza maggiore. L’informatica offre molto: ma nulla è gratis. Ma in quale modo una didattica dell’informatica può percorrere questa strada? Proviamo solo ad ipotizzare alcune linee che ci paiono più concrete.
La prima è apparentemente ovvia: presentare l’informatica nel suo versante creativo significa insegnare (almeno in forma elementare) a programmare, e programmare significa semplicemente descrivere un procedimento in termini generali. Tuttavia ciò diventa meno banale se viene detto al contrario: descrivere esattamente un problema in termini generali significa già programmare. Il cosiddetto «pseudo-codice» usato in diverse prassi didattiche vuole proprio sottolineare questo: che il linguaggio di programmazione usato sia interpretabile da un computer, oppure se sia un linguaggio formale completamente teorico, cambia ben poco di fronte al compito fondamentale: saper descrivere esattamente un procedimento equivale a poterlo far eseguire, all’occorrenza anche da una macchina. Facilissimo a dirsi, spesso difficile a farsi: perché in realtà non è per nulla facile comprendere ciò che facciamo anche nelle operazioni apparentemente più facili, che non comportano per esempio nessuna competenza matematica o specialistica. (Un esempio? «Data una parola composta dalle lettere L1, L2, L3 … LN, descrivere esattamente un algoritmo che la divida in sillabe secondo le regole della lingua italiana»: buon lavoro!) Questa è anche una delle componenti dell’immaginazione. Diceva Tim Berners-Lee rivolgendosi a ragazzi: «Se potete immaginare che un computer faccia qualcosa, vuol dire che potete anche programmarlo!» Il fatto che i computer siano «solo macchine» significa che coloro che devono programmarli devono avere ancora più creatività e fantasia del solito: il che vale ancora di più nel momento in cui, contrariamente agli anni iniziali dell’informatica personale, molti paradigmi di uso sono consolidati e pensare fuori degli schemi esige più «pensiero laterale».
Una seconda linea: molto raramente vengono sottolineati i legami tra informatica e linguaggio naturale. Ebbene, per la gioia degli insegnanti di Lettere, ricordiamo che il legame c’è ed è strettissimo. Non tanto perché per programmare si usano «linguaggi» (questo è anzi un aspetto fragile e discutibile: agli esordi venivano chiamati autocodes e non è detto che la metafora antropomorfica poi invalsa aiuti a capire le cose); ma piuttosto perché la capacità di descrivere e spiegare a parole ha una connessione stretta con la capacità di programmare. La chiarezza, l’eleganza, l’assenza di ripetizioni, per esempio, ciò che qualsiasi manuale di bella scrittura insegna (o insegnava), sono doti che valgono ancora di più per un programma informatico. È indubbiamente per questo che uno dei padri nobili dell’informatica, Edsger Dijkstra, affermava che una profonda conoscenza della propria lingua materna è il primo prerequisito per un buon programmatore. Ma tutto ciò entra direttamente anche nella composizione di un programma: la «documentazione», cioè la spiegazione passo passo del procedimento seguito, è uno dei suoi aspetti cruciali. Donald Knuth, il celebre autore di TeX, negli anni 80 cercò addirittura di invertire i fattori, e diffondere l’idea che i programmi dovessero essere scritti essenzialmente non per dare istruzioni ad un computer, ma per spiegare ad un’altra persona che cosa si volesse che un computer facesse. In questo paradigma, chiamato della «programmazione letterata», il programma si trasforma quindi in un’opera letteraria. Non è qui il luogo per spiegare i dettagli (e neppure per chiederci perché malgrado i suoi meriti questo modello abbia avuto diffusione molto limitata): ci basta però notare che in questa prospettiva, senza perdere nulla del suo spessore tecnico, anzi proprio per favorirlo, l’informatica viene congiunta all’educazione linguistica, ne diventa in un certo senso un’estensione.
Una terza linea: collaborare è una delle cose più difficili che vi sia, non solo per gli imprevedibili fattori umani che sono coinvolti, ma anche perché ciò significa avere un piano complessivo e un perfetto accordo su come queste parti possano connettersi insieme. Chi conosce anche solo superficialmente il mondo del software libero, nel quale il dialogo nelle comunità avviene alla luce del giorno (a volte con uno strascico di simpatiche risse), sa bene quanto tutto ciò può essere cruciale per la riuscita di un progetto. Ovviamente la collaborazione è essenziale in qualsiasi opera umana complessa, ma come abbiamo visto la complessità raggiunta nell’informatica rende questo aspetto essenziale. È raro vedere nei progetti didattici di informatica sottolineato questo aspetto, se non nel versante (tutto sommato abbastanza giocoso) del «trattare l’altro come una macchina che deve eseguire istruzioni». E invece è decisivo, ed è un aspetto di educazione umana che si innesta direttamente sulla natura di ciò che viene insegnato. Quanto sarebbe formativo in una classe portare avanti un progetto, anche semplice, in cui diverse parti sono scritte da studenti diversi e alla fine devono combinarsi e funzionare assieme?
Capacità di capire e di immaginare, di parlare con chiarezza di ciò che si fa, di collaborare insieme in maniera armonica: l’informatica è anche questo, e questo può essere insegnato, sia pure ad un livello elementare. Anche in questo modo resterà (speriamo!) la voglia di ascoltare LP in vinile e di scrivere a mano in bella grafia: ma il risultato importante sarà che anche l’informatica verrà percepita come la difficile e straordinaria e bella avventura umana che essa è.