Quasi tutti usano Internet e molti vogliono con­tri­bui­re a plasmarlo. La vita quo­ti­dia­na porta con sé varie dif­fi­col­tà che possono essere risolte con l’aiuto di ap­pli­ca­zio­ni pro­gram­ma­te e i ri­spet­ti­vi di­spo­si­ti­vi finali. Ma gli ostacoli da superare non sono in­dif­fe­ren­ti. Un programma fun­zio­nan­te è co­sti­tui­to da una varietà di blocchi, ovvero un lin­guag­gio di pro­gram­ma­zio­ne composto da molti “vocaboli”: variabili, costanti, cicli, con­di­zio­ni, moduli, azioni, espres­sio­ni regolari. Ci sono, inoltre, vari col­le­ga­men­ti e in­te­gra­zio­ni.

Lavorare con questi linguaggi di pro­gram­ma­zio­ne testuale richiede una solida co­no­scen­za di base, una grande capacità di astra­zio­ne e una con­cen­tra­zio­ne co­stan­te­men­te elevata. L’ap­pren­di­men­to di un lin­guag­gio di pro­gram­ma­zio­ne testuale può essere pa­ra­go­na­to all’ap­pren­di­men­to di una lingua straniera. Per rimuovere queste barriere, a partire dagli anni ’60 sono stati in­tro­dot­ti gli ambienti di sviluppo visuale. I pro­gram­ma­to­ri non uti­liz­za­no più codici di testo difficili da unire gli uni agli altri, ma elementi grafici.

Che cos’è la pro­gram­ma­zio­ne visuale

Nella pro­gram­ma­zio­ne visuale, gli elementi del lin­guag­gio di pro­gram­ma­zio­ne sono raf­fi­gu­ra­ti gra­fi­ca­men­te come blocchi. Si parla quindi anche di pro­gram­ma­zio­ne grafica. Dall’aspetto e dall’iscri­zio­ne di questi blocchi si può già capire il ruolo che devono svolgere nel codice del programma. I pit­to­gram­mi servono per l’orien­ta­men­to. Si evitano così strutture altamente complesse o astra­zio­ni eccessive.

N.B.
La diffusa ab­bre­via­zio­ne VPL sta per il termine inglese “Visual Pro­gram­ming Language”.

Lo stile di pro­gram­ma­zio­ne di base, detto anche paradigma di pro­gram­ma­zio­ne, presenta, tra l’altro, le seguenti proprietà:

  • è visuale: gli elementi sono inseriti nel programma tramite Drag-and-Drop.
  • È orientato agli eventi: ogni fase del programma inizia quando si verifica un evento pre­de­fi­ni­to.
  • È im­pe­ra­ti­vo: la pro­gram­ma­zio­ne consiste in una sequenza di comandi.
  • È orientato agli oggetti: ai singoli oggetti sono assegnati compiti specifici.

A seconda del lin­guag­gio di pro­gram­ma­zio­ne visuale uti­liz­za­to, i pro­gram­ma­to­ri usano molti elementi di programma pre­de­fi­ni­ti in grado di re­gi­stra­re testi e immagini, essere disposti lo­gi­ca­men­te ed essere mo­di­fi­ca­ti nell’aspetto o nell’azione che svolgono. Gli elementi di controllo con­sen­to­no di inserire azioni che dipendono da de­ter­mi­na­te con­di­zio­ni. Gli operatori con­sen­to­no col­le­ga­men­ti e calcoli ma­te­ma­ti­ci, mentre variabili e link possono essere inseriti, rimossi o mo­di­fi­ca­ti. Gli elementi di pro­gram­ma­zio­ne sono pro­get­ta­ti in modo tale da poter essere in­ca­stra­ti come pezzi di un puzzle. L’editor rileva l’eventuale in­com­pa­ti­bi­li­tà logica degli elementi e lo segnala acu­sti­ca­men­te o vi­si­va­men­te mediante i colori, che possono, ad esempio, schia­rir­si. Gli elementi di pro­gram­ma­zio­ne sono so­li­ta­men­te combinati in gruppi dello stesso colore, fa­ci­li­tan­do­ne la selezione.

Le etichette dei singoli elementi e i relativi processi rap­pre­sen­ta­no espres­sio­ni o azioni umane come “Fai…”, “Di’…“, “Premi il bottone…” o “Aspetta che…”. Gli elementi del programma sono combinati mediante drag&drop. La com­pa­ti­bi­li­tà degli elementi grafici può essere ri­co­no­sciu­ta già dalla loro forma, che deve com­ba­cia­re. Ciò consente di compilare fa­cil­men­te, cioè in­tui­ti­va­men­te, sequenze senza dover conoscere un lin­guag­gio di pro­gram­ma­zio­ne testuale.

