Rivista #230: EDUBLOCKS, come passare da Scratch a Python

Tra i contenuti del fascicolo 230 (Novembre 2018), attualmente in edicola, ecco un articolo dedicato a Edublock, un linguaggio grafico a blocchi, simile a Scratch, che genera automaticamente sorgenti Python.

La competenza principale da acquisire, per muoversi da “produttore”, nel vasto mondo dell’informatica, è la capacità di realizzare “programmi” per mettere un computer nelle condizioni di funzionare secondo i nostri desideri. In estrema sintesi, saper sviluppare applicazioni che esprimano funzionalità desiderate, o richieste da terzi, per utilizzo proprio, o a scopo commerciale. Dopo aver aperto questa porta, ci si presenta un panorama vastissimo, dove le capacità di programmare spaziano nei campi di applicazione più disparati. Si va dalle ormai diffusissime applicazioni web, disponibili per tutti i tipi di periferiche, PC, tablet, smartphone e televisori, alle applicazioni di tipo gestionale ed amministrativo  / fiscale. Non dimentichiamo i domini specializzati verticalmente come i videogiochi, le applicazioni medicali, robotiche, di elaborazione di immagini, video, di gestione di basi di dati, di calcolo statistico, di automazione industriale, di domotica, di comunicazione, di network sociale e di ausilio alla sicurezza. In questo elenco non possiamo trascurare quelle che sono considerate tecnologie emergenti, anche se covano, in silenzio, negli istituti di ricerca già da diversi decenni, come le applicazioni di calcolo e simulazioni matematiche, le applicazioni di intelligenza artificiale, sistemi esperti e reti neurali, applicazioni di controllo di veicoli come treni, aerei ed auto.

Potremmo continuare, non fino all’infinito ma abbastanza vicino. A fronte di uno scenario così vasto, la prima domanda che ci si pone potrebbe essere: “OK, va bene, ma da dove cominciare?”.

Oggi sono disponibili molte decine di linguaggi di programmazione con i rispettivi ambienti di sviluppo, un’altrettanto vasta moltitudine di frame work e applicativi già pronti e rilasciati con licenze open source e free software, che coprono le più disparate esigenze applicative. Per non perdersi in una moltitudine di strade diverse, con “assaggi” di vari linguaggi ed ambienti di sviluppo, che possono lasciare spaesati con l’impressione di saltare di palo in frasca senza una direzione precisa, è opportuno prefissarsi un percorso di apprendimento che garantisca una buona continuità ed un buon ritorno dell’investimento.

