Google Blockly – Un ottimo approccio alla didattica della programmazione

Di - 12 June 2012 - in

Uno dei primi ostacoli che si trova davanti chi fa didattica sulla programmazione è il fatto che, prima di far mettere le mani sulle istruzioni di codice, è necessario insegnare a risolvere problemi  in maniera algoritmica. Non è cosa facile, poiché impone di sapere cosa il computer può o non può fare, ma va fatta prescindendo dagli aspetti tecnici e sintattici del linguaggio di programmazione che si intende poi utilizzare.

Esistono diversi modi per fare questo, molti sono varianti dell’utilizzo di diagrammi di flusso, che però non sempre consentono di rendersi conto facilmente degli errori che si stanno introducendo. Altri sono linguaggi di programmazione grafici, ovvero linguaggi che permettono, unendo dei simboli rappresentanti le funzioni, di ottenere programmi funzionanti.

Da poche settimane è disponibile su Google Code Blockly, un linguaggio di programmazione grafico particolarmente interessante.

Si tratta di un progetto da considerare una bozza per dimostrare le potenzialità dell’idea. Non è scaricabile (si può ovviamente scaricare il codice, è Open Source, ma non c’è un pacchetto pronto all’uso) ma si può utilizzare direttamente online in un comodo editor, che permette anche l’esportazione in Dart, Javascript, Python ed XML.

Tutte le funzioni del linguaggio sono rappresentate come pezzi di un puzzle, ai quali si possono collegare le altre funzioni, o gli enunciati. Il linguaggio è di tipo procedurale, con un supporto alla creazione di funzioni ancora embrionale (al momento in cui scrivo non è possibile creare funzioni vere e proprie con valori di ingresso, ma il loro supporto verrà aggiunto a brevissimo), e contiene già un buon numero di funzioni di libreria  di base.

Il linguaggio è di livello relativamente basso: contiene funzioni matematiche, strutture di controllo, valutatori logici e funzioni davvero basilari per l’utilizzo delle stringhe. In un linguaggio utile alla didattica, una volta inserito un buon supporto per la creazione di funzioni, non si sente davvero il bisogno di altro. Delle funzioni ad alto livello disturberebbero molto.

Nonostante il basso livello, però, gli aspetti tecnici come la tipizzazione delle variabili sono totalmente trasparenti al programmatore, che si trova sostanzialmente a lavorare con i soli tipi “numero” e “stringa” in maniera molto naturale.

La documentazione è molto scarna (verrà migliorata), ma la grande intuitività del sistema la rende abbastanza superflua: basta selezionare il pezzo di puzzle necessario e legarlo agli altri.

Come si vede nella figura in cima all’articolo, nella quale ho scritto un programmino banale per il calcolo di un fattoriale, quello che si ottiene una volta finito il lavoro è praticamente un programma scritto in pseudocodice, che renderà naturalissimo l’apprendimento successivo di un linguaggio vero e proprio, che sembrerà effettivamente facile come un puzzle. Aiuta in questo la possibilità di tradurre in altri linguaggi, vedendo in tempo reale cosa cambia modificando la struttura del puzzle.

L’aspetto grafico piacevole e il supporto, che verrà introdotto a breve, per le lingue diverse dall’inglese, lo rende uno strumento utile anche a chi avesse bisogno di uno strumento per insegnare a bambini in età scolare a ragionare su algoritmi, anche se non con il fine di iniziare a programmare.

Il sistema è ancora imperfetto, e non permette di salvare i programmi scritti. Inoltre, in caso di errori nel codice che mandano qualcosa in loop infinito (uno degli errori piú comuni quando si imparano ad utilizzare le strutture di controllo) l’unico modo di uscirne è chiudere la pagina del browser, perdendo il lavoro fatto.

Si tratta però di un’ottima idea, in piena fase di sviluppo e crescita. Vi invito a provarlo, soprattutto se vi occupate di didattica, e di inviare feedback agli sviluppatori in modo da poterlo migliorare sempre di piú.

Appena verrà introdotto un supporto accettabile alle funzioni, inizierò a scrivere qualche articolo orientato a ragazzi e bambini alle prime armi sull’utilizzo di questo strumento.

Buon divertimento!

Leave a Reply

Lorenzo Breda Articolo scritto da

Studente di Informatica a Roma, si occupa di programmazione web sopratutto lato server, e di accessibilità del web. Utilizza e ama Debian GNU/Linux, e si interessa di fisica, fumetto, trekking e fotografia (gli ultimi due possibilmente abbinati). Collabora con Googlab da aprile 2012.

Contatta l'autore

Previous post:

Next post: