Scratch

Scratch

Scratch è un linguaggio di programmazione visuale sviluppato dalla MIT Media Lab al fine di aiutare i ragazzi ad imparare il pensiero creativo e quindi iniziarli alle basi della logica computazionale ed al costruzionismo.

Viene usato principalmente da studenti, professori e parenti per la creazione di storie animate e semplici video games. Se si accede al sito https://scratch.mit.edu/ si possono creare i propri progetti, salvarli e metterli in condivisione con gli altri utenti.

Pensato per ragazzi dagli 8 ai 16 anni, Scratch 2 (rilasciato nel maggio 2013) viene visitato da milioni di utenti di tutte le età i quali condividono i propri progetti da un’ampia varietà di contesti tra cui scuole, musei, biblioteche, centri comunitari o semplicemente da casa.

Gli studenti apprendono tramite l’esperienza in un contesto stimolante, il quale li mette direttamente a contatto in modo pratico con i concetti che altrimenti, in ambienti scolastici normali, rimarrebbero puramente teorici o confinati alla pratica degli esercizi.

Se per esempio uno studente deve apprendere il significato delle variabili e la loro suddivisione tra gli insiemi, in un contesto scolastico normale riuscirà a sentire di aver compreso o di aver assimilato i concetti e saprà poi riusarli per gli esercizi futuri sempre però dentro di un contesto puramente astratto, dove saranno i professori o i libri ad indicare la via per poter raggiungere la comprensione di determinati argomenti.

Scratch, e in generale tutti i VPL educativi, mettono a disposizione un ambiente di sviluppo stimolante e semplice e per questo sono in grado di portare l’insegnamento dei concetti di base ad un livello di apprendimento differente.

Seguendo lo stesso esempio dello studente che deve imparare la differenza fra le variabili e la loro suddivisione tra gli insiemi, con Scratch, dopo aver seguito la spiegazione dei concetti base, potrà sviluppare un’idea, creare un prototipo, sperimentarlo, eseguire il debug, ricevere o dare informazioni e consigli agli altri studenti o dai professori, e dopo aver messo a confronto la propria esperienza con quella degli altri ridisegnerà il proprio progetto fino alla percezione di completamento e quindi alla consegna dello stesso. Attraverso tutte queste fasi che descrivono i processi di creazione di un qualsiasi progetto, lo studente apprenderà le nozioni riguardo le variabili utilizzandole per controllare la velocità di un’animazione, o per mostrare il punteggio di un gioco, per fare delle operazioni od anche dare le coordinate dei punti visualizzati sullo schermo eccetera eccetera…

Come si può intuire, l’approccio allo studio utilizzando i VPL è a 360º, lo studente non solo apprende la lezione ma rende personale l’esperienza del proprio studio, in quanto realizza qualcosa che esisteva nella sua immaginazione e che ora è concreta.

La mia personale esperienza con Scratch è stata molto positiva. Dopo aver creato un profilo sul loro sito, https://scratch.mit.edu/users/SandoR81/, ho cominciato a realizzare un programma che esegue la ricerca dei numeri primi all’interno di un numero scelto dall’utente. Il programma quindi oltre a dire se il numero scelto è un numero primo, con una serie di controlli permette di trovare tutti i numeri primi presenti tra 2 e il numero scelto.

Senza aver letto il manuale, sono riuscito in breve tempo a realizzare il seguente programma.

La rappresentazione grafica dei controlli, degli operatori, l’assegnazione delle variabili e gli altri componenti contenuti nel menù “script”, sono tutti molto intuitivi e facili da inserire ed usare nel programma. Il sito poi è di facile accesso e l’ambiente di sviluppo caricato dal browser è leggero e veloce.

Di seguito vi lascio dei link che potrebbero interessarvi:

LabVIEW

LabVIEW

Tra tutti i Linguaggi di Programmazione Visuali esistenti ed esistiti (sono oltre 100), LabVIEW è forse l’unico che si sia distaccato e che sia entrato nella top 50 dell’indice di popolarità dei linguaggi di programmazione TIOBE. LabVIEW nasce nel 1983 dalla necessità della National Instruments di testare i suoi prodotti Hardware ed oggi, con l’uscita della sua ultima versione LabVIEW 2017, puó essere definito un linguaggio universale in quanto è in grado di integrarsi, oltre che agli strumenti di proprietà della National Instruments, anche ad una vasta quantità di prodotti di terze parti. Inoltre possiede strumenti di progettazione di terze parti tra cui (solo per citarne alcuni) il software MATLAB, SolidWorks, Simulink ed anche strumenti per la compilazione di schede di tipo Arduino e Raspberry. Fornisce funzioni e driver per la connessione a reti e protocolli industriali, e possiede molti strumenti grafici per la creazioni di interfacce grafiche di tipo industriale e non.