Per prima cosa è opportuno familiarizzare con le basi della programmazione ed i relativi costrutti fondamentali, sequenza, alternanza (gestione condizioni) e ripetizioni (cicli condizionati e non). A seguire, è necessario approfondire la gestione delle condizioni (col caso estremo degli interrupt). Per affrontare questi argomenti, concentrandosi sulle logiche di base, senza la preoccupazione di rispettare la sintassi di un linguaggio testuale, è consigliabile, a nostro parere, e soprattutto per i più giovani, utilizzare un linguaggio visuale a blocchi, come Scratch, sul quale abbiamo già pubblicato diversi articoli e abbiamo affrontato nel libro “Entra nel mondo di Raspberry Pi 3”. Il linguaggio Scratch (https://scratch.mit.edu/) è un linguaggio didattico in continua evoluzione a cura del Media Lab dell’MIT e di una numerosa comunità. È completamente gratuito e disponibile su molteplici piattaforme tra le quali Raspberry Pi, dove è preinstallato sia nelle versioni 1.4 che 2, in modalità stand alone, nelle distribuzioni del sistema operativo Raspbian. Scratch è anche un linguaggio ad oggetti (gli sprite) ed è possibile definire funzioni riutilizzabili. Più di così. Una volta acquisite e sperimentate le conoscenze di base (e non solo) della programmazione, viene il momento di passare a realizzare applicazioni più complesse utilizzando un linguaggio di programmazione testuale.

Ancora una volta il nostro consiglio è di orientarsi verso il linguaggio Python. Questa è la scelta privilegiata ormai da una vasta comunità di operatori del settore, aziende ed istituti di formazione. Nel caso di Raspberry Pi il “Pi” sta appunto per Python, il principale linguaggio didattico scelto dalla fondazione. Python è un linguaggio interpretato, il che significa che al momento dell’esecuzione viene sottomesso per l’esecuzione il file “Human readable”, come si suol dire, senza necessità di compilazione preventiva. Un’ottima opportunità per quanto riguarda l’utilizzo didattico e nella sperimentazione e prototipazione di progetti e, perché no, anche nella realizzazione di applicazioni finali.

Riguardo alle perplessità sulle prestazioni legate al fatto che Python è un linguaggio interpretato, possiamo affermare che questo problema è molto limitato dal fatto che la stragrande maggioranza delle librerie disponibili in Python sono “wrapper” di librerie C++, quindi compilate e dalle prestazioni ottimizzate. Non solo, tutti i moduli che vengono richiamati all’interno dei nostri programmi Python, alla prima esecuzione, subiscono una sorta di precompilazione, in modo da migliorarne le prestazioni. Sono i moduli che appaiono magicamente nelle nostre librerie di programmi con l’estensione “.pyc”. A proposito di librerie, questa è la vera forza di Python. Ne esistono per tutte le esigenze; prima di scrivere codice per realizzare un’applicazione è obbligatorio cercare se esiste una libreria già disponibile, spesso se ne trova più d’una. Si va dal trattamento di immagini al data science, dai calcoli matematici all’intelligenza artificiale, dall’interfacciamento dei sensori più disparati alla produzione di musica. Nelle versioni “MicroPython” e “Circuit Python” il linguaggio si sta diffondendo su molti microprocessori, prima appannaggio dei linguaggi C e C++, PyBoard, micro:bit e MVCamera, solo per citarne alcuni.

Nel passare da una programmazione visuale basata su blocchi grafici all’utilizzo di un linguaggio testuale come Python, una delle barriere principali è rappresentata dall’assenza di un’interfaccia grafica che permetta il “drag and drop” degli elementi del linguaggio, in una modalità che permette il rispetto della sintassi del linguaggio, grazie al meccanismo di “incastro” guidato e controllato tra i vari blocchi.

A questa esigenza ha posto rimedio lo studente inglese Joshua Lowe, uno sviluppatore Python di 14 anni (non è un errore di battitura, proprio quattordici anni) che nel maggio 2018 ha presentato il suo lavoro nel corso della Conferenza PyCon 2018, la conferenza che raccoglie professionisti, ricercatori e appassionati del linguaggio di programmazione più bello che ci sia (questo per loro affermazione).

Il lavoro in questione è “EduBlocks”, uno strumento di programmazione visuale che permette di facilitare la transizione da un ambiente di programmazione visuale verso un linguaggio testuale, nella fattispecie, guarda caso, il linguaggio Python.

Questo strumento è particolarmente indirizzato alle strutture di formazione, come scuole e associazioni, ma, ovviamente, è a disposizione di chiunque. EduBlocks permette di “scrivere” un programma utilizzando i blocchi grafici, come in Scratch, e poi “tradurre” il lavoro svolto in linguaggio Python. Unico vincolo è dato dal fatto che il listato risultante viene prodotto per essere eseguito in Python 3. Noi abbiamo provato ad eseguire il codice prodotto con la release 2.7 di Python e nella maggior parte dei casi tutto ha funzionato normalmente. La scarsa richiesta di risorse di elaborazione lo rende ideale per essere installato ed utilizzato su Raspberry Pi.

L’articolo prosegue con la descrizione di EduBlocks e con la presentazione di alcuni programmi.

EDUBLOCKS

….

Come secondo esempio vi proponiamo un semplice programma che permette di interfacciare lo strumento Sonic Pi. Un piccolo ritmo ossessivo. Per far questo, se Raspberry è collegato ad un monitor HDMI, tutto funzionerà a dovere. In caso contrario dovrete utilizzare un altoparlante esterno preamplificato, collegato al connettore audio/video di Raspberry Pi. Cliccate col tasto destro del mouse sull’icona a forma di altoparlante in alto a destra del desktop, Scegliete la periferica, in questo caso “Analog”. Cliccando col tasto sinistro sulla stessa icona potete regolare il volume.

Componete il programma visibile in Fig. 10. Salvatelo. Dalla voce di menu “Programming” eseguite “Sonic Pi”. Attendete che vada in esecuzione, poi minimizzatelo. Ora tornate alla finestra di EduBlocks” e cliccate sul pulsante “Run”. Se aprite la finestra di Sonic Pi vedrete il programma in esecuzione, oltre che sentire la “musica” prodotta.

Quando ne avrete avuto abbastanza, terminate l’esecuzione con <CNTRL+c> dalla finestra di terminale di EduBlocks. Ricordate? Non vale uscire con <ESC>, altrimenti il “ritmo” continuerà imperterrito.

Se siete appassionati di musica questo è un ottimo strumento. In ogni caso è divertente ugualmente. Se volete cambiare i colori di sfondo cliccate sul pulsante “Theme” e scegliete. Sperimentate sempre.

L’articolo completo è pubblicato sul numero 230, Novembre 2018, acquistabile in tutte le edicole.

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Main Menu