Parole nuove

Coding

  • Lucia Francalanci
SOTTOPOSTO A PEER REVIEW

DOI 10.35948/2532-9006/2020.3311

Licenza CC BY-NC-ND

Copyright: © 2020 Accademia della Crusca


A partire dall’anno scolastico 2014-2015 il MIUR (Ministero dell'Istruzione, dell'Università e della Ricerca), in collaborazione con il CINI (Consorzio Interuniversitario Nazionale per l’Informatica), lancia il progetto “Programma il Futuro”, il cui obiettivo è – come si legge nel comunicato stampa che presenta l’iniziativa (Nota prot. 2937 del 23 settembre 2014) - “fornire alle scuole una serie di strumenti semplici, divertenti e facilmente accessibili per formare gli studenti ai concetti di base dell’informatica”. Il progetto propone una modalità-base di partecipazione aperta a tutte le scuole di ogni ordine e grado, detta “L’Ora del Codice”, che consiste nel far svolgere agli studenti “un’ora di avviamento al pensiero computazionale”. Sulla base di un’iniziativa nata negli Stati Uniti nel 2013, chiamata appunto The Hour of Code, anche l’Italia inizia a sperimentare l’introduzione nelle scuole “dei concetti di base dell’informatica attraverso la programmazione (coding), usando strumenti di facile utilizzo e che non richiedono un’abilità avanzata nell’uso del computer”.

A partire da settembre 2014, dunque, in ambito scolastico si inizia a parlare di pensiero computazionale e di coding. Il comunicato stampa che presenta i due concetti non fornisce però una spiegazione del loro significato; o meglio, se troviamo in effetti un debole tentativo di fornire una definizione di pensiero computazionale, si dà tuttavia per scontato il concetto informatico di programmazione (e di conseguenza di coding) e in cosa consista la sua applicazione nelle scuole:

Il 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 i futuri cittadini.
Il modo più semplice e divertente di sviluppare il “pensiero computazionale” è attraverso la programmazione (coding) in un contesto di gioco.

Il concetto di pensiero computazionale (computational thinking) viene proposto per la prima volta nel 1980 da Seymour Papert (Mindstorms: Children, Computers, and Powerful Ideas, New York, Basic Books Inc., 1980), matematico e informatico sudafricano, collaboratore di Jean Piaget. Il concetto espresso da Papert viene poi ripreso nel 2006 da Jeannette Wing, direttrice del dipartimento di informatica della Carnegie Mellon University di Pittsburgh, che lo descrive così: “Il pensiero computazionale implica la risoluzione dei problemi, la progettazione di sistemi e la comprensione del comportamento umano, attingendo ai concetti fondamentali dell’informatica. […] Un modo in cui pensano gli umani, non i computer. Il pensiero computazionale è un modo con cui gli esseri umani risolvono i problemi […]. Equipaggiati con dispositivi informatici, usiamo la nostra intelligenza per affrontare problemi che non avremmo osato affrontare prima dell’era del computer e costruire sistemi con funzionalità limitate solo dalla nostra immaginazione” (Jeannette Wing, Computational Thinking, Communications of the ACM, vol. 49, n. 3, 2006, pp. 33-35) [trad. mia].

Potremmo quindi considerare il pensiero computazionale come una modalità di pensiero che coinvolge particolari facoltà cognitive umane e che prevede uno specifico approccio alla formulazione e risoluzione di problemi complessi, utile alla comprensione della società contemporanea, consentendo di analizzare ed elaborare dati con metodi e strumenti che si acquisiscono con lo studio dell’informatica. Educare gli studenti al pensiero computazionale – ed ecco la sua applicazione all’ambito scolastico – consente loro di sviluppare la capacità di pensiero logico, la capacità di risoluzione dei problemi, la creatività e più in generale li aiuta nell’apprendimento e nella comprensione della società moderna; il modo in cui tutto questo si realizza è grazie alla diffusione di conoscenze scientifiche, in particolare informatiche.

Il progetto “Programma il Futuro”, che fa parte della riforma nota come “La Buona Scuola” (Legge 107 del 3 luglio 2015), ambisce proprio a far sì che un’adeguata educazione al pensiero computazionale sia inserita come disciplina nei vari ordinamenti scolastici italiani. L’insegnamento del pensiero computazionale diventa effettivamente parte dei programmi della scuola primaria a fine ottobre 2015, con la pubblicazione del Piano nazionale per la scuola digitale (PNSD, DM 851 del 27 ottobre 2015), un documento pensato per guidare le scuole in un percorso di innovazione e digitalizzazione, come previsto dalla riforma della scuola. Il PNSD cita l’iniziativa “Programma il Futuro” come modello di riferimento per tale attività didattica.

