Pagine

lunedì 25 febbraio 2019

Informatica e coding: facciamo chiarezza

di Enrico Nardelli

È risaputo che per far presa sulle persone bisogna comunicare usando messaggi semplici. Tuttavia ciò che è semplice non sempre fornisce una chiave di lettura adeguata per la realtà. Un esempio attuale è quello relativo al coding, la programmazione informatica, di cui si sente parlare sempre più frequentemente. Nella sfera mediatica molti parlano dell’importanza di insegnarlo a tutti gli studenti, descrivendolo come il linguaggio indispensabile per operare nella società digitale: «il coding è il nuovo inglese». Messaggio certamente semplice, ma che rispetto agli obiettivi da conseguire è inadeguato e fuorviante.

È inadeguato perché dovrebbe riferirsi all'apprendimento dell'informatica e non del solo coding, cioè della programmazione informatica, che è la parte più immediata e operativa. Ed è per questo fuorviante, perché se preso alla lettera, senza collocarlo nel giusto scenario, rischia di creare i nuovi proletari del futuro.

Entrerò adesso nel dettaglio della mia osservazione critica, che non vuole affatto svilire il coding ma inserirlo in una corretta prospettiva.

L'informatica è la disciplina scientifica che spiega i meccanismi base del funzionamento e della costruzione di quelle macchine digitali che sono ormai parte integrante della nostra vita. Come ben noto in qualunque settore tecnologico, la realizzazione di un macchinario, tranne il caso di dispositivi semplici o sia all’opera un creatore geniale, non avviene semplicemente cominciando a mettere insieme dei pezzi. L'esperienza di secoli ha mostrato che è necessario conoscere le basi scientifiche del dominio in cui si vuole creare la macchina, poi sapere come elaborare un progetto ingegneristico che porti alla specifica delle caratteristiche di ciò che si vuole ottenere ed alla definizione di come può essere fabbricato; infine, si passa alla realizzazione. Non c’è proprio altra strada poi, se si vuole industrializzare questo processo produttivo e renderlo ripetibile e di qualità garantita.

Parlare solo di coding è come dare scatoloni di sbarre, bulloni e piastre di ferro a qualcuno e poi dirgli di costruire qualcosa. Finché questo "qualcosa" è piccolo e semplice non ci sono problemi, ma se si vuole edificare un vero ponte serve qualcosa di più che la semplice abilità nel mettere insieme i pezzi.

Con la programmazione informatica, cioè il coding, si hanno a disposizione gli equivalenti digitali di sbarre, bulloni e piastre di ferro e non ci sono problemi nel costruire cose piccole e semplici. Anzi, è molto più facile che per ogni altra macchina, sia perché questi componenti di base sono immateriali, non pesano e non sono ingombranti, sia perché c'è a disposizione un gran numero di componenti anche abbastanza sofisticati che possono essere combinati senza sforzo. Negli ambienti moderni di coding, qualunque bambino può - ad esempio - realizzare applicazioni che adesso sono semplici ma che cinquant'anni fa erano alla portata solo di centri di avanguardia tipo la NASA: gli astronauti sono sbarcati sulla luna usando un sistema informatico di complessità inferiore a quelli che ci sono negli oggetti “smart” intorno a noi oggi. Nessun bambino, invece, può fabbricare da solo una Torre Eiffel, neanche oggi, pur avendo a disposizione tutte le sbarre, bulloni e piastre che vuole.

Vediamo adesso perché il semplice messaggio iniziale è fuorviante.

Perché da sempre, nella storia dell’umanità, il livello operativo della forza lavoro è stato quello più debole nei contrasti sociali e soggetto all’evoluzione tecnologica. Negli ultimi secoli, successivamente alla transizione da una società agricola ad una industriale, si è capito che l’istruzione è fondamentale per consentire a tutti una vita lavorativa soddisfacente nel tempo. Ed in effetti negli ultimi decenni, in tutti i Paesi avanzati, si insiste su durata e qualità della formazione scolastica e universitaria. Nell’Italia degli anni ’50 e ’60 i figli delle classi meno abbienti sono stati portati a studiare e laurearsi proprio in quest’ottica, che rimane quella corretta per la crescita sociale ed economica.

Siamo adesso nella fase di transizione da società industriale a società digitale. Le nuove macchine sono ben più sofisticate di quelle industriali, sono “macchine cognitive”, ma i problemi di base del lavoro rimangono. Anzi, con l’accelerazione del progresso tecnologico stanno già emergendo. La sofisticazione di quelle tecniche informatiche che vanno generalmente sotto il nome di “Intelligenza Artificiale” già rende possibile la produzione automatica di programmi informatici. Per ora questo accade in domìni ancora limitati in misura molto ridotta. Ma è una tendenza inarrestabile. È chiaro quindi che indicare solo il coding come obiettivo dell’istruzione in materia di competenze digitali rischia di mettere su una cattiva strada chi non conosce questi scenari. Senza fornire ai ragazzi una formazione a largo spettro sui vari aspetti dell’informatica, formeremo solo “operai digitali” che saranno i primi ad essere espulsi dal mercato del lavoro.

In quadro in cui questa visione strategica sia chiara si può benissimo parlare del coding, perché dopo tutto scrivere programmi informatici è un’attività fondamentale per imparare l’informatica. Così come saper fare le operazioni aritmetiche o calcolare l’area di figure geometriche sono passi fondamentali dell’apprendimento della matematica. Va quindi benissimo “fare coding”, soprattutto poi se questo aiuta ad avvicinare ragazze e ragazzi ad una materia che può dar loro molte soddisfazioni. Ma facciamo attenzione a come viene comunicato il messaggio!

È fondamentale insistere sull’importanza di una seria formazione scientifica sull’informatica fin dai primi anni di scuola. È la strada su cui diversi paesi avanzati si sono già avviati (p.es., USA, Regno Unito, Israele) e sulla quale la nostra comunità universitaria dell’informatica ha presentato al Ministero dell’Istruzione una proposta organica. Speriamo che il governo del cambiamento sia in grado di cogliere questa opportunità.

--
Versione originale pubblicata su "Il Fatto Quotidiano" il 20 febbraio 2019.

1 commento:

  1. Sono un insegnante di informatica in un LSA. Il tema che solleva il post mi sembra di primaria importanza, fatico però a comprendere cosa concretamente si propone di rendere oggetto dell'insegnamento, nel senso del "oltre la programmazione"; nella mia visione programmazione significa principalmente studiare immaginare e realizzare algoritmi, ovvero il cuore della materia, si intende qui forse qualcosa di diverso? In fondo un algoritmo viene espresso in un linguaggio formale (programmazione), e lo studio di un linguaggio formale passa per le sue potenzialità nell'espressione di algoritmi. Studio dei modelli teorici di calcolo e risultati di complessità sono inclusi? Algoritmi distribuiti e paralleli o conoscenza della forma dei pacchetti TCP? Dettagli tecnologici o aspetti teorici? A cosa di preciso ci si riferisce quando si dice di andare "oltre" il codice? E cosa invece è prerogativa del codice in quanto sottoparte della materia completa?

    RispondiElimina

Sono pubblicati solo i commenti che rispettano le norme di legge, le regole della buona educazione e sono attinenti agli argomenti trattati: siamo aperti alla discussione, non alla polemica.