Coding: pensieri sparsi

Lettura : Scrittura = Uso del computer : Programmazione

Si impara a leggere e a scrivere da piccoli, perché è il momento in cui si impara con maggiore facilità, per sempre.

Tutti imparano a scrivere, anche se pochi diventeranno scrittori.

Non ha senso imparare a leggere senza imparare a scrivere.

In quasi tutti i mestieri del mondo, tranne forse i più umili, è necessario saper scrivere. La stessa cosa vale oggi: non c’è professione qualificata che non richieda almeno la conoscenza delle basi della programmazione

Anche un foglio di Excel è un programma (input -> algoritmo -> output) in linguaggio funzionale.

Tempo fa, a una platea di programmatori di tutte le età, ho chiesto: “Chi di voi ha scritto il suo primo programma prima dei 14 anni?” Hanno alzato la mano quasi tutti.

Cosa si impara con il coding

Si impara prima di tutto a porsi dei problemi, e poi a risolverli.

Si impara a ragionare con metodo, senza rinunciare alla intuizione.

Si impara a essere creativi e fantasiosi.

Si impara a ragionare in una lingua straniera.

Si impara a riciclare le soluzioni altrui adattandole al proprio caso.

Si impara a non arrendersi davanti alle difficoltà.

(post in progress)

micro:bit apertura con password

Per azionare il motore che apre la porta, occorre inserire la password pre-impostata (AABAA) premendo i bottoni A e B del micro:bit. Per confermare la password occorre premere contemporaneamente i bottoni A + B. Se la password è giusta, compare il segno di spunta e la porta si apre; altrimenti compare una X ed è possibile riprovare.

Quando compare il segno di spunta, è possibile inserire una nuova password premendo i bottoni A e B, confermando l’inserimento premendo contemporaneamente A + B. La nuova password viene visualizzata una volta prima di diventare attiva.

Per chiudere la porta, occorre premere insieme A + B senza inserire password.

Ovviamente, ogni volta che si riaccende il micro:bit si riparte dalla password pre-impostata.

Il codice in Python:

def on_button_pressed_a():
    global tentativo, nuovapassword
    if stato == "inserimento":
        tentativo = "" + tentativo + "A"
    else:
        nuovapassword = "" + nuovapassword + "A"
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_ab():
    global nuovapassword, stato, tentativo, password
    if stato == "inserimento":
        if tentativo == password:
            basic.show_icon(IconNames.YES)
            pins.servo_write_pin(AnalogPin.P0, 90)
            nuovapassword = ""
            stato = "modifica"
        else:
            basic.show_icon(IconNames.NO)
            stato = "inserimento"
            pins.servo_write_pin(AnalogPin.P0, 0)
        basic.pause(500)
        basic.clear_screen()
        tentativo = ""
    else:
        password = nuovapassword
        basic.show_string("" + (password))
        stato = "inserimento"
input.on_button_pressed(Button.AB, on_button_pressed_ab)

def on_button_pressed_b():
    global tentativo, nuovapassword
    if stato == "inserimento":
        tentativo = "" + tentativo + "B"
    else:
        nuovapassword = "" + nuovapassword + "B"
input.on_button_pressed(Button.B, on_button_pressed_b)

nuovapassword = ""
stato = ""
tentativo = ""
password = ""
password = "AABAA"
tentativo = ""
stato = "inserimento"
nuovapassword = ""
pins.servo_write_pin(AnalogPin.P0, 0)

Scratch: robot autonomo (line follower)

Il progettino della domenica è un robottino in grado di seguire una traccia. Scopo del gioco: per ogni percorso, trovare il giusto compromesso tra angolo, velocità, dimensioni e posizione dei sensori per battere il record su 10 giri, senza uscire di strada.

Durante il Devoxx4kids di Lugano ho usato una versione molto semplificata; questa invece ha un sacco di possibili impostazioni:

  • Scegliere il percorso: tasti da 1 a 5
  • Modificare la velocità: frecce SU/GIU
  • Modificare l’angolo di sterzata: frecce SINISTRA/DESTRA
  • Attivare/disattivare la traccia: tasto P
  • Visualizzare i record: tasto R
  • Partenza: SPAZIO

Premendo spazio il robot parte e compie 10 giri. Se riesce a compierli in tempo record per il percorso corrente, il progetto registra e mostra tempo, velocità e angolo di sterzata che hanno prodotto quel risultato.