Aree di Impiego e alcuni approfondimenti del linguaggio:

Le aree di impiego di LabVIEW sono molteplici grazie alla vasta libreria di funzioni e driver per la gestione e la comunicazione con la quasi totalitá dell’hardware esistente, per questo motivo puó essere facilmente integrato in qualsiasi ambiente professionale. Inoltre, grazie alla programmazione grafica, é in grado di accellerare i tempi di programmazione, semplificando l’integrazione hardware e permettendo quindi di acquisire e visualizzare rapidamente i dati da ogni tipo di dispositivo I/O.

Esempi aree di impiego:

  • Sistemi di controllo e monitoraggio embedded
  • Monitoraggio e controllo industriale
  • Monitoraggio condizioni macchina
  • Sviluppo di sistemi di test di produzione
  • Sistemi di misura con sensori e attuatori
  • Progettazione di sistemi di comunicazione wireless
  • Robotica e veicoli autonomi
  • Progettazione di applicativi ad interfaccia utente
  • Analisi ed elaborazione dati
  • Analisi ed elaborazione del segnale

Inoltre tra i suoi moduli di ampliamento vi sono:

  • Vision Development Module – Pensato per lo sviluppo di applicazioni di visione artificiale. Dispone delle funzioni per l’acquisizione, l’analisi e l’elaborazione di immagini. Viene usato spesso nel settore industriale per rilevare la presenza di oggetti, identificare le caratteristiche e per misurare parti e sezioni.
  • LabVIEW FPGA Module – Permette di lavorare con la tecnologia FPGA senza necessitare di profonde conoscenze di progettazione digitale hardware in quanto possiede gli strumenti per definire sistemi complessi in modo rapido, con l’aiuto di simulatori e funzioni di debug.
  • LabVIEW NI SoftMotion Module – Dispone di un ambiente di sviluppo grafico per la creazione di applicazioni in grado di gestire le impostazioni di movimentazione assi, di effettuare i test per la configurazione e regolare i motori per la loro integrazione.

 

Come funziona:

LabVIEW viene definito dai suoi creatori come linguaggio G (grafico) ed al contrario di quanto si possa pensare, pur non avendo una fase esplicita di compilazione, LabVIEW é un linguaggio compilato. In fase di sviluppo, il programmatore può modificare il codice e subito poi eseguirlo semplicemente cliccando sul “Run button” il quale eseguirà all’istante l’intero progetto senza dover attendere per la compilazione dello stesso.

Senza entrare molto nel dettaglio, di seguito verranno introdotti alcuni degli aspetti importanti che rendono il compilatore di LabVIEW altamente performante:

  • Algoritmo di propagazione dei tipi di dato – Gestisce il controllo dei tipi di dato e della loro “sintassi” identificando eventuali errori.
  • Clumping – Identificazione del parallelismo nei diagrammi raggrupandoli in nodi chiamati “clump” i quali vengono poi eseguiti in parallelo.
  • Inplacer – Algoritmo che riduce notevolmente le prestazioni di esecuzione, é in grado di allocare i dati che poi verranno riutilizzati durante l’esecuzione evitando inutili copie.
  • Linker – I Linker disegnano una mappa delle varie dipendenze che esistono tra i VI (Virtual Instruments) per poi poterli ricompilare.
  • GenAPI – Algoritmo per l’allocazione dei registri.
  • Data Flow Intermediate Representation (DFIR) – Tra le sue varie funzioni possiede gli algoritmi per l’eliminazione del codice morto o irragiungibile, il folding delle costanti e lo spostamento del codice loop-invariante.
  • LLVM – Dal 2010 LabVIEW ha implementato il framework compilatore open source LLVM – Low Level Virtual Machine utilizzato per la creazione di istruzioni macchina eseguibili in memoria.

Community:

Come ogni altro affermato linguaggio di programmazione, anche LabVIEW dispone di una community di utilizzatori che partecipano attivamente. Esistono molti forum sia ufficiali che non, dove poter aprire discussione e reperire materiale utile alla programmazione.