<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Scratch on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/scratch/</link>
    <description>Recent content in Scratch on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Mon, 19 Jan 2015 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/scratch/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Programmazione visuale: introduzione</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2015/01/19/programmazione-visuale-introduzione/</link>
      <pubDate>Mon, 19 Jan 2015 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2015/01/19/programmazione-visuale-introduzione/</guid>
      <description>&lt;p&gt;Il modello di programmazione tradizionale si basa sulla scrittura di codice sorgente secondo una struttura logica e ad una sintassi ben definita e dipendente dal linguaggio di programmazione prescelto.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;idea di sostituire questo modello con uno fondato su una interfaccia grafica sulla quale trascinare dei blocchi funzionali predefiniti, manipolandoli ed assemblandoli l&amp;rsquo;uno all&amp;rsquo;altro quasi fossero dei mattoncini del LEGO, data dalla fine degli anni &amp;lsquo;80 a livello commerciale e si basa su ricerche iniziate già negli anni &amp;lsquo;60. Questo cambio di paradigma aveva l&amp;rsquo;obiettivo di rendere la programmazione accessibile anche ai non &lt;em&gt;iniziati&lt;/em&gt;, permettendo di insegnarne i rudimenti già ai bambini della scuola elementare.&lt;/p&gt;&#xA;&lt;p&gt;Ma non voglio farla lunga e rimando chi fosse interessato ad approfondire l&amp;rsquo;argomento a &lt;a href=&#34;http://constructingkids.com/2013/05/15/vpl/&#34;&gt;questa eccellente infografica&lt;/a&gt; e alla bibliografia alla fine del post. Ricordo solo che anche in questo campo Apple ha fatto da apripista con il suo &lt;a href=&#34;http://en.wikipedia.org/wiki/HyperCard&#34;&gt;HyperCard&lt;/a&gt;, il primo ambiente visuale di programmazione uscito dal chiuso dei laboratori di ricerca.&lt;/p&gt;&#xA;&lt;p&gt;A parte HyperCard, finora l&amp;rsquo;unico linguaggio di programmazione visuale che ha avuto un vero successo è stato &lt;a href=&#34;http://www.ni.com/labview/i/&#34;&gt;LabVIEW&lt;/a&gt; (Laboratory Virtual Instrument Engineering Workbench), un ambiente di programmazione grafica sviluppato dalla &lt;a href=&#34;http://italy.ni.com/&#34;&gt;National Instruments&lt;/a&gt; per il controllo della strumentazione di misura, l&amp;rsquo;acquisizione dei dati e l&amp;rsquo;automazione dei processi industriali.&lt;/p&gt;&#xA;&lt;p&gt;Un linguaggio utilissimo in un ambito professionale molto specializzato, ma decisamente molto lontano dall&amp;rsquo;idea di &lt;em&gt;programmazione per i ragazzini&lt;/em&gt;. E nato anch&amp;rsquo;esso, non a caso, prima sul Mac alla fine degli anni &amp;lsquo;80 (ho usato a lungo su un &lt;a href=&#34;http://www.macworld.com/article/1167123/the_macintosh_ii_celebrates_its_25th_anniversary.html&#34;&gt;Macintosh II&lt;/a&gt; la prima versione di LabVIEW divertendomi moltissimo) e portato solo in seguito su Windows e poi finalmente anche su Linux e OS X.&lt;/p&gt;&#xA;&lt;p&gt;Ma allora perché trattare di programmazione visuale? Perché mentre preparavo i post sull&amp;rsquo;implementazione in BASIC e in Python del &lt;a href=&#34;http://melabit.wordpress.com/?s=eratostene&#34;&gt;Crivello di Eratostene&lt;/a&gt; mi sono imbattuto in tre diverse implementazioni di linguaggi di programmazione visuali derivanti chiaramente da &lt;a href=&#34;http://scratch.mit.edu/&#34;&gt;Scratch&lt;/a&gt;, il più noto linguaggio di programmazione visuale per insegnare la programmazione ai bambini:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developers.google.com/blockly/&#34;&gt;Blockly&lt;/a&gt;, sviluppato da Google e di cui ho già parlato brevemente &lt;a href=&#34;http://melabit.wordpress.com/2014/12/16/setacciare-a-blocchi/&#34;&gt;in un post precedente&lt;/a&gt;;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://appinventor.mit.edu/explore/&#34;&gt;App Inventor 2&lt;/a&gt;, sviluppato inizialmente presso i laboratori di Google ma gestito ora dal &lt;a href=&#34;http://web.mit.edu/&#34;&gt;Massachusetts Institute of Technology (MIT)&lt;/a&gt;, che permette di creare applicazioni per Android;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://snap.berkeley.edu/&#34;&gt;SNAP!&lt;/a&gt;, sviluppato presso l&amp;rsquo;Università della California a Berkeley.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A differenza di Scratch, questi linguaggi sono utilizzabili direttamente dal browser e non richiedono nessuna installazione sul proprio Mac (o quasi).&lt;/p&gt;&#xA;&lt;p&gt;Leggendo la descrizione delle caratteristiche dai rispettivi siti web mi sono chiesto quanto fosse facile implementare un algoritmo semplice come quello del &lt;a href=&#34;http://melabit.wordpress.com/2014/09/29/setacciare-numeri-con-il-serpente/&#34;&gt;Crivello di Eratostene&lt;/a&gt; in uno di questi linguaggi rispetto al Python (o al BASIC). Ma perché chiederselo soltanto, senza provare direttamente?&lt;/p&gt;&#xA;&lt;p&gt;Nel seguito ho riassunto le mie considerazioni personali su Blockly, i prossimi post saranno dedicati rispettivamente a &lt;a href=&#34;&#34;&gt;App Inventor 2&lt;/a&gt; e a &lt;a href=&#34;&#34;&gt;SNAP!&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;blockly&#34;&gt;Blockly&lt;/h4&gt;&#xA;&lt;p&gt;Su Blockly ho già &lt;a href=&#34;http://melabit.wordpress.com/2014/12/16/setacciare-a-blocchi/&#34;&gt;scritto qualcosa&lt;/a&gt;: mi è bastata una mezz&amp;rsquo;oretta di lavoro per &lt;a href=&#34;https://blockly-demo.appspot.com/static/demos/code/index.html#d93qba&#34;&gt;implementare in Blockly&lt;/a&gt; l&amp;rsquo;algoritmo del Crivello di Eratostene a partire dalla &lt;a href=&#34;http://melabit.wordpress.com/2014/09/29/setacciare-numeri-con-il-serpente/&#34;&gt;versione originale in Python&lt;/a&gt; (e in BASIC).&lt;/p&gt;&#xA;&lt;p&gt;Usare Blockly è divertente ed è abbastanza facile capirne la logica di funzionamento. È chiaro che conoscere già dei rudimenti di programmazione in un linguaggio &lt;em&gt;tradizionale&lt;/em&gt; aiuta parecchio, ma imparare ad usare Blockly non dovrebbe essere troppo difficile anche per chi è del tutto a digiuno ma abbia voglia di applicarsi e di sperimentare un po&amp;rsquo;.&lt;/p&gt;&#xA;&lt;p&gt;Purtroppo il codice Python (ma anche JavaScript) generato automaticamente è troppo verboso rispetto ad una versione sviluppata direttamente in uno dei due linguaggi. La ragione principale è che il linguaggio cerca di prevedere esplicitamente i diversi casi che possono presentarsi a seconda del segno delle variabili utilizzate, complicando notevolmente l&amp;rsquo;implementazione del ciclo. Un aspetto che probabilmente verrà migliorato con il tempo.&lt;/p&gt;&#xA;&lt;p&gt;Il &lt;em&gt;codice&lt;/em&gt; del programma che implementa il Crivello di Eratostene in Blockly (Fig. 1) è accessibile al link &lt;a href=&#34;https://blockly-demo.appspot.com/static/demos/code/index.html#d93qba&#34;&gt;https://blockly-demo.appspot.com/static/demos/code/index.html#d93qba&lt;/a&gt;, e da quanto ho capito, ogni volta che vi si accede da un browser diverso Blockly crea automaticamente un link diverso, permettendo di provare a modificare il codice senza danneggiare la versione originale.&lt;/p&gt;&#xA;&lt;p&gt;Tutto sommato Blockly è un bel giocattolino.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1615&amp;rdquo; align=&amp;ldquo;aligncenter&amp;rdquo; width=&amp;ldquo;605&amp;rdquo;]&lt;a href=&#34;https://melabit.files.wordpress.com/2015/01/01-sieve_blockly1.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/01-sieve_blockly1.png?w=605&#34; alt=&#34;Implementazione del Crivello di Eratostene in Blockly.&#34; width=&#34;605&#34; height=&#34;410&#34; class=&#34;size-large wp-image-1615&#34; /&gt;&lt;/a&gt; Implementazione del Crivello di Eratostene in Blockly.[/caption]&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h4 id=&#34;bibliografia&#34;&gt;Bibliografia&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Visual Programming Language - Infograph and Introduction, &lt;a href=&#34;http://constructingkids.com/2013/05/15/vpl/&#34;&gt;http://constructingkids.com/2013/05/15/vpl/&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Stack Exchange, &lt;a href=&#34;http://programmers.stackexchange.com/questions/119463/why-did-visual-programming-never-take-off-and-what-future-paradigms-might-change&#34;&gt;Why did visual programming never take off and what future paradigms might change that?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Documentazione e risorse su HyperCard, &lt;a href=&#34;http://hypercard.org/&#34;&gt;http://hypercard.org/&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;J. Nickerson, &amp;ldquo;Visual Programming&amp;rdquo;, (1994), &lt;a href=&#34;http://www.nickerson.to/visprog/visprog.htm&#34;&gt;http://www.nickerson.to/visprog/visprog.htm&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;M. Boshernitsan, M. S. Downes, &amp;ldquo;Visual Programming Languages: A Survey&amp;rdquo;, Università della California, Berkeley (2004), &lt;a href=&#34;http://www.eecs.berkeley.edu/Pubs/TechRpts/2004/CSD-04-1368.pdf&#34;&gt;http://www.eecs.berkeley.edu/Pubs/TechRpts/2004/CSD-04-1368.pdf&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Setacciare a blocchi</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2014/12/16/setacciare-a-blocchi/</link>
      <pubDate>Tue, 16 Dec 2014 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2014/12/16/setacciare-a-blocchi/</guid>
      <description>&lt;p&gt;L&amp;rsquo;algoritmo del Crivello di Eratostene è stato implementato in almeno &lt;a href=&#34;http://rosettacode.org/wiki/Sieve_of_Eratosthenes&#34;&gt;103 linguaggi diversi&lt;/a&gt;, alcuni decisamente curiosi o esoterici. Chi ha mai sentito parlare di AutoIt, Bracmat, M4, Nimrod o zkl?&lt;/p&gt;&#xA;&lt;p&gt;Manca una implementazione in &lt;a href=&#34;https://developers.google.com/blockly/&#34;&gt;Blockly&lt;/a&gt;, un linguaggio di generazione di codice visuale a blocchi.&lt;/p&gt;&#xA;&lt;p&gt;Blockly è stato sviluppato da Google e deriva da &lt;a href=&#34;http://scratch.mit.edu/&#34;&gt;Scratch&lt;/a&gt;, &lt;a href=&#34;http://education.mit.edu/projects/starlogo-tng&#34;&gt;StarLogo TNG&lt;/a&gt; e &lt;a href=&#34;http://snap.berkeley.edu/&#34;&gt;SNAP!&lt;/a&gt;, linguaggi di programmazione didattici rivolti soprattutto ai programmatori più giovani, e anche da &lt;a href=&#34;http://appinventor.mit.edu/explore/&#34;&gt;AppInventor&lt;/a&gt;, un linguaggio più avanzato con cui si possono sviluppare applicazioni per Android.&lt;/p&gt;&#xA;&lt;p&gt;Blockly non è però un linguaggio di programmazione vero e proprio, &lt;a href=&#34;https://developers.google.com/blockly/about/faq#what_is_blockly&#34;&gt;ma è piuttosto&lt;/a&gt;&#xA;&amp;ldquo;un editor visuale che traduce programmi creati mettendo insieme blocchi standard nel corrispondente codice JavaScript, Python, Dart e altri&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Nonostante queste limitazioni, una mezz&amp;rsquo;oretta di lavoro basta per sviluppare una &lt;a href=&#34;https://blockly-demo.appspot.com/static/demos/code/index.html#d93qba&#34;&gt;versione in Blockly&lt;/a&gt; dell&amp;rsquo;algoritmo del Crivello di Eratostene (purtroppo il codice in JavaScript e Python generato automaticamente non è un granché).&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1497&amp;rdquo; align=&amp;ldquo;aligncenter&amp;rdquo; width=&amp;ldquo;605&amp;rdquo;]&lt;a href=&#34;https://melabit.files.wordpress.com/2014/12/sieve_blockly.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2014/12/sieve_blockly.png?w=605&#34; alt=&#34;Algoritmo del Crivello di Eratostene in Blockly.&#34; width=&#34;605&#34; height=&#34;410&#34; class=&#34;size-large wp-image-1497&#34; /&gt;&lt;/a&gt; Algoritmo del Crivello di Eratostene in Blockly.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Chissà se vale la pena aggiungere questa implementazione del Crivello alle 103 precedenti&amp;hellip;&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