Sviluppando questo progetto mi sono scontrato con una seria lacuna di Scratch: la gestione degli array. Dovendo creare una tabella di 3 colonne per 5 righe, me la sono cavata creando 3 liste da 5 elementi ognuna, ma non sono molto contento.

Fake News lo dici a tua sorella

Definizione di notizia:

“una informazione che ho bisogno di sapere e che nessuno mi ha ancora detto”

Se questo è il metro, quasi tutto quel che passa per i canali tradizionali è “fake news”. Ma il termine viene usato oggi per enfatizzare il pericolo legato alla proliferazione delle fonti di informazione, dove non esiste più la voce autorevole di riferimento e ogni notizia ha la stessa potenziale visibilità indipendentemente dalla fonte.

Esiste davvero questo pericolo?

Ogni nuova tecnologia comporta dei rischi, e viene adottata dalla società quando i vantaggi superano di gran lunga gli svantaggi. Dal momento in cui viene adottata da tutti al momento in cui la società prende consapevolezza dei rischi e adotta misure per ridurli,  passano  di solito parecchie decine di anni: pensa per esempio all’elettricità e ai salvavita, pensa alle automobili e alle cinture, all’airbag, all’ABS, alla guida autonoma. E puoi già vedere l’avvicinarsi di un futuro in cui non dovrai più insegnare ai tuoi figli, come prima cosa, a non scendere dal marciapiede.

Allo stesso modo il web è stato adottato dalla maggioranza della popolazione mondiale perché offre innumerevoli e irresistibili vantaggi rispetto al passato: primo fra tutti la violenta accelerazione della velocità di diffusione delle informazioni, e la moltiplicazione infinita delle fonti.

Penso che nessuno onestamente possa dire che si stava meglio quando avevamo un solo canale televisivo e un solo telegiornale. Il filtro alla fonte (all’unica fonte) certificava l’attendibilità dell’informazione, senza  nessuna possibilità di controllo o replica da parte dei consumatori. Le false notizie non erano smascherabili, oppure venivano smascherate dopo mesi o anni.

La colpa è del modello economico

Ma specialmente adesso con la crisi dell’editoria, c’è il bisogno urgente di richiamare sempre più lettori (che invece calano inesorabilmente) per venderli alla pubblicità; e le notizie gonfiate, distorte o inventate di sana pianta, il solleticamento degli istinti più bassi, non sono più una eccezione alla regola ma sono una necessità di sopravvivenza.

Io ti propongo che le fake news sono sempre esistite e che oggi sono in sensibile aumento perché sono premiate dal modello economico informazione in cambio di pubblicità; ed è vero che oggi a causa di internet si diffondono molto più velocemente di prima, ma è anche vero che grazie a internet è molto più facile e più veloce scoprirle, a volte nel giro di pochi minuti.

Che fare?

Se su internet  non esiste più il filtro alla fonte, e se non vuoi rimanere in balia dell’algoritmo, devi per forza imparare a usare il filtro a posteriori: devi chiederti sempre davanti a ogni notizia perché mi arriva, da che fonte, con quale scopo. Si tratta di un lavoro necessario ma duro e noioso, e per fortuna si cominciano a sviluppare strumenti che lo rendono automatico e che possono concorrere, se adottati su larga scala, a mitigare il problema.

E poi ovviamente l’educazione. Conosco una signora che da sempre ripete al figlio (ormai cinquantenne) “non andare nei pericoli”. Ecco, bisogna insegnare ai nostri figli ad attraversare questa nuova strada.

Competenze digitali

Competenze digitali:

Livello 1: cittadinanza digitale

La capacità di utilizzare la tecnologia e i media digitali in modo sicuro, responsabile ed efficace

Livello 2: creatività digitale

La capacità di diventare membri attivi dell’ecosistema digitale usando gli strumenti digitali per co-creare nuovi contenuti e realizzare le proprie idee

Livello 3: imprenditoria digitale

La capacità di utilizzare gli strumenti e i media digitali per affrontare sfide globali e per creare nuove opportunità

 

Strumenti necessari:

Capacità di gestire consapevolmente la propria identità digitale

Capacità di gestire equilibratamente il proprio tempo online

Capacità di gestire gli atteggiamenti negativi, propri e altrui

Capacità di implementare e gestire la sicurezza digitale

Capacità di implementare e gestire la riservatezza dei dati sensibili

Capacità di gestire e valutare le fonti di informazione online

 

 

 

Fonte:
World Economic Forum – 8 digital life skills all children need – and a plan for teaching them