Nel PNSD si parla anche di “laboratorio di coding” e di “esperienze relative al coding”, ma di nuovo non viene fornita alcuna spiegazione del termine.

Il termine coding è una voce inglese che deriva dal verbo to code e significa letteralmente ‘codifica’. Viene usato come sinonimo di programmazione, ovvero “sequenza di istruzioni fornite a un elaboratore elettronico per l’esecuzione di una determinata elaborazione” (Zingarelli 2020). La programmazione comprende diverse attività e fasi di progettazione, come l’ideazione, la codifica (cioè la trascrizione delle istruzioni in un linguaggio comprensibile dal computer), la prova, la correzione, la preparazione della documentazione, ecc.

A partire dal 2014 il coding diventa materia scolastica, con lo scopo di introdurre nella scuola i concetti base dell’informatica e, come abbiamo visto, di sviluppare il pensiero computazionale. Ma cosa significa insegnare la programmazione informatica ai bambini, soprattutto nel contesto della scuola primaria?

Ovviamente, non si tratta di insegnare loro a scrivere un codice. L’introduzione alla programmazione parte da giochi ed esercizi interattivi, basati su interfacce visuali; invece che linguaggi di programmazione testuali, vengono impiegati linguaggi di programmazione visuali, che ricorrono a blocchi o oggetti grafici che corrispondono a loro volta a righe di codice. In pratica, il bambino può spostare blocchi o oggetti grafici per determinare le azioni di uno o più personaggi di un videogioco e dunque scrivere il programma; oppure, avendo a disposizione una lista di istruzioni, può combinarle usando la logica in modo da raggiungere l’obiettivo richiesto. Nel Piano nazionale per la scuola digitale viene citato anche il metodo unplugged (o coding unplugged), ovvero l’introduzione alla logica della programmazione senza l’uso degli strumenti digitali, ad esempio usando i fogli di carta e le matite colorate. Utilizzando un linguaggio simbolico (come le frecce), uno studente scrive una serie di istruzioni che permettono di colorare determinate caselle di un foglio di carta a quadretti; i suoi compagni dovranno seguire le sue istruzioni in modo da riprodurre il disegno.

Una volta chiarito cosa si intende per coding in ambito scolastico, possiamo finalmente occuparci dell’argomento dal punto di vista linguistico, affrontando anche la questione terminologica. Come già accennato, coding è un prestito dalla lingua inglese che viene comunemente considerato sinonimo di programmazione. Gli unici dizionari sincronici che registrano il termine, marcandolo come specialistico dell’informatica, sono lo Zingarelli, che lo inserisce dal 2016 e lo data 2013, e il Garzanti, che lo include dall’edizione 2017. La definizione è piuttosto simile: “programmazione per software e web, soprattutto come disciplina scolastica che ha lo scopo di introdurre nella scuola i concetti di base dell’informatica” (Garzanti 2017). Treccani non lo registra nel Vocabolario ma lo include nel repertorio dei Neologismi 2018, con la seguente definizione:

coding s. m. inv. Capacità di programmare, di apprendere la scrittura di un codice informatico per la composizione di un programma.

La prima attestazione di coding riportata da Treccani risale al 2013:

La tecnologia è uno strumento per far meglio la scuola, non il suo obiettivo ovviamente. L’obiettivo della scuola è l’apprendimento, cosa che in realtà, in questo momento, si può prendere ovunque. Cioè, se io avessi 15 anni imparerei a fare coding a Code Academy Online da solo. È facilissimo, è un gioco addirittura. Mentre per anni ci hanno detto che studiare non serve a nulla, io dico sempre che studiare è l’unica cosa che ci salverà. (Timothy Dissegna, “Studiare la nostra salvezza” Se lo dice Luna, crediamoci, “Messaggero Veneto”, 13/11/2013, p. 52)

Ma risulta un caso isolato; è soltanto dal 2014 che iniziano a registrarsi attestazioni più frequenti, sia in rete sia sulla stampa. La prima attestazione di coding (inteso come materia scolastica) sui quotidiani risale a maggio 2014 e fa riferimento all’insegnamento del coding negli Stati Uniti:

Tutti pazzi per il linguaggio dei programmatori. L’anno scolastico che si sta chiudendo in America verrà ricordato come quello del coding craze: migliaia di insegnanti e genitori che si sono all’improvviso convinti della necessità di integrare (spesso fin dalle elementari) gli studi dei loro figli con i primi rudimenti di computer science: la scrittura dei codici informatici. La materia non è certo nuova, ma fino a un paio d’anni fa il coding era considerata [sic] una materia da doposcuola per qualche appassionato, o una specialità da istituti tecnici, come la lavorazione del legno. (Massimo Gaggi, Lezioni di informatica sin dalle elementari, “Corriere della Sera”, rubrica Visti da lontano, 30/05/2014, p. 59)

