altre sezioni LABORATORIO STORIA 900 |EDUCAZIONE ALLA CITTADINANZA |
“La libertà non è uno spazio libero, libertà è partecipazione” G. Gaber
(22.06.2016)
Per chi avesse bisogno di una rinfrescata
veloce, coding significa letteralmente “l’attività di scrivere
codice sorgente”, che è uno dei quasi-sinonimi di “programmare”.
Quasi, perché programmare può significare anche analizzare,
progettare, verificare, integrare un codice sorgente, mentre
coding fa riferimento solo alla scrittura del codice. Così coder
è un quasi-sinonimo di programmer, developer.
Con “coding”, in questo momento e in Italia, ci si riferisce
però alle attività di introduzione dei bambini alla
programmazione, attraverso ambienti di programmazione visuale,
cioè in cui paradossalmente non serve (anche se è possibile)
scrivere
il codice, ma è sufficiente
posizionare oggetti simbolici che
stanno al posto di operatori, variabili, condizioni.
Il MIUR, in collaborazione con il CINI, all’interno del
programma “La buona scuola” ha spiegato come e perché va
introdotto il coding nella scuola in un sito dedicato (http://programmailfuturo.it/come/ora-del-codice).
L’obiettivo dichiarato è “fornire alle scuole una serie di
strumenti semplici, divertenti e facilmente accessibili per
formare gli studenti ai concetti di base dell’informatica”.
L’iniziativa in realtà ripropone corsi e ambienti di lavoro
creati e gestiti da una associazione no profit statunitense (Code.org)
che ha come partner Microsoft, Google e tanti altri. Code.org ha
in realtà obiettivi più ampi: punta all’integrazione razziale e
a diminuire il gap di genere, a modificare i curricula delle
scuole elmentari e medie negli Stati americani, a soddisfare la
richiesta di più informatica da parte dei genitori.
Coding è anche praticamente sinonimo dell’uso di Scratch,
ambiente/linguaggio sviluppato e messo a disposizione
gratuitamente dal MIT.
Ma perché ci tengo così tanto a parlarne?
Perché ritorna
improvvisamente anche in Italia, portata da un vento dell’ovest,
l’idea che si possa non solo usare
la tecnologia digitale a scuola, ma anche
produrla.
Dopo anni e progetti ministeriali in cui l’informatica (parola
desueta) veniva inserita in vari modi nel curriculum, l’idea di
far costruire programmi agli studenti era stata abbandonata. La
tecnologia andava usata, studiata, ma non prodotta. Ora, sulla
spinta di movimenti internazionali presenti in USA, GB, Francia,
e sostenuti esplicitamente dai rispettivi Governi, si torna in
qualche modo indietro. Come mai?
E’ diventata indiscutibile l’idea che per cavarsela in un mondo
sempre più digitale occorra sapere non solo come
funziona l’app
che usiamo per chattare, ma anche sapere come si
sviluppa. Per
ragioni economiche, etiche, politiche: “Program, or be
programmed.”
Ora, al di là della condivisibilità dell’idea in sé – che pure
andrebbe analizzata meglio – è il ruolo della scuola pubblica
che è in gioco. La scuola, viene detto, si deve occupare di
questa esigenza, deve investire risorse non per educare nelle
materie tradizionali anche
tramite l’uso di tecnologie ma per salvare i bambini da un
futuro di cui non avranno la possibilità di essere attori.
Questo è ben diverso da quanto ipotizzato nei vari Multilab,
PNTD, Scuola 2.0 etc. Lì si parlava di didattica multimediale o
di alfabetizzazione digitale – cioè in qualche modo del
presente. Qui si parte dal futuro. E’ un passo importante, a cui
potrebbe corrispondere un analogo interesse per il ruolo che
avranno nel futuro le competenze linguistiche, matematiche,
storiche che vengono acquisite oggi. Serviranno? Saranno
fondamentali? Salveranno i giovani? Vanno aggiornate sulla base
di come sarà la società tra dieci, venti anni? Belle domande.
Sarebbe però altrettanto importante, a mio parere, riesaminare tutti questi programmi ministeriali e farne una valutazione: cosa ha funzionato? Quali obiettivi sono ancora condivisibili e quali strategie si sono rivelate sostenibili? Sono stati investite risorse ingenti: prima di lanciarci in un ennesimo programma – anche se, in questo caso, quasi a costo zero – non sarà il caso di sviluppare una critica onesta delle azioni passate? Magari si scopre che qualcosa si può ancora recuperare. Ad esempio, ci sono migliaia di lavori fatti a partire almeno dagli anni ’80 da insegnanti con il Logo nelle prime classi (vedi sotto): vogliamo provare a riprendere e a capire cosa ha funzionato, che effetti hanno portato? I bambini che hanno giocato con la tartaruga oggi hanno forse trenta o persino quarant’anni: vogliamo provare a vedere se quelle attività gli sono state utili ad avere un diverso approccio al digitale (oltre che una migliore comprensione della geometria piana)?
Insomma parlare del coding in Italia
significa ripensare quello che stiamo facendo con i computer
nelle scuole, quello che abbiamo fatto e quello che vorremmo
fare. E scusate se è poco.
In attesa di questo ripensamento, almeno auspicato, quando leggo
di “coding” cerco dei pareri oggettivi, delle valutazioni delle
esperienze fatte, dei progetti a medio termine.
Gli schieramenti in campo
Quelli che ho trovato
finora, con rare eccezioni, sono due partiti schierati: quelli
che sono incondizionatamente a favore del “coding in classe”,
dei Dojo, della settimana, il giorno e l’ora dei codice; e
quelli che sono contrari per principio all’insegnamento della
programmazione ai bambini.
Chiarisco subito che non faccio parte di
nessuno dei due partiti e faccio fatica a discutere con
entrambi. Dei primi, non condivido l’entusiasmo acritico, senza
radici nella storia e senza una visione degli aspetti culturali,
sociali, economici che sono intorno al coding. Non capisco come
ci si possa dedicare a Scratch come se non esistesse altro, e
Scratch non
fosse nato sulle ceneri del LOGO. Non capisco come si possa
copiare un modello educativo statunitense senza adattarlo al
contesto italiano, o almeno senza capirlo.
Dei secondi, non condivido l’idiosincrasia verso tutto
quello che sa di macchina e ancora di più la netta separazione
tra mondo digitale e mondo “vero” (complesso, affettivo, etc).
Sarà perché la mia vita professionale si è giocata tutta nello
spazio tra questi due mondi: non solo perché sono nato in uno e
mi sono trasferito nell’altro, ma perché il dialogo tra questi
due mondi mi sembra interessante, anzi fondamentale. O ancora:
perché finisco, oggi, per non vederla più, questa differenza.
C’è un mondo solo e noi ci siamo dentro.
Provo a dettagliare le ragioni di questa posizione intermedia
esaminando alcuni elementi della proposta di coding corrente,
partendo dagli obiettivi.
Un’attività didattica non può essere
raccomandata solo
perché è “carina” e facile, perché docenti e discenti si
divertono. Deve avere uno o più obiettivi. Quali?
Ne ho raccolta una lista disordinata prendendo qua e là; alcuni
secondo me sono condivisibili, altri meno. Alcuni sono molto
alti, altri del tutto pratici. Ma è fondamentale che chi
organizza l’attività ce li abbia chiari, altrimenti si muove
casualmente, spreca tempo ed energie e rischia pure di fare
danni.
Come si vede, di obiettivi possibili ce ne sarebbero molti. Ma servono revisioni dei programmi (quelli scolastici) e risorse umane preparate. Ci sono?
Questo è un tema
delicato, mi rendo conto. Si tocca non solo la preparazione dei
docenti, ma in generale il rapporto col digitale, gli aspetti
sociali, la reputazione, la divisione tra umanistico e
scientifico.
Sul sito citato di “Programma il futuro” si dice che gli
strumenti adottati sono “[…] progettati e realizzati in modo da
renderli utilizzabili in classe da parte di insegnanti di
qualunque materia. Non è necessaria alcuna particolare abilità
tecnica né alcuna preparazione scientifica”. Non si parla degli
studenti, ma dei docenti. Strumenti scelti perché sono facili da
insegnare, non da imparare. Come si arriva a proporre un metodo
e un set di strumenti in funzione non della specificità e
dell’adeguatezza a uno scopo ma in funzione del numero di
operatori che sono in grado di gestirli?
In breve, gli insegnanti di materie umanistiche si sono sempre
sentiti esclusi dal mondo digitale. Perché era troppo complesso.
Creare un programma con un linguaggio come C o Java, o anche con
il meno blasonato Javascript, o persino creare a mano una pagina
HTML+CSS, è un’attività che richiede troppe competenze. Alcuni
ne hanno sofferto, altri se ne sono fatti una ragione. Molti
hanno alzato come una bandiera la loro impermeabilità al
digitale (“ah io di queste cose… insegno letteratura”).
Poi sono arrivati i CMS, e chiunque oggi può creare un sito web
– magari con WordPress – senza avere la più pallida idea di cosa
sta facendo. E l’onnipresente MS PowerPoint, con la possibilità
di creare degli slideshow per mostrarli in classe, complice la
LIM. Poi è arrivato Code.org.
Il coding (inteso come attività all’interno di un ambiente
visuale come Scratch) è qualcosa che può fare, e insegnare,
chiunque. I concetti informatici da comprendere sono pochi: lo
stato di una variabile, le istruzioni condizionate, i cicli. E’
la grande rivincita del docente non informatico.
Ora io vorrei guardare un po’ in avanti. Cosa succede dopo che
si è costruita la storia del lupo e dell’agnello con i bambini?
Ci si ferma qui? O questo è solo il primo passo – come
sembrerebbe a giudicare dagli obiettivi – di un percorso che
dalla programmazione visuale porta a guardare il codice
sorgente, e poi a scriverlo, e poi alla conoscenza di altri
linguaggi ed ambienti diversi? Se si, allora “non avere abilità
tecniche e preparazione scientifica” non è un requisito
sufficiente. Non servirà avere un dottorato in basi di dati non
relazionali, ma sapere cosa sono le basi di dati e come si può
usare un file CSV per simularle, si. Sapere che significa codice
sorgente, la differenza tra compilare e interpretare, saper
assegnare una licenza o dare un permesso d’autore. Allora i
docenti di coding vanno formati. Sempre che ne abbiano voglia.
Prima che partano delle obiezioni facili:
non sto dicendo che basta essere informatici per insegnare ai
bambini, o che solo gli informatici possono farlo. Sto dicendo
che oltre a tutte le altre
competenze, che do per scontate
(pedagogiche, organizzative, psicologiche, valutative) servono
anche
quelle informatiche, e queste come quelle non si improvvisano.
E’ faticoso? Senza dubbio. E’ più facile far finta di niente?
Altrettanto.
Ma dovendo imparare un linguaggio, quale?
Mi pare
che in Italia ci sia una totale, incondizionata adesione alla
(validissima) proposta del MIT. Coding uguale Scratch. Ma con
una breve indagine via Wikipedia si scopre che di linguaggi
“facili”, educativi, visuali, giocosi, ne sono esistiti, e ne
nascono ogni giorno, una marea. Non servono tutti esattamente
allo stesso scopo, sono diversi per espandibilità, possibilità
di eseguirli su dispositivi diversi, licenze d’uso. Alcuni sono
dichiaratamente alternativi a Scratch, come ad esempio Kojo (http://www.kogics.net/kojo).
Sarebbe bello che una volta decisi gli obiettivi e preparate le
risorse umane, si andasse a scegliere il linguaggio più adatto,
tra tutti quelli disponibili, invece di scegliere sempre e
solo quello più conosciuto.
Comunque, Scratch non è nato dal nulla: deriva da Squeak!, che
deriva a sua volta da SmallTalk ma innestando le idee
pedagogiche del Logo. Un breve riepilogo di questi linguaggi e
ambienti educativi, per lo più visuali, è
qui
Ma per essere precisi, tutto è iniziato con il bistrattato BASIC, negli anni sessanta del millennio scorso. Per dare un’idea, non erano ancora nati né il C (1973), né il PERL (1987) per non parlare di Java (1995). In quella caverna preistorica c’erano degli uomini forse primitivi, ma con delle idee luminose.
1. Quando Kemeny e Kurtz nel maggio del 1964
inventano il BASIC (Beginners’All-purpose Symbolic Instruction
Code) l’idea era quella di proporre uno strumento con cui
chiunque potesse programmare (e si, il pensiero va a Ratatouille
e al motto dello chef Gusteau “Chiunque può cucinare”). Un
linguaggio talmente facile da poter essere imparato senza
conoscenze pregresse in matematica e logica. Perché? Perché a
quell’epoca programmare era un’attività riservata a pochi super
esperti, che avessero accesso a macchine costose. E perché c’era
l’idea – stiamo parlando degli anni ’60 ! – che sapere
programmare fosse una competenza che avrebbe migliorato la vita
di chiunque. Nasce perciò un linguaggio con una sintessi
semplice, con delle istruzioni che assomigliano all’inglese,
pensato in funzione dell’utente.
Un’idea che avrebbe dovuto aspettare ancora dieci anni prima di
essere davvero realizzata, con la diffusione degli home computer
con un interprete BASIC, capace di fare grafica e suonare.
Incidentalmente, l’interprete che ha contribuito di più alla
diffusione del linguaggio è stato scritto da Paul Allen, Monte
Davidoff e Bill Gates.
2. Il Logo, altro elemento chiave del
discorso, nasce pochi anni dopo l’invenzione del BASIC, cioè nel
1967. L’obiettivo è completamente diverso: in origine era stato
pensato da un gruppo ricercatori nel campo della nascente
Intelligenza Artificiale (del calibro di Bobrow, Feurzeig e
Salomon) per insegnare la programmazione in LISP agli studenti,
ma con l’intervento di un matematico (Seymour Papert) Logo
diventa una maniera alternativa di imparare la geometria che non
passasse per la lettura di teoremi ma per la costruzione
automatica di figure in soggettiva, dal punto di vista
dell’utente, che si identifica in un avatar digitale: la famosa
tartaruga. Dunque con un obiettivo didattico, non legato alle
tecnologie. Anche stavolta il linguaggio è progettato per essere
semplice, alla portata di bambini. La base di partenza scelta è
un po’ più nobile
del BASIC, in termini di “generazioni dei linguaggi”: viene
scelto il LISP che è un linguaggio funzionale, non imperativo.
Il modello di interazione è quello dell’insegnamento ad un
robot. Quando – molto più tardi – vengono realizzati degli
interpreti per Apple e per PC IBM, cominciano a essere
disponibili delle traduzioni nelle lingue nazionali, cioè in cui
le istruzioni fossero parole comuni della lingua madre di chi lo
utilizzava (SE…ALLORA, RIPETI…FINCHE), con l’idea di facilitare
la scrittura di programmi da parte di bambini che non conoscono
l’inglese.
Dal Logo originale sono gemmate altre versioni che hanno
lasciato da parte la geometria piana e si sono concentrati sulla
concorrenza o sulla multimedialità, fino a versioni in cui non
era più necessario scrivere i programmi, ma era sufficiente
selezionare le azioni da un menù e comporle.
3. Con un finanziamento considerevole
dell’ARPA, mirato a ripensare il mondo dell’interazione
uomo-macchina, Alan Kay e altri colleghi del Learning Research
Group allo Xerox Parc nel 1971 creano il linguaggio SmallTalk.
Per dire, quel gruppo di lavoro e quelle ricerche sono
all’origine di innovazioni come finestre, mouse, ipertesti,
tablet, programmazione ad oggetti e altre quisquilie.
SmallTalk introduce un nuovo modo di programmare, in forma di
dialogo tra oggetti. E’ semplice, ha una sintassi elegante e
coerente (per sommare due numeri si “dice” al primo di sommarsi
con il secondo). Nasconde completamente i dettagli di
implementazione, punta a far concentrare chi programma sulla
struttura del problema, non sul come della sua risoluzione.
Scratch è figlio – tra l’altro – di queste tre idee potenti nate
negli anni sessanta. Un linguaggio semplice, un ambiente pensato
per l’educazione, una logica ad oggetti. Ma che ne è stato di
quelle idee?
Se oggi ci guardiamo intorno, vediamo una situazione completamente diversa da quella che avevano immaginato i mitici precursori. I programmatori sono aumentati moltissimo di numero, ma non è l’uomo qualunque che programma, è solo chi ha intrapreso un percorso formativo specializzato. I programmi sono ovunque, ma quasi nessuno sa/può modificarli (o almeno sceglierli con consapevolezza di quello che fanno). Tutti sanno cos’è un’app, ma nessuno ha un’idea vaga di come funziona, quali dati gestisce, a chi li invia. Con gli evidenti rischi per la privacy, e con l’arricchimento velocissimo di chi costruisce e vende profili e pubblicità, eccetera eccetera. Tutti hanno in bocca il termine “opensource”, usandolo magari a sproposito e confondendolo con “gratis”, ma dimenticano che quasi nessuna delle app che hanno felicemente installato sul proprio smartphone lo è.
Il sogno di Kemeny dell’uomo qualunque in
grado di programmare non si è realizzato, ma anche quello di
Papert di cambiare radicalmente la didattica tramite la
tecnologia digitale non sembra passarsela molto meglio.
SmallTalk non è più utilizzato, anche se ha dato origine a quasi
tutti i linguaggi moderni.
Una domanda che a me viene spontanea è: ma se, sostanzialmente,
non c’è grande differenza tra le caratteristiche dei primi
linguaggi “educativi” e quelli di oggi, perché stavolta dovrebbe
andare meglio?
Perché il BASIC è stato snobbato (pure se esistono
implementazioni moderne, per Windows e per Linux) e il Logo
dimenticato nelle scuole? Come facciamo ad assicurarci che non
succeda di nuovo? Non sarà il caso, stavolta, di fare attenzione
alla situazione globale e di assicurarci che le condizioni di
successo per l’iniziativa ci siano tutte?
A proposito di risorse, ma quanto tempo ci va dedicato?
Un’ora di coding è sufficiente?
No. Ma non perché
bisogna fare due ore di coding.
Perché insieme al coding vanno affrontati altri temi. Ci deve
essere un piano didattico più esteso che comprenda le competenze
di cittadinanza digitale, i nuovi diritti e i doveri “digitali”
– la privacy, la condivisione, l’attenzione alle risorse.
E in questo piano devono essere prese in carico (o smontate e
rimontate) le altre “materie”, senza le quali il coding perde di
senso a scuola. Perché non può essere un’attività ricreativa
incastrata tra matematica e storia, ma deve fare i conti con
entrambe.
Deve essere rivalutata la componente linguistica del coding, la
sua parentela con le altre forme di scrittura. Il coding deve
essere affrontato nel quadro di un ripensamento della didattica
che prepari non solo alla soluzione di problemi dati, ma anche
alla posizione di nuovi problemi, all’invenzione di narrazioni
in tutti campi.
Si dovrebbero andare a ristudiare le esperienze passate,
valutarle, estrapolarne, se ci sono, gli aspetti positivi.
Deve essere scelto un ambiente e un linguaggio adatto, in
funzione dell’età, degli obiettivi, dei dispositivi.
Per tutto questo, si devono formare i docenti in maniera non
randomica e superficiale.
Insomma: coding si, ma sul serio.