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)

Errori nella condivisione dei dati

Quali sono gli errori commessi dagli analisti quando distribuiscono il loro lavoro ai colleghi?

Risponde Ken Gross, Chief Data Scientist presso The Chartis Group:

Tutte le analisi cercano di rispondere a precise domande o gruppi di domande. Nel distribuire i risultati ai colleghi, gli analisti spesso dimenticano di specificare chiaramente quale era la domanda che ha guidato la loro analisi. Gli analisti dovrebbero sempre specificare chiaramente, prima dei risultati, a quali domande si sta cercando di rispondere.

Inoltre, il processo di analisi è spesso iterativo, dove un primo gruppo di domande porta a nuove o più precise domande. Nel presentare i risultati, gli analisti dovrebbero incoraggiare gli interessati a combinarli con le loro conoscenze ed esperienze, per fare in modo che il processo iterativo diventi anche collaborativo

(da distinct values)

Robot Street Challenge 2018: simulazioni con Scratch

Per mio divertimento, e in vista della Robot Street Challenge 2018, ho creato due progetti con Scratch che simulano un robot “line follower” e un robot che risolve un labirinto. Il divertimento consiste nel variare i diversi parametri (percorso, velocità numero di sensori, eccetera) per capire come influiscono sui tempi di percorrenza. Enjoy!

Se hai suggerimenti per migliorare il codice, te ne sarò grato.

In azienda le ciofeche costano carissime

Giro per le aziende insubriche e vedo gente capace, preparata e volenterosa, a cui vengono affidati compiti gravosi e importanti, che lavora ancora con PC di modernariato e software anziano.

“Lavora” è un eufemismo: in realtà dovrei dire “lotta, fatica, si dispera e si abbronza alla luce della clessidra”.

Faccio i conti della serva: metti che quel collaboratore costi almeno 50.000 €/anno, e che con meno di 2.000 € di hw/sw nuovo la sua produttività aumenti del 10% (e il suo stress diminuisca del 75%).

Penso quindi che queste aziende non sappiano far di conto, e che non dureranno a lungo.

(Più è grande l’azienda, più è grave è il problema)

(E non tocchiamo l’argomento “amministrazione pubblica”)