La presenza del sostantivo sui quotidiani è piuttosto contenuta: 376 risultati sulla “Repubblica”, 109 sulla “Stampa” e 203 sul “Corriere della Sera”. Più consistente il numero di attestazioni su Google Libri, con ben 19.000 risultati. Massiccia anche la presenza sul web: la ricerca su Google per le pagine in italiano restituisce infatti più di 4 milioni di risultati (i dati si riferiscono a una ricerca generale della forma, non soltanto in questo nuovo significato).

Dai dati relativi alla presenza in rete sembra che il sostantivo sia ormai acclimatato nella nostra lingua; tuttavia, le statistiche di Google Trends (che fornisce dati relativi alle interrogazioni effettuate sul motore di ricerca) ci mostrano che l’attenzione per tale argomento è cresciuta esponenzialmente dal 2014 e che tuttora il termine raggiunge il massimo picco di interesse nelle ricerche. Lo stesso Google ci fornisce una serie di suggerimenti sulle interrogazioni effettuate da altri utenti.


Guardando questi dati, ci viene da pensare che questo alto tasso di ricerche non abbia a che fare soltanto con l’interesse per la disciplina ma che sia strettamente collegato alla comprensione del termine stesso, che evidentemente risulta poco trasparente. Come accennato prima, il MIUR non fornisce una definizione precisa di coding e, anzi, spesso è la stessa terminologia dei documenti ufficiali a non essere univoca. Ad esempio, nel comunicato stampa del 23 settembre 2014 in cui il MIUR presenta l’iniziativa “Programma il Futuro” (ma anche nella pagina di descrizione del progetto sull’omonimo sito) si parla di programmazione (coding) oppure di programmazione informatica; viceversa, nel comunicato di presentazione ufficiale alla stampa del 3 dicembre 2014 si fa riferimento al coding (programmazione informatica) o semplicemente al coding. Nel Glossario e nelle lezioni presenti sul sito programmailfuturo.it troviamo invece soltanto la voce programmazione.

La scelta di impiegare due termini per designare lo stesso concetto genera sicuramente qualche incomprensione; per di più, non risulta chiaro quale sia il motivo che ha portato a favorire il prestito non adattato coding invece del traducente italiano, già noto, trasparente e disponibile da tempo.

Come nota Licia Corbolante nel suo articolo Coding e Programmazione sul blog Terminologia etc., “privilegiarlo [rispetto] a programmazione ha anche un altro svantaggio: manca un verbo per descrivere l’azione corrispondente, come si ha invece con programmazione → programmare (scrivere codice è molto più vago di programmare, e comunque si usano linguaggi di programmazione e non *di coding)”.

In realtà, è l’individuazione di un traducente italiano a generare non pochi problemi. Arbitrariamente è stato impiegato il sostantivo programmazione, ma non si è tenuto conto né del fatto che in inglese coding e programming (‘programmazione’) denotano due concetti diversi, né del fatto che in ambito informatico spesso coding viene tradotto in italiano con codifica (vedi, infra, le citazioni dai dizionari di informatica).

Ma andiamo per gradi. In inglese il verbo to code, da cui deriva coding, ha diversi significati: specificare un codice genetico (per una proteina, un aminoacido, ecc.); inserire un codice; assegnare un codice; codificare; scrivere un codice, delle istruzioni o un programma per il computer, ecc. Anche il sostantivo programming ha molte accezioni: in informatica, indica il processo di pianificazione, scrittura ed esecuzione di un programma. In inglese, spesso, coding e programming vengono considerati sinonimi e il dibattito circa la loro differenza è ancora aperto. In realtà i due termini indicano due diversi concetti: coding fa riferimento al processo di scrittura del codice al fine di creare un programma; programming indica invece il processo generale di creazione del programma, che prevede una serie di attività, tra cui la codifica, l’analisi e l’implementazione di algoritmi, la comprensione delle strutture di dati, la risoluzione dei problemi, ecc. Per semplificare potremmo paragonare la programmazione al processo di scrittura di un libro, che coinvolge diverse fasi, e il coding alla stesura di uno dei capitoli.

In italiano, il sostantivo coding era usato in ambito informatico già da molto prima che il concetto fosse introdotto anche a scuola. È infatti possibile trovarne traccia nei dizionari di informatica già dagli anni ’70. Consultando alcuni di questi dizionari specialistici emerge proprio la differenza tra coding e programming: se, infatti, programming viene tradotto con programmazione, coding viene reso con codifica o, talvolta, con codificazione. Quanto alle definizioni, non sempre risultano chiare per i non addetti ai lavori e talvolta i significati sembrano sovrapporsi. In Informatica: dizionario enciclopedico di Paolo Luigi Monti (Milano, Jackson, 1987) e nel Dizionario di informatica: inglese/italiano di Angelo Gallippi (Milano, Tecniche nuove, 2006), la codifica (coding) è sia “la stesura delle istruzioni di un programma sulla base di un determinato diagramma di flusso (flow chart) o di uno o più algoritmi”, sia “la trasformazione (o traduzione) delle informazioni o di un messaggio in un insieme di segni”. La programmazione (programming) fa invece riferimento a “l’attività svolta da un programmatore e consistente nello scrivere le istruzioni che indicano a un computer le operazioni da compiere. Comprende le fasi di progettazione, in cui si decide ciò che il programma deve fare; codifica, tramite un linguaggio di programmazione per esprimere la logica del programma in una forma comprensibile dal computer; prova e correzione, per la scoperta ed eliminazione di eventuali errori; documentazione, in cui si scrivono i manuali di uso, e manutenzione, per adeguare il programma all’evoluzione delle esigenze del committente” (Dizionario di informatica: inglese/italiano).

Nel Dizionario di informatica di A. Antola (Milano, Mondadori, 1985) la codifica (codification o coding) è la “trasformazione (traduzione) di un messaggio o di una informazione. […] i circuiti di un calcolatore sono in grado di memorizzare o elaborare solo informazione codificata in binario perché ogni segnale elettrico viene fatto corrispondere ai due soli valori binari 0 e 1: poiché ogni segnale può rappresentare solo questi due valori, ogni informazione deve essere codificata tramite una sequenza di zero e di uno”. La programmazione (programming) invece indica “l’insieme di attività necessarie perché un calcolatore elettronico, cioè una macchina capace di eseguire un certo numero di semplici operazioni (o istruzioni), sia in grado di svolgere compiti e funzioni utili al mondo circostante. […] Volendo entrare più in dettaglio, si può dire che programmare un calcolatore significa ‘tradurre’ una qualsiasi funzione (come la risoluzione di un problema matematico, o il controllo di una macchina utensile) nella sequenza di codici macchina che, eseguiti dall’unità centrale del calcolatore, permettono di svolgere la funzione assegnata”.

Nel Computer dictionary: dizionario dei termini di informatica (Redmond Milano, Microsoft press Mondadori informatica; 1994) la codifica “è l’atto di programmare, in particolare di generare codice sorgente nel linguaggio scelto dal programmatore”.

Nel Dizionario di informatica: inglese/italiano di Angelo Gallippi, come traducenti di coding sono proposti sia codifica che codificazione, con lo stesso significato. Il Dizionario di informatica di A. Chandor (ed. italiana a cura di Giovanni Rapelli, Bologna, Zanichelli, 1972) – il più antico tra quelli consultati – specifica invece che la codifica (coding), è la “stesura delle istruzioni di un programma”, mentre la codificazione (coding) indica l’attività di “rappresentare dati in forma digitale codificata (cioè sotto forma di serie di impulsi ciascuna rappresentante un carattere o simbolo)” o quella di “sostituire codici numerici (o alfabetici, o alfanumerici) alla descrizione di fatti o cose allo scopo di facilitarne la successiva elaborazione automatica”. Il primo termine fa riferimento al verbo inglese to code, il secondo anche al verbo to encode, entrambi traducibili con codificare. Anche il Dizionario di elettronica di Stan Gibilisco e Neil Sclater (ed. italiana a cura di Daniele Fuselli, Bologna, Zanichelli, 1993) distingue tra codifica (encoding), cioè “il procedimento di traduzione di una lingua comunemente parlata o scritta come l’inglese o il giapponese in un codice” e codificazione (coding), ovvero “il processo che porta alla formulazione di un codice”.

Oltre a coding e programming, viene mantenuta anche la distinzione tra le persone che si occupano di svolgere tali attività, cioè coder e programmer. Nel Dizionario di informatica di A. Chandor il programmer (programmatore) è la “persona responsabile della preparazione di programmi a partire dalle relative specifiche di programma”; il codificatore (coder) è la “persona che scrive le istruzioni di un programma a partire dai flow chart preparati da altri. Differisce dal programmatore, il quale provvede sia alla stesura del flow chart che alla codifica in base ad esso”. È diverso anche dal codificatore (encoder), cioè il “dispositivo che converte segnali in forma digitale codificata adatta per un determinato procedimento di elaborazione”.