Cosa rende la pro­gram­ma­zio­ne visuale diversa dalla pro­gram­ma­zio­ne “normale”?

La dif­fe­ren­za prin­ci­pa­le è che i pro­gram­ma­to­ri visuali non devono lavorare con grandi quantità di sintassi di comando. Inoltre non sono costretti a imparare i “vocaboli” di un lin­guag­gio di pro­gram­ma­zio­ne. Nel caso della pro­gram­ma­zio­ne “normale”, è ne­ces­sa­ria un’elevata capacità di astra­zio­ne per ottenere il risultato de­si­de­ra­to dalle istru­zio­ni del lin­guag­gio di pro­gram­ma­zio­ne. Sebbene molti editor di pro­gram­ma­zio­ne di­spon­ga­no della funzione di com­ple­ta­men­to au­to­ma­ti­co che completa le istru­zio­ni e chiude le procedure stesse, è comunque possibile che si ve­ri­fi­chi­no dei refusi durante la di­gi­ta­zio­ne. Basta di­men­ti­ca­re un un­der­sco­re e l’intera routine risulta in un messaggio di errore. La con­se­guen­za è una laboriosa ri­so­lu­zio­ne del problema.

Come per l’ap­pren­di­men­to di una lingua straniera, la pro­gram­ma­zio­ne manuale prevede, in­nan­zi­tut­to, la fa­mi­lia­riz­za­zio­ne con i “vocaboli” più im­por­tan­ti per “co­mu­ni­ca­re”. Ogni nuovo compito di pro­gram­ma­zio­ne richiede l’ap­pren­di­men­to di nuovi vocaboli. Il numero di vocaboli dei moderni linguaggi di pro­gram­ma­zio­ne testuale è cresciuto espo­nen­zial­men­te nel corso degli anni al fine di tenere il passo con le esigenze moderne di Internet. Le sezioni di pro­gram­ma­zio­ne possono essere salvate in file separati e integrate nel processo di pro­gram­ma­zio­ne. Anche se questo facilita la pro­gram­ma­zio­ne testuale, richiede comunque una pa­no­ra­mi­ca completa, un codice ben com­men­ta­to e una do­cu­men­ta­zio­ne det­ta­glia­ta.

Vantaggi e svantaggi della pro­gram­ma­zio­ne visuale

La pro­gram­ma­zio­ne visuale elimina le barriere tecniche alla pro­gram­ma­zio­ne. Così, anche i bambini possono ci­men­tar­si in modo ludico nella pro­gram­ma­zio­ne. I pro­gram­ma­to­ri possono con­cen­trar­si com­ple­ta­men­te sui processi logici nel loro programma senza di­stra­zio­ni. Ciò si traduce in risultati ra­pi­da­men­te ap­pli­ca­bi­li che stimolano a creare altri progetti, anche più grandi.

Fatto

Il lin­guag­gio di pro­gram­ma­zio­ne visuale Scratch, dai suoi inizi nel marzo 2007 alla metà del 2015, ha avuto circa 1.300.000 utenti re­gi­stra­ti online di un’età compresa tra gli 8 e i 16 anni. Sono stati pub­bli­ca­ti online più di 3.000.000 di progetti Scratch svi­lup­pa­ti au­to­no­ma­men­te.

Vantaggi della pro­gram­ma­zio­ne visuale

Il volume di ap­pren­di­men­to è ridotto: in linea di principio, un’idea può essere “scritta” im­me­dia­ta­men­te come programma. Simboli il­lu­stra­ti­vi fa­ci­li­ta­no la com­pren­sio­ne. Poiché non presenta alcuna sintassi, non possono ve­ri­fi­car­si errori di di­gi­ta­zio­ne. Questo aiuta i pro­gram­ma­to­ri a com­pren­de­re il concetto di base di un lin­guag­gio di pro­gram­ma­zio­ne.

