Dietro il coding/A che serve il coding?: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1:
{{Dietro_il_coding}}
 
Tutti d'accordo, il coding è divertente. Ma a che serve?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, e forse poco raggiungibili; altri del tutto pratici ma chissà quanto sostenibili nel tempo. Non sono omogenei e anzi sullo sfondo si intravedono ideologie molto diverse.
 
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.
 
1.=== Quello di sviluppare il Computational Thinking ===
La questione è spinosa. Intanto non è facile definire il pensiero computazionale. Il termine è stato usato da Papert ma è diventato famoso in seguito ad un breve scritto di Jeannette Wing<ref>http://www.cs.cmu.edu/afs/cs/usr/wing/www/publications/Wing06.pdf</ref>,1 Microsoft Research.
 
Computazionale significa “calcolabile”. Una funzione è computabile se esiste un algoritmo – cioè una serie di passaggi predefiniti, eseguibili da una macchina senza necessità di intervento esterno – che la calcola in un tempo finito. Per chi volesse saperne di più, il libro di Batini citato più sopra lo spiega con un dettaglio maggiore e con termini corretti.
 
Ma insomma è chiaro che il pensiero computazionale non è sinonimo di “pensiero logico”. Il pensiero computazionale ha a che fare con obiettivi, risorse e vincoli. Imparare il pensiero computazionale serve ad affrontare problemi con un approccio molto concreto che tende a evitare quelli irrisolvibili, a individuare le soluzioni che presumibilmente siano praticabili con le risorse disponibili oggi, ma anche sostenibili nel tempo. Se si impara a valutare i problemi, a stimare le risorse, a definire i vincoli, con i computer, poi si potranno applicare le competenze apprese anche in situazioni diverse.
 
Però a volte sembra che si faccia confusione tra un’interpretazione che abbiamo chiamato “culturale” e una “metacognitiva”:
 
“[i...] l lato scientifico-culturale dell’informatica, definito anche pensiero computazionale, aiuta a sviluppare competenze logiche e capacità di risolvere problemi in modo creativo ed efficiente, qualità che sono importanti per tutti i futuri cittadini”.
 
Non è proprio quello che dice Wing. Ma in ogni caso, c’entra poco con la programmazione.
 
Non si scrivono programmi solo per risolvere problemi, e programmare non è solo implementare algoritmi in un certo linguaggio di programmazione. L'ideazione (appunto, la creatività) serve quanto il rigore, altrimenti staremmo da anni a risolvere gli stessi problemi in maniera più efficiente.
 
Inoltre confesso che mi pare discutibile l’idea che sia davvero desiderabile introdurre il pensiero computazionale come competenza base, come maniera generale di affrontare la vita. Affidarsi solo al pensiero computazionale mi pare indizio di una visione davvero molto funzionalista del mondo.
In ogni caso: tanti anni fa un ricercatore del CNR, Giovanni Lariccia, proponeva nelle scuole un approccio didattico all’informatica senza computer (“carta e matita”).
Lo faceva sia perché di computer, onestamente, ce n’erano pochi, sia perché così era possibile collegare l’informatica all’esperienza quotidiana. Varrebbe la pena di andarsi a rileggere i suoi libri (li trovate in fondo).
 
In ogni caso: tanti anni fa un ricercatore del CNR, Giovanni Lariccia, proponeva nelle scuole un approccio didattico all’informatica senza computer (“carta e matita”).
 
Lo faceva sia perché di computer, onestamente, ce n’erano pochi, sia perché così era possibile collegare l’informatica all’esperienza quotidiana. Varrebbe la pena di andarsi a rileggere i suoi libri (li trovate in fondo).
 
2.=== Quello di preparare le nuove generazioni ai nuovi lavori? ===
Questa è una delle argomentazioni che sembra più difficile da confutare.
 
Negli USA, entro il 2022 ci saranno 2.600.000 posti di lavoro nel settore dell’informazione; di questi, 750.000 per i programmatori, con una crescita del 22,8 %<ref>http://www.bls.gov/news.release/pdf/ecopro.pdf</ref>. Con le parole di un articolo di qualche anno fa di Rebecca Lindegren<ref>http://opensource.com/education/13/4/teaching-kids-code</ref>.
 
“This means that U.S. companies would be forced to outsource valuable coding jobs to India, China, Eastern Europe, and other countries with growing IT sectors, while thousands of Americans remain unemployed or stuck in low-skilled, low-wage positions”
 
Quindi bisogna cominciare subito a prepare le future generazioni di programmatori. Purtroppo (o per fortuna) non c’è nessuna connessione diretta tra un ambiente educativo come Scratch e gli ambienti di programmazione professionali (come quello mostrato prima). E vista la distanza che c’è tra concetti, modelli, strumenti di dieci anni fa e quelli di adesso, la pretesa che insegnare oggi quello che sarà utile tra dieci anni è davvero troppo ambiziosa.
 
Fra l’altro: l’informatica non è solo programmazione. Ci sono (forse) milioni di posti di lavoro in attesa nel comparto informatico, là nel 2022, ma solo un terzo circa è riservata ai programmatori propriamente detti, mentre la maggioranza è lasciata a tutti gli altri lavoratori del settore (analisti, progettisti, sistemisti, grafici, esperti di reti, di sicurezza, commerciali, docenti, installatori, …).
 
Ci possono anche essere ragioni un po' meno "nobili". Per esempio, una generazione di ragazzini che sono in grado di produrre in poche ore un’app con un certo linguaggio, su un certo sistema operativo, significa da un lato un serbatoio immenso da cui andare a pescare i migliori developers senza doversi assumere l’impegno e la responsabilità di formarli adeguatamente; e dall’altro un enorme mercato futuro per quelle app, per quel sistema operativo…
 
3.=== Quello di far costruire ai ragazzi delle storie in maniera alternativa alla scrittura? ===
Bene, è un’attività molto utile e interessante, ma che si può fare benissimo in altri modi, dal disegno al teatro, dai fumetti al video. Perché proprio col coding? In qualche modo, però, questa è la motivazione che condivido di più, ma per un motivo diverso.
Programmare – progettare e scrivere qualsiasi programma – è un altro modo di raccontare una storia: inventare un contesto, degli attori, un plot.