La separazione tra i due ruoli non sembra però essersi mantenuta nella lingua comune, tanto che ormai, al pari di coding e programmazione, anche coder e programmatore sono considerati sinonimi.

Le prime attestazioni di coder rintracciate in rete provengono dalla rivista “L’Espresso”; in entrambi i casi, il termine si trova tra virgolette, a segnalare che si tratta di un forestierismo, di cui viene fornita anche la traduzione italiana [i due esempi sono il risultato di una ricerca effettuata su Google Libri; purtroppo, non sono presenti contesti più estesi né maggiori informazioni sui riferimenti della rivista]:

Grande competenza informatica per i “coders”, i programmatori di software. Ma negli ultimi anni i due grandi filoni si stanno avvicinando, sotto il segno dei games. (“L’Espresso”, 2003)

Questa arte di destreggiarsi tra algoritmi e linee di codice è la specialità dei “coders” (esperti di programmazione informatica). (“L’Espresso”, 2005)

Tenuto conto delle diverse definizioni di coding/codifica(zione)/programmazione, la scelta di un valido traducente in italiano per indicare la materia scolastica risulta piuttosto difficile.

Abbiamo appurato che in inglese coding e programming denotano due diversi concetti, anche se la loro differenza non sempre risulta netta; in ogni caso, nei dizionari inglesi, non viene fatto alcun riferimento a coding come disciplina scolastica. Abbiamo inoltre visto che nei dizionari specialistici informatici coding viene tradotto con codifica(zione) e non con programmazione, che fa invece riferimento al termine inglese programming. Lo stesso avviene nei dizionari inglese-italiano, come ad esempio il Sansoni Inglese.

Codifica risulterebbe quindi un traducente più legittimo. In realtà, se tale traducente è adatto in ambito informatico, non sembra possibile applicarlo all’insegnamento della materia scolastica. Quando si parla di coding a scuola, infatti, si fa riferimento alle attività di introduzione all’informatica. Non si tratta, come indicato dal sostantivo codifica, né di scrivere codice sorgente (gli studenti non scrivono direttamente righe di codice), né di tradurre un messaggio in codice (è vero che, ad esempio nel coding unplugged, lo studente scrive una serie di istruzioni in un codice, ma questo è stabilito a priori da un insegnante), così come non si tratta, come espresso da programmazione, di ideare e realizzare un programma vero e proprio, con tutte le attività che ne conseguono. In ambito scolastico, sarebbe dunque più adeguato, se si vuole mantenere il prestito integrale coding, non suggerirne la sinonimia con programmazione; o, ancora meglio, favorire un sostantivo italiano che è sicuramente noto, trasparente e facilmente applicabile alle diverse situazioni: l’insegnamento dell’informatica.

Resta da decidere quale potrebbe essere il nome da assegnare a tale materia scolastica.

Un’ipotesi potrebbe essere quella di chiamarla preinformatica, così come viene chiamato pregrafismo (o prescrittura) l’insieme delle attività che precedono l’apprendimento della scrittura. Il problema è che esiste ed è già in circolazione da diversi anni l’aggettivo preinformatico (spesso usato in relazione a era, epoca, fase, periodo) con il significato di ‘antecedente l’avvento dell’informatica’; il nome della disciplina scolastica dovrebbe invece indicare l’insieme delle attività ed esercizi che introducono all’informatica, sviluppandone competenze di base. Inoltre, anche se l’insegnamento della preiformatica potesse andare bene nel contesto della scuola primaria e al massimo della secondaria di primo grado, non potrebbe essere adatto alla secondaria di secondo grado, dove lo studio della materia è comunque più avanzato. Tra l'altro, nelle scuole superiori l'insegnamento del coding viene spesso chiamato principi di informatica o simili (e anche nel sito del progetto “Programma il Futuro” si legge: “Per la formazione al Pensiero Computazionale nella Scuola Secondaria di SECONDO grado il progetto Programma il Futuro suggerisce di seguire il corso Princìpi dell'Informatica di Code.org” [link: https://programmailfuturo.it/come/secondaria-secondo-grado/introduzione]).

Alla luce di tali considerazioni, ci sembra più opportuno seguire la strada intrapresa dagli istituti superiori ed estendere tale proposta alle scuole di ogni ordine e grado; si potrebbe quindi chiamare la materia con una delle seguenti denominazioni: principi di informatica, basi di informatica o fondamenti di informatica.