I linguaggi di pro­gram­ma­zio­ne visuale rendono possibile la pro­gram­ma­zio­ne esplo­ra­ti­va: basta iniziare e costruire un programma passo dopo passo ancora prima che la soluzione esatta sia stata ideata. I passaggi esistenti del programma possono essere ri­pe­tu­ta­men­te testati per ve­ri­fi­car­ne la fun­zio­na­li­tà. I pro­gram­ma­to­ri lavorano prin­ci­pal­men­te con soluzioni basate su browser che fun­zio­na­no in­di­pen­den­te­men­te dal sistema operativo del computer. I risultati possono essere esportati in altri linguaggi di pro­gram­ma­zio­ne testuale.

Svantaggi della pro­gram­ma­zio­ne visuale

Parte della pro­gram­ma­zio­ne grafica è legata a spe­ci­fi­che aree di ap­pli­ca­zio­ne o a specifici sistemi, hardware o terminali. In genere, non è possibile creare singoli elementi o ag­giun­ge­re commenti per altri par­te­ci­pan­ti al progetto. Ciò rende la visione d’insieme più difficile quando i programmi sono leg­ger­men­te più complessi. Inoltre, i progetti pro­gram­ma­ti vi­sual­men­te possono essere ri­di­men­sio­na­ti solo in minima parte, il che ne complica l’adat­ta­men­to a progetti di grandi di­men­sio­ni o in rapida crescita. Il vantaggio della pro­gram­ma­zio­ne esplo­ra­ti­va può tra­sfor­mar­si ra­pi­da­men­te in svan­tag­gio, in termini di codice non strut­tu­ra­to, nel caso di progetti più grandi. Programmi di questo tipo sono difficili da mantenere ed espandere.

I vari linguaggi di pro­gram­ma­zio­ne visuale

Di seguito vi pre­sen­tia­mo una piccola selezione dell’ampia varietà di linguaggi di pro­gram­ma­zio­ne visuale esistenti:

Scratch

Scratch è il lin­guag­gio di pro­gram­ma­zio­ne visuale più famoso e uti­liz­za­to. È stato pub­bli­ca­to per la prima volta nel 2007 e ha l’obiettivo di sem­pli­fi­ca­re la pro­gram­ma­zio­ne per i bambini. ScratchJr è dedicato ap­po­si­ta­men­te ai bambini tra i 5 e i 7 anni ed è di­spo­ni­bi­le gra­tui­ta­men­te. Alcuni altri linguaggi per la pro­gram­ma­zio­ne grafica sono stati svi­lup­pa­ti sulla base di Scratch, come BYOB 4.0/Snap!.

Blockly

Blockly è una co­sid­det­ta libreria con un editor di pro­gram­ma­zio­ne visuale che viene aggiunto alle ap­pli­ca­zio­ni Android, iOS e Web. Anche Blockly utilizza blocchi grafici dentati. Gli algoritmi pro­gram­ma­ti possono essere esportati, ad esempio, come codice Ja­va­Script o Python.

NEPO

NEPO è basato su Scratch e utilizza la libreria Blockly di­spo­ni­bi­le gra­tui­ta­men­te, ma è stato integrato con le proprie fun­zio­na­li­tà. Uno dei vantaggi di NEPO sono le in­ter­fac­ce aperte, che possono con­trol­la­re anche altri sistemi hardware o robot.

Grape

Grape è un ambiente di sviluppo grafico che permette anche ai prin­ci­pian­ti di pro­gram­ma­re mi­cro­con­trol­lo­ri con semplici passaggi.

App Inventor

App Inventor proviene ori­gi­na­ria­men­te da Google. L’in­ter­fac­cia grafica uti­liz­za­ta consente di pro­gram­ma­re ap­pli­ca­zio­ni per telefoni cellulari Android con blocchi grafici.

Ardublock

Ardublock è un lin­guag­gio di pro­gram­ma­zio­ne grafica spe­ci­fi­ca­men­te pro­get­ta­to per la pro­gram­ma­zio­ne del mi­cro­con­trol­lo­re Arduino senza input testuale.

Pure Data

Pure Data è un lin­guag­gio di pro­gram­ma­zio­ne visuale orientato al flusso di dati ed è anche un ambiente di sviluppo. Pure Data produce software mul­ti­me­dia­li in­te­rat­ti­vi, ad esempio per sin­te­tiz­za­to­ri.

Lego Mind­storms

Lego Mind­storms include una serie di prodotti del pro­dut­to­re di gio­cat­to­li Lego il cui nucleo è un mattone Lego pro­gram­ma­bi­le. Consente di costruire e pro­gram­ma­re robot e altri sistemi in­te­rat­ti­vi con motori elettrici interni, sensori e parti della tec­no­lo­gia Lego.

Vai al menu prin­ci­pa­le