<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hypercard on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/hypercard/</link>
    <description>Recent content in Hypercard on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Wed, 20 Feb 2019 18:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/hypercard/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>WorldWideWeb, il primo browser web è online</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2019/02/20/worldwideweb-il-primo-browser-web-e-online/</link>
      <pubDate>Wed, 20 Feb 2019 18:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2019/02/20/worldwideweb-il-primo-browser-web-e-online/</guid>
      <description>&lt;p&gt;La storia la sapete. Trent&amp;rsquo;anni fa Tim Berners-Lee, un fisico del CERN, sviluppò su un &lt;a href=&#34;https://it.wikipedia.org/wiki/NeXT&#34;&gt;computer NeXT&lt;/a&gt; il primo server web &lt;code&gt;httpd&lt;/code&gt; e il relativo browser, che chiamò WorldWideWeb,&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; insieme al linguaggio HTML con cui creare i documenti ipertestuali visualizzabili dal browser.&lt;/p&gt;&#xA;&lt;p&gt;Tim Berners-Lee non aveva idea che il suo lavoro avrebbe rivoluzionato la nostra vita. In realtà voleva solo permettere di preparare dei documenti collegati uno all&amp;rsquo;altro da utilizzare all&amp;rsquo;interno del CERN, rendendo possibile passare da un documento all&amp;rsquo;altro cliccando sui link presenti nei documenti stessi.&lt;/p&gt;&#xA;&lt;p&gt;Un&amp;rsquo;idea nemmeno troppo nuova, il concetto di &lt;em&gt;ipertesto&lt;/em&gt; era stato introdotto da &lt;a href=&#34;http://info.cern.ch/hypertext/WWW/Xanadu.html#Nelson&#34;&gt;Ted Nelson&lt;/a&gt; già a metà degli anni &amp;lsquo;60 ed era stato reso popolare da Apple con il suo linguaggio &lt;a href=&#34;https://en.wikipedia.org/wiki/HyperCard&#34;&gt;HyperCard&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Il primo sito web sviluppato Tim Berners-Lee è &lt;a href=&#34;http://info.cern.ch/hypertext/WWW/TheProject.html&#34;&gt;ancora online&lt;/a&gt;, ed è un&amp;rsquo;ottimo modo per accedere ai documenti originali che sono alla base del web come lo conosciamo oggi.&lt;/p&gt;&#xA;&lt;p&gt;Ora, per celebrare il trentesimo anniversario del web, il CERN ha messo online un emulatore del &lt;a href=&#34;https://worldwideweb.cern.ch/&#34;&gt;browser WorldWideWeb originale&lt;/a&gt; scritto da Tim Berners-Lee, che gira tranquillamente all&amp;rsquo;interno di un qualunque browser odierno. L&amp;rsquo;esperienza d&amp;rsquo;uso di &lt;a href=&#34;https://worldwideweb.cern.ch/&#34;&gt;WorldWideWeb&lt;/a&gt; è infinitamente meno soddisfacente di quello a cui siamo abituati oggi, ma vale la pena provare in prima persona una tecnologia che ha avuto effetti straordinari e assolutamente imprevedibili sulla vita di tutti noi. Anche se non ci sono le immagini, i siti odierni sono ancora perfettamente fruibili, sembra di usare un browser testuale come &lt;a href=&#34;http://links.twibright.com/&#34;&gt;Links&lt;/a&gt; o &lt;a href=&#34;https://lynx.invisible-island.net/&#34;&gt;Lynx&lt;/a&gt;. L&amp;rsquo;unica accortezza è ricordarsi che per attivare i link c&amp;rsquo;è bisogno di un doppio click, il click singolo a cui siamo abituati arriverà solo qualche tempo dopo.&lt;/p&gt;&#xA;&lt;p&gt;E allora perché non provare a leggere questo blog tramite il browser originale di Tim Berners-Lee? Io ci ho provato, e non è nemmeno troppo difficile. Basta lanciare l&amp;rsquo;&lt;a href=&#34;https://worldwideweb.cern.ch/&#34;&gt;emulatore di WorldWideWeb&lt;/a&gt;, cliccare sulla voce &lt;code&gt;Document&lt;/code&gt; del menu laterale e poi su &lt;code&gt;Open from full document reference&lt;/code&gt;. A questo punto bisogna scrivere (o incollare) nel campo &lt;code&gt;Reference&lt;/code&gt; l&amp;rsquo;indirizzo web completo di melabit, &lt;code&gt;https://melabit.wordpress.com&lt;/code&gt;, e cliccare sul grosso (e brutto) bottone &lt;code&gt;Open&lt;/code&gt; di destra. Quello che succede si può vedere qui sotto (cliccando sulle immaginini si aprono le versioni in alta risoluzione).&lt;/p&gt;&#xA;&lt;a href=&#34;https://melabit.files.wordpress.com/2019/02/worldwideweb.png&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;img align=&#34;center&#34; src=&#34;https://melabit.files.wordpress.com/2019/02/worldwideweb.png&#34;/&gt;&#xA;&lt;/a&gt;&#xA;&lt;a href=&#34;https://melabit.files.wordpress.com/2019/02/worldwideweb-multiple-windows.png&#34; target=&#34;_blank&#34;&gt;&#xA;    &lt;img align=&#34;center&#34; src=&#34;https://melabit.files.wordpress.com/2019/02/worldwideweb-multiple-windows.png&#34;/&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;Niente immagini e niente colori, i caratteri speciali vengono resi con i codici HTML (l&amp;rsquo;apostrofo ad esempio diventa &lt;code&gt;&amp;amp;&lt;/code&gt;&lt;code&gt;#8217;&lt;/code&gt;), il font è quello ancora &lt;a href=&#34;https://worldwideweb.cern.ch/typography/&#34;&gt;&lt;em&gt;pixellato&lt;/em&gt; del NeXT&lt;/a&gt;, cliccando sui link si aprono delle nuove finestre invece che nuove schede come nei browser moderni, la barra di scorrimento della finestra è a sinistra e non a destra come siamo abituati ora. Però a parte queste minuzie, il blog è perfettamente fruibile, anche se stiamo usando uno strumento pensato e sviluppato ben trent&amp;rsquo;anni fa.&lt;/p&gt;&#xA;&lt;p&gt;Affascinante.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Da cui deriva la tripletta &amp;ldquo;www&amp;rdquo;, utilizzata da allora per indicare il web.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Emulare il Macintosh online (seconda parte)</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2017/05/07/emulare-il-macintosh-online-seconda-parte/</link>
      <pubDate>Sun, 07 May 2017 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2017/05/07/emulare-il-macintosh-online-seconda-parte/</guid>
      <description>&lt;p&gt;Nella &lt;a href=&#34;https://melabit.wordpress.com/2017/04/23/emulare-il-macintosh-online/&#34;&gt;puntata precedente&lt;/a&gt; abbiamo visto che da qualche settimana è disponibile un &lt;a href=&#34;https://archive.org/details/softwarelibrary_mac&#34;&gt;emulatore online del primo Macintosh&lt;/a&gt;, con il quale si possono provare parecchie applicazioni storiche per il Mac direttamente dal browser.&lt;/p&gt;&#xA;&lt;p&gt;Le applicazioni presenti in questo momento sono 77, non tantissime, ma è probabile che aumentino con il tempo.&lt;/p&gt;&#xA;&lt;p&gt;Ci sono due versioni di MacOS (proprio così, con Sierra siamo &lt;a href=&#34;https://www.apple.com/lae/macos/sierra/&#34;&gt;tornati allo stesso nome&lt;/a&gt; ma con una maiuscola in meno), un System 6 ridotto all&amp;rsquo;osso e un System 7 (del 1991) con un buon numero di applicazioni installate, a mostrare cosa poteva fare un Mac un quarto di secolo fa (System 7 è praticamente contemporaneo a &lt;a href=&#34;https://en.wikipedia.org/wiki/Windows_3.0&#34;&gt;Windows 3.0&lt;/a&gt;, uno dei sistemi operativi più inutili e pieni di bachi che abbia mai utilizzato).&lt;/p&gt;&#xA;&lt;p&gt;Ci sono poi un po&amp;rsquo; di giochi &lt;em&gt;classici&lt;/em&gt;, che continuamo a vedere riproposti ancora oggi in tutte le salse, con solo un vestito più carino. Non mancano le applicazioni di produttività personale e qualche numero delle prime riviste in formato elettronico (e-zine).&lt;/p&gt;&#xA;&lt;p&gt;Per lo sviluppo ci sono alcuni BASIC, ma c&amp;rsquo;è soprattutto &lt;a href=&#34;https://arstechnica.com/apple/2012/05/25-years-of-hypercard-the-missing-link-to-the-web/&#34;&gt;HyperCard&lt;/a&gt; (con qualche stack relativo) a dimostrare la genialità di un &lt;a href=&#34;https://archive.org/details/CC501_hypercard&#34;&gt;programma troppo avanzato&lt;/a&gt; per i suoi tempi.&lt;/p&gt;&#xA;&lt;p&gt;Insomma, con questo emulatore si possono provare parecchie cose interessanti, utili per mostrare ai più giovani le virtù (e i limiti) dei Mac degli anni &amp;lsquo;80 e &amp;lsquo;90, e che fanno respirare un soffio di nostalgia a chi &lt;em&gt;c&amp;rsquo;era già&lt;/em&gt; e quei Mac e quei sistemi operativi li ha usati davvero.&lt;/p&gt;&#xA;&lt;p&gt;Ma fra le tutte applicazioni disponibili, quella che mi ha incuriosito di più è stata &lt;a href=&#34;https://archive.org/details/mac_DataFlow&#34;&gt;DataFlow Version 0.0&lt;/a&gt; (attenzione al numero di versione).&lt;/p&gt;&#xA;&lt;p&gt;Non ne avevo mai sentito parlare, però non pretendo di certo di conoscere tutto il software sviluppato per il Mac (o per qualunque altra piattaforma). Forse quello che mi ha colpito è la finestra scarna e quasi vuota del programma, molto diversa rispetto a tutti gli altri programmi disponibili.&lt;/p&gt;&#xA;&lt;p&gt;Lancio l&amp;rsquo;emulatore e la prima impressione è che DataFlow sia un programma come tanti, qualcosa per realizzare diagrammi di flusso o simili.&lt;/p&gt;&#xA;&lt;p&gt;Ma poi guardo con più attenzione e mi accorgo che in realtà DataFlow è molto di più, è un sistema, anche se assai rudimentale, di programmazione visuale basato sul concetto di &lt;a href=&#34;https://en.wikipedia.org/wiki/Dataflow_programming&#34;&gt;programma a &lt;em&gt;flusso di dati&lt;/em&gt;&lt;/a&gt; (da cui il nome).&lt;/p&gt;&#xA;&lt;p&gt;In pratica un programma di questo tipo è composto da un certo numero di blocchi fondamentali che eseguono una operazione predefinita sui dati in ingresso e poi li trasmettono al blocco successivo. Poiché i blocchi di elaborazione sono indipendenti fra loro, questo semplice concetto porta naturalmente al calcolo parallelo, senza i trucchi e gli inganni di tanti linguaggi adattati in modo un po&amp;rsquo; raffazzonato allo scopo.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;idea era relativamente nuova per l&amp;rsquo;epoca (con DataFlow siamo più o meno alla fine degli anni &amp;lsquo;80) ma ha generato sistemi di programmazione molto avanzati, utilizzati ancora oggi in ambiti estremamente diversi. Come ad esempio &lt;a href=&#34;https://en.wikipedia.org/wiki/LabVIEW&#34;&gt;LabVIEW&lt;/a&gt; di National Instruments per il controllo della strumentazione elettronica, &lt;a href=&#34;https://it.mathworks.com/products/simulink.html&#34;&gt;Simulink&lt;/a&gt; di MathWorks per la modellazione di sistemi dinamici, &lt;a href=&#34;https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/QuartzComposerUserGuide/qc_intro/qc_intro.html&#34;&gt;Quartz Composer&lt;/a&gt; di Apple per la composizione grafica e, più recentemente, &lt;a href=&#34;https://www.tensorflow.org/&#34;&gt;TensorFlow&lt;/a&gt; di Google, diventato in pochissimo tempo uno degli strumenti più &lt;em&gt;popolari&lt;/em&gt;, anzi direi proprio &lt;em&gt;hot&lt;/em&gt;, nel campo della programmazione e dell&amp;rsquo;intelligenza artificiale.&lt;/p&gt;&#xA;&lt;p&gt;Insomma DataFlow è un anticipo del futuro, una vera chicca buttata lì con noncuranza fra un foglio elettronico ed un giochino senza tante pretese.&lt;/p&gt;&#xA;&lt;p&gt;Usarlo non è semplice, almeno per le abitudini odierne. L&amp;rsquo;interfaccia è rozza, i blocchi grafici non si possono spostare dopo averli posizionati sul foglio (io almeno non ci sono riuscito), le linee di connessione vanno un po&amp;rsquo; troppo per i fatti loro, si vede che è una versione molto acerba (versione 0.0, oggi la chiameremmo una versione &lt;em&gt;alfa&lt;/em&gt; se non meno). Alla fine comunque sono riuscito a fare un programmino semplice semplice, che prende due numeri interi e ne calcola somma, prodotto e quoziente.&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2017/05/dataflow.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Niente di che, è chiaro, ma quello che è particolarmente bello è che il programma è &lt;em&gt;dinamico&lt;/em&gt;, se si cambiano i numeri in ingresso mentre il programma è in esecuzione le caselle di uscita aggiornano immediatamente i risultati. Oggi è scontato, ma trent&amp;rsquo;anni fa?&lt;/p&gt;&#xA;&lt;p&gt;Naturalmente i programmi moderni fanno molto di più e in modo molto più comodo, ma i fondamenti ci sono già tutti in DataFlow. È bello che l&amp;rsquo;Internet Archive l&amp;rsquo;abbia sottratto all&amp;rsquo;oblio del tempo.&lt;/p&gt;&#xA;&lt;img src=&#34;http://forums.ni.com/attachments/ni/250/29496/1/Example.JPG&#34; alt=&#34;&#34;&gt;&lt;p&gt;&lt;img src=&#34;http://blogs.mathworks.com/images/seth/2008Q1/vdp_PlayButton.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;&#xA;&lt;em&gt;Un semplice programma in LabVIEW (sopra), e in una vecchia versione di Simulink (sotto).&lt;/em&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Programmazione visuale: App Inventor 2</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2015/01/30/programmazione-visuale-app-inventor-2/</link>
      <pubDate>Fri, 30 Jan 2015 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2015/01/30/programmazione-visuale-app-inventor-2/</guid>
      <description>&lt;p&gt;Lo dico subito, da &lt;a href=&#34;http://appinventor.mit.edu/explore/&#34;&gt;App Inventor 2&lt;/a&gt; mi sarei aspettato molto di più. Sarà per &lt;a href=&#34;http://newsoffice.mit.edu/2010/android-abelson-0819&#34;&gt;la sua origine&lt;/a&gt; (Google), sarà per chi lo sviluppa attualmente (il MIT), pensavo fosse molto più rifinito e facile da usare di quanto sia in realtà.&lt;/p&gt;&#xA;&lt;p&gt;Con App Inventor 2 (da ora in poi AI2) lo sviluppo dell&amp;rsquo;interfaccia grafica e del codice a blocchi di una applicazione viene effettuato interamente nel browser web, ma per eseguirla bisogna compilare ogni volta l&amp;rsquo;applicazione e trasferirla su un cellulare o un tablet Android.&lt;/p&gt;&#xA;&lt;h4 id=&#34;alla-ricerca-dellemulatore&#34;&gt;Alla ricerca dell&amp;rsquo;emulatore&lt;/h4&gt;&#xA;&lt;p&gt;In teoria esiste &lt;a href=&#34;http://appinventor.mit.edu/explore/ai2/setup-emulator.html&#34;&gt;un emulatore per AI2&lt;/a&gt; in grado di eseguire l&amp;rsquo;applicazione direttamente sul computer utilizzato per lo sviluppo, ma per quanto ci abbia provato non sono riuscito a farlo funzionare sul mio Mac con Yosemite. L&amp;rsquo;emulatore può essere installato senza problemi, ma smette di funzionare una volta eseguito l&amp;rsquo;aggiornamento all&amp;rsquo;ultima versione disponibile online. L&amp;rsquo;emulatore ha anche bisogno di un programma, &lt;code&gt;aiStarter&lt;/code&gt;, che sul Mac viene &lt;a href=&#34;http://melabit.wordpress.com/2014/12/11/automatizzare-il-mac-dal-terminale-una-soluzione-targata-apple/&#34;&gt;eseguito al boot da &lt;code&gt;launchd&lt;/code&gt;&lt;/a&gt; e rimane sempre attivo in background, anche quando l&amp;rsquo;emulatore non viene utilizzato. Una cosa assolutamente inutile, tanto più che sia su Windows che su Linux &lt;code&gt;aiStarter&lt;/code&gt; viene eseguito manualmente solo se e quando serve.&lt;/p&gt;&#xA;&lt;p&gt;Può darsi che l&amp;rsquo;emulatore abbia bisogno per funzionare di qualche componente di Java non installato sul mio Mac, magari il &lt;a href=&#34;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html&#34;&gt;Java SE Development Kit (JDK) 8&lt;/a&gt; (vedi sotto), ma durante l&amp;rsquo;installazione e l&amp;rsquo;aggiornamento dell&amp;rsquo;emulatore non compare nessun messaggio di avviso in proposito.&lt;/p&gt;&#xA;&lt;p&gt;Come se non bastasse, l&amp;rsquo;emulatore dimAI2 è piuttosto complicato da disinstallare: tutto deve essere fatto rigorosamente a mano e obbliga a riavviare il Mac.&lt;/p&gt;&#xA;&lt;p&gt;Non pensate nemmeno di risolvere il problema scaricando &lt;a href=&#34;http://developer.android.com/sdk/index.html&#34;&gt;Android Studio&lt;/a&gt; e utilizzando l&amp;rsquo;emulatore integrato nel sistema di sviluppo di Android. Io l&amp;rsquo;ho fatto, ho scaricato Android Studio e ho scoperto solo al momento della prima esecuzione di dover installare anche il &lt;a href=&#34;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html&#34;&gt;Java SE Development Kit (JDK) 8&lt;/a&gt;. Una volta installato il JDK, ho dovuto installare anche un certo numero di componenti aggiuntivi obbligatori. Insomma, dopo aver riempito il disco rigido con un paio di GB di roba praticamente inutile, sono riuscito finalmente a lanciare l&amp;rsquo;emulatore di Android 5.0/Lollipop e&amp;hellip; non è successo niente! L&amp;rsquo;emulatore ha cominciato a caricare Android ma dopo mezz&amp;rsquo;ora era sempre allo stesso punto, bloccato senza speranza.&lt;/p&gt;&#xA;&lt;p&gt;Per fortuna Android Studio è relativamente &lt;a href=&#34;http://stackoverflow.com/questions/17625622/how-to-completely-uninstall-android-studio&#34;&gt;facile da disinstallare&lt;/a&gt;, ma anche in questo caso manca un disinstallatore che renda il processo automatico.&lt;/p&gt;&#xA;&lt;p&gt;Ma chi la dura la vince.&lt;/p&gt;&#xA;&lt;p&gt;Dato che non riuscivo a far funzionare sul Mac gli emulatori &lt;em&gt;ufficiali&lt;/em&gt;, ho provato &lt;a href=&#34;http://www.bluestacks.com/app-player.html&#34;&gt;BlueStacks App Player&lt;/a&gt;, un emulatore &lt;em&gt;indipendente&lt;/em&gt;. La versione per OS X non viene più sviluppata (da quanto dicono sul sito per il &lt;a href=&#34;http://support.bluestacks.com/hc/en-us/articles/202494928-Why-has-the-Mac-OS-X-version-not-been-updated-&#34;&gt;troppo successo&lt;/a&gt; di quella per Windows), ma ho trovato su MacUpdate una vecchia versione di &lt;a href=&#34;http://www.macupdate.com/app/mac/43696/bluestacks-app-player&#34;&gt;BlueStacks App Player per Mac&lt;/a&gt; che funziona senza problemi su Yosemite.&lt;/p&gt;&#xA;&lt;p&gt;Maggiori dettagli sull&amp;rsquo;installazione e la configurazione di BlueStacks App Player si possono trovare in &lt;a href=&#34;https://melabit.wordpress.com/2015/01/12/emuliamo-android-sul-mac-bluestacks-app-player/&#34;&gt;Emuliamo Android sul Mac: BlueStacks App Player&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;sviluppo-del-codice&#34;&gt;Sviluppo del codice&lt;/h4&gt;&#xA;&lt;p&gt;A questo punto è possibile iniziare ad usare l&amp;rsquo;interfaccia web di AI2 per implementare il Crivello di Eratostene in questo linguaggio. L&amp;rsquo;interfaccia assomiglia a quella di un classico ambiente di sviluppo integrato (IDE) e integra due strumenti complementari: &lt;code&gt;Designer&lt;/code&gt; per il disegno dell&amp;rsquo;interfaccia grafica e &lt;code&gt;Blocks&lt;/code&gt; per lo sviluppo del codice vero e proprio dell&amp;rsquo;applicazione.&lt;/p&gt;&#xA;&lt;p&gt;Premendo il bottone &lt;code&gt;Designer&lt;/code&gt; si accede alla pagina di realizzazione dell&amp;rsquo;interfaccia grafica. La colonna di sinistra contiene gli elementi grafici (widget) disponibili, suddivisi in base alla loro tipologia. L&amp;rsquo;interfaccia dell&amp;rsquo;applicazione viene costruita trascinando e posizionando uno alla volta i vari elementi grafici dalla colonna di sinistra all&amp;rsquo;area centrale di disegno. La colonna di destra permette di visualizzare e modificare le proprietà dell&amp;rsquo;elemento selezionato nell&amp;rsquo;area di disegno.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1623&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-ai2-sieve_original_gui.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/01-ai2-sieve_original_gui.png?w=605&#34; alt=&#34;Fig. 1 - Disegno dell&amp;#039;interfaccia grafica dell&amp;#039;applicazione che implementa il Crivello di Eratostene in App Inventor 2.&#34; width=&#34;605&#34; height=&#34;429&#34; class=&#34;size-large wp-image-1623&#34; /&gt;&lt;/a&gt; Fig. 1 - Disegno dell&amp;rsquo;interfaccia grafica dell&amp;rsquo;applicazione che implementa il Crivello di Eratostene in App Inventor 2.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Premendo il bottone &lt;code&gt;Blocks&lt;/code&gt; si passa alla pagina di sviluppo del codice vero e proprio tramite l&amp;rsquo;assemblaggio dei blocchi funzionali che compongono il linguaggio di programmazione.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1624&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/02-ai2-sieve_original_code.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/02-ai2-sieve_original_code.png?w=605&#34; alt=&#34;Fig. 2 - Codice a blocchi dell&amp;#039;applicazione.&#34; width=&#34;605&#34; height=&#34;429&#34; class=&#34;size-large wp-image-1624&#34; /&gt;&lt;/a&gt; Fig. 2 - Codice a blocchi dell&amp;rsquo;applicazione.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Il linguaggio a blocchi di AI2 è molto più ricco di quello di Blockly, anche perché deve gestire gli elementi dell&amp;rsquo;interfaccia grafica, che mancano in Blockly. Inoltre AI2 supporta le procedure (dette anche funzioni o subroutine in altri linguaggi), blocchi di codice richiamabili dall&amp;rsquo;applicazione principale o da altre procedure, e distingue fra variabili globali (valide per tutto il programma) e locali (valide solo all&amp;rsquo;interno di una procedura).&lt;/p&gt;&#xA;&lt;p&gt;Tutto ciò rende AI2 più complesso di Blockly, e i programmi diventano facilmente più grandi di una singola schermata, rendendo difficile mantenere una visione complessiva dell&amp;rsquo;applicazione in fase di sviluppo.&lt;/p&gt;&#xA;&lt;p&gt;Ho trovato però molto comodo il fatto che, quando si rinomina una variabile, il nuovo nome viene aggiornato nell&amp;rsquo;intera applicazione. Sarebbe veramente utile se gli editor di codice &lt;em&gt;classico&lt;/em&gt; implementassero una funzione analoga.&lt;/p&gt;&#xA;&lt;p&gt;All&amp;rsquo;opposto mi sembra sconcertante la totale mancanza di un &lt;code&gt;undo&lt;/code&gt;: spesso mi è capitato di cancellare involontariamente interi blocchi di programma senza avere la possibilità di recuperarli in alcun modo. Se si aggiunge il fatto che ogni modifica al codice dell&amp;rsquo;applicazione in fase di sviluppo viene salvata automaticamente sul server di AI2, si può capire quanto sia facile commettere errori e rovinare il lavoro fatto. Anche Blockly non ha un undo ma, non so perché, con Blockly non mi è mai capitato di cancellare per sbaglio interi blocchi di codice.&lt;/p&gt;&#xA;&lt;p&gt;Non serve nemmeno usare i &lt;code&gt;checkpoint&lt;/code&gt; per salvare via via i diversi stati dell&amp;rsquo;applicazione in fase di sviluppo. La gestione dei checkpoint è assolutamente confusa &amp;ndash; provare per credere &amp;ndash; e allo stato attuale sono inutili.&lt;/p&gt;&#xA;&lt;p&gt;Usando AI2 è quindi necessario salvare spesso il progetto esportandolo sul proprio computer in formato &lt;code&gt;.aia&lt;/code&gt;. Questi file non sono altro che dei file compressi in formato &lt;code&gt;zip&lt;/code&gt; e possono essere scompattati (ad esempio usando il comando &lt;code&gt;unzip&lt;/code&gt; da Terminale) per mostrare come è fatto un progetto di AI2. Immagino che i file del progetto possano essere modificati con un editor e che, una volta compressi, possano essere importati di nuovo da AI2, ma io non ho mai provato a farlo.&lt;/p&gt;&#xA;&lt;h4 id=&#34;proviamo-lapplicazione&#34;&gt;Proviamo l&amp;rsquo;applicazione&lt;/h4&gt;&#xA;&lt;p&gt;Durante lo sviluppo di una applicazione è consigliabile provare ogni tanto ad eseguirla nell&amp;rsquo;emulatore, in modo da controllare che l&amp;rsquo;interfaccia grafica e le funzioni implementate nel codice a blocchi funzionino come dovrebbero.&lt;/p&gt;&#xA;&lt;p&gt;Selezionando dal menu &lt;code&gt;Build&lt;/code&gt; la voce &lt;code&gt;app (save .apk to my computer)&lt;/code&gt;, l&amp;rsquo;applicazione viene compilata e &lt;em&gt;impacchettata&lt;/em&gt; automaticamente, salvandola sul Mac come file &lt;code&gt;.apk&lt;/code&gt; (normalmente nella stessa directory che contiene il codice .aia del progetto). Il formato &lt;code&gt;.apk&lt;/code&gt; è il formato dei &lt;em&gt;package&lt;/em&gt; di Android e contiene l&amp;rsquo;eseguibile vero e proprio insieme a tutti i file accessori.&lt;/p&gt;&#xA;&lt;p&gt;Ma come trasferire il package dell&amp;rsquo;applicazione in BlueStacks App Player?&lt;/p&gt;&#xA;&lt;p&gt;Il modo più semplice è &lt;a href=&#34;https://melabit.wordpress.com/2015/01/12/emuliamo-android-sul-mac-bluestacks-app-player/&#34;&gt;installare Dropbox nell&amp;rsquo;emulatore&lt;/a&gt; e usarlo per sincronizzare il package fra il Mac e BlueStacks App Player. Una volta completato il trasferimento, basta aprire Dropbox sull&amp;rsquo;emulatore e cliccare con il mouse sull&amp;rsquo;icona del file .apk appena sincronizzato per lanciare il processo di installazione del package.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1625&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/03-ai2-dropbox.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/03-ai2-dropbox.png?w=605&#34; alt=&#34;Fig. 3 - Sincronizzazione tramite Dropbox sull&amp;#039;emulatore del package in fase di sviluppo.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1625&#34; /&gt;&lt;/a&gt; Fig. 3 - Sincronizzazione tramite Dropbox sull&amp;rsquo;emulatore del package in fase di sviluppo.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1626&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/04-ai2-installation_done.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/04-ai2-installation_done.png?w=605&#34; alt=&#34;Fig. 4 - Installazione del package.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1626&#34; /&gt;&lt;/a&gt; Fig. 4 - Installazione del package.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;In alternativa, si può usare il Terminale, eseguendo i comandi riportati nel post relativo &lt;a href=&#34;https://melabit.wordpress.com/2015/01/12/emuliamo-android-sul-mac-bluestacks-app-player/&#34;&gt;all&amp;rsquo;installazione e all&amp;rsquo;uso di BlueStacks App Player&lt;/a&gt; sul Mac. Supponendo che il package dell&amp;rsquo;applicazione di Figura 2 si chiami &lt;code&gt;sieve_original.apk&lt;/code&gt; e che sia stata salvato nella directory &lt;code&gt;~/Documenti/AI2/&lt;/code&gt; (il simbolo &lt;code&gt;~&lt;/code&gt; indica come al solito la &lt;a href=&#34;https://melabit.wordpress.com/le-parole-per-dirlo/&#34;&gt;cartella Inizio&lt;/a&gt; dell&amp;rsquo;utente), lanciamo BlueStacks App Player ed eseguiamo da Terminale i comandi&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ cd  /Applications/BlueStacks.app/Contents/Runtime/&#xA;$ ./uHD-Adb install ~/Documenti/AI2/sieve_original.apk&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Indipendentemente dal metodo usato, alla fine troveremo l&amp;rsquo;icona dell&amp;rsquo;applicazione sulla schermata principale dell&amp;rsquo;emulatore e potremo eseguirla cliccando con il mouse sulla sua icona.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1628&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/05-ai2-home_screen.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/05-ai2-home_screen.png?w=605&#34; alt=&#34;Fig. 5 - Schermata principale dell&amp;#039;emulatore con il package appena installato.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1628&#34; /&gt;&lt;/a&gt; Fig. 5 - Schermata principale dell&amp;rsquo;emulatore con il package appena installato.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Alla prima esecuzione però avremo una sorpresa sgradita: la finestra dell&amp;rsquo;applicazione è minuscola, molto più piccola delle dimensioni della finestra principale di BlueStacks App Player.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1629&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/06-ai2-first_run.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/06-ai2-first_run.png?w=605&#34; alt=&#34;Fig. 6 - La finestra dell&amp;#039;applicazione è veramente minuscola.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1629&#34; /&gt;&lt;/a&gt; Fig. 6 - La finestra dell&amp;rsquo;applicazione è veramente minuscola.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Per ingrandirla, bisogna premere l’icona Settings (quella con il simbolo di una chiave inglese e di un cacciavite incrociati), selezionare la voce Manage Applications e selezionare in correspondenza dell&amp;rsquo;applicazione la dimensione &lt;code&gt;Tablet&lt;/code&gt; al posto di quella di default. Riavviando l&amp;rsquo;applicazione questa avrà dimensioni più &lt;em&gt;normali&lt;/em&gt;, anche se sempre piuttosto ridotte rispetto alla finestra principale.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1630&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/07-ai2-setup.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/07-ai2-setup.png?w=605&#34; alt=&#34;Fig. 7 - Ingrandiamo la finestra dell&amp;#039;applicazione.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1630&#34; /&gt;&lt;/a&gt; Fig. 7 - Ingrandiamo la finestra dell&amp;rsquo;applicazione.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1631&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/08-ai2-tablet_size.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/08-ai2-tablet_size.png?w=605&#34; alt=&#34;Fig. 8 - Ora va un po&amp;#039; meglio.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1631&#34; /&gt;&lt;/a&gt; Fig. 8 - Ora va un po&amp;rsquo; meglio.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Finalmente si può provare ad eseguire l&amp;rsquo;applicazione, verificando che funzioni tutto come previsto.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1632&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/09-ai2-first_100_primes.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/09-ai2-first_100_primes.png?w=605&#34; alt=&#34;Fig. 9 - Esecuzione dell&amp;#039;applicazione per calcolare i numeri primi.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1632&#34; /&gt;&lt;/a&gt; Fig. 9 - Esecuzione dell&amp;rsquo;applicazione per calcolare i numeri primi.[/caption]&lt;/p&gt;&#xA;&lt;h4 id=&#34;qualche-miglioramento&#34;&gt;Qualche miglioramento&lt;/h4&gt;&#xA;&lt;p&gt;Uno degli aspetti positivi di AI2 è il supporto per le procedure (funzioni o subroutine in altri linguaggi). Le procedure permettono di raggruppare una sequenza di istruzioni in un unico blocco funzionale, una specie di scatola nera che elabora le variabili di ingresso e restituisce un risultato ben definito in uscita. Le procedure diventano a tutti gli effetti delle nuove istruzioni del linguaggio di programmazione e sono richiamabili sia dall’applicazione principale che da altre procedure, semplificando la gestione e l&amp;rsquo;analisi del codice del programma.&lt;/p&gt;&#xA;&lt;p&gt;Proviamo quindi riscrivere il codice dell&amp;rsquo;applicazione utilizzando le procedure, senza però modificare l&amp;rsquo;interfaccia grafica che rimane la stessa di Figura 1.&lt;/p&gt;&#xA;&lt;p&gt;In questo caso particolare l&amp;rsquo;utilità delle procedure è soprattutto didattica: ciascuna procedura viene richiamata una sola volta dal programma principale e quindi il loro uso non comporta nessun vantaggio rispetto ad un programma monolitico come quello di Figura 2.&lt;/p&gt;&#xA;&lt;p&gt;Anche se non è semplicissimo capire come utilizzare le procedure in AI2, dopo un po&amp;rsquo; di tentativi infruttuosi si ottiene il codice a blocchi mostrato in Figura 10.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1633&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/10-ai2-sieve_procs_code.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/10-ai2-sieve_procs_code.png?w=605&#34; alt=&#34;Fig. 10 - Codice a blocchi della nuova versione dell&amp;#039;applicazione.&#34; width=&#34;605&#34; height=&#34;429&#34; class=&#34;size-large wp-image-1633&#34; /&gt;&lt;/a&gt; Fig. 10 - Codice a blocchi della nuova versione dell&amp;rsquo;applicazione.[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Eseguendo la nuova versione del programma sull&amp;rsquo;emulatore, si ottiene il risultato mostrato in Figura 11. Come si vede, è stato anche semplificato l&amp;rsquo;output del programma, mostrando nella finestra dell&amp;rsquo;applicazione solo l&amp;rsquo;elenco dei numeri primi calcolati, in modo da permettere di compattare un numero maggiore di informazioni nella piccola finestra disponibile.&lt;/p&gt;&#xA;&lt;p&gt;[caption id=&amp;ldquo;attachment_1634&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/11-ai2-first_500_primes.png&#34;&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2015/01/11-ai2-first_500_primes.png?w=605&#34; alt=&#34;Fig. 11 - Esecuzione della nuova versione dell&amp;#039;applicazione.&#34; width=&#34;605&#34; height=&#34;371&#34; class=&#34;size-large wp-image-1634&#34; /&gt;&lt;/a&gt; Fig. 11 - Esecuzione della nuova versione dell&amp;rsquo;applicazione.[/caption]&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;Una applicazione per Android sviluppata interamente nel browser è un risultato interessante. Purtroppo i problemi di usabilità descritti rendono il giudizio finale su AI2 decisamente meno positivo di quanto ci si potrebbe aspettare.&lt;/p&gt;&#xA;&lt;h4 id=&#34;risorse&#34;&gt;Risorse&lt;/h4&gt;&#xA;&lt;p&gt;Chi vuole provare ad usare AI2 può scaricare il codice sorgente del &lt;a href=&#34;https://bitbucket.org/sabinomaggi/sieve/downloads/sieve_original.aia&#34;&gt;programma mostrato in Figura 1 e 2&lt;/a&gt; e della &lt;a href=&#34;https://bitbucket.org/sabinomaggi/sieve/downloads/sieve_procs.aia&#34;&gt;versione migliorata di Figura 10&lt;/a&gt;. Sono anche disponibili i package precompilati per Android del &lt;a href=&#34;https://bitbucket.org/sabinomaggi/sieve/downloads/sieve_original.apk&#34;&gt;programma originale&lt;/a&gt; e della &lt;a href=&#34;https://bitbucket.org/sabinomaggi/sieve/downloads/sieve_procs.apk&#34;&gt;versione con le procedure&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
    </item>
    <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>Sono passati 25 anni: le origini del web</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2014/05/15/sono-passati-25-anni-le-origini-del-web/</link>
      <pubDate>Thu, 15 May 2014 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2014/05/15/sono-passati-25-anni-le-origini-del-web/</guid>
      <description>&lt;p&gt;[caption width=&amp;ldquo;1120&amp;rdquo; align=&amp;ldquo;aligncenter&amp;rdquo;]&lt;a href=&#34;http://www.w3.org/History/1994/WWW/Journals/CACM/screensnap2_24c.gif&#34;&gt;&lt;img src=&#34;http://www.w3.org/History/1994/WWW/Journals/CACM/screensnap2_24c.gif&#34; width=&#34;1120&#34; alt=&#34;WorldWideWeb, il primo browser web per il Next Cube (1990).&#34; class /&gt;&lt;/a&gt;WorldWideWeb, il primo browser web per il Next Cube (1990).[/caption]&lt;/p&gt;&#xA;&lt;p&gt;Quest&amp;rsquo;anno si celebrano i &lt;a href=&#34;http://www.webat25.org/about/history&#34;&gt;25 anni del World Wide Web&lt;/a&gt;, la tecnologia che ha permesso la diffusione di massa di Internet.&lt;/p&gt;&#xA;&lt;p&gt;Il web nasce nel 1989 con la proposta del fisico &lt;a href=&#34;http://www.w3.org/People/Berners-Lee/&#34;&gt;Tim-Berners Lee&lt;/a&gt; all&amp;rsquo;amministrazione del &lt;a href=&#34;http://home.web.cern.ch&#34;&gt;CERN&lt;/a&gt; di creare un sistema distribuito costituito da documenti legati gli uni agli altri da opportune parole chiave - i cosiddetti &lt;a href=&#34;http://it.wikipedia.org/wiki/Ipertesto&#34;&gt;ipertesti&lt;/a&gt; &amp;ndash; che rendesse più semplice lo scambio e la diffusione delle informazioni fra i ricercatori del CERN, impegnati in progetti che coinvolgevano migliaia di persone sparse in ogni angolo della Terra.&lt;/p&gt;&#xA;&lt;p&gt;La presentazione ufficiale del Web avvenne nel corso della &lt;a href=&#34;http://www94.web.cern.ch/WWW94/&#34;&gt;First International Conference on the World-Wide Web&lt;/a&gt; del maggio del 1994, esattamente 20 anni fa.&lt;/p&gt;&#xA;&lt;p&gt;La &lt;a href=&#34;http://www.w3.org/History/1989/proposal.html&#34;&gt;proposta originale&lt;/a&gt; è stata scritta con un Mac e non a caso: uno dei primi programmi per gestire gli ipertesti prima dell&amp;rsquo;avvento del World Wide Web è stato &lt;a href=&#34;https://archive.org/details/CC501_hypercard&#34;&gt;HyperCard&lt;/a&gt; di Bill Atkinson, forse il programma più famoso sviluppato per Mac OS.&lt;/p&gt;&#xA;&lt;p&gt;Il mondo del Mac ha messo lo zampino anche nel primo browser (con editor HTML integrato), il &lt;a href=&#34;http://digital-archaeology.org/the-nexus-browser&#34;&gt;WorldWideWeb&lt;/a&gt; &amp;ndash; rinominato poco dopo &lt;em&gt;Nexus&lt;/em&gt; per evitare confusioni con il Web vero e proprio &amp;ndash; &lt;a href=&#34;http://www.w3.org/People/Berners-Lee/WorldWideWeb.html&#34;&gt;sviluppato nel 1990 da Tim Berners-Lee su (e per) computer NeXT Cube&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Il &lt;a href=&#34;http://info.cern.ch/&#34;&gt;primo sito web&lt;/a&gt; è ancora online ed è attualmente &lt;a href=&#34;http://first-website.web.cern.ch/&#34;&gt;in fase di restauro&lt;/a&gt; per riportarlo per quanto è possibile allo stato originario dell&amp;rsquo;inizio degli anni &amp;lsquo;90. Può essere navigato sia usando &lt;a href=&#34;http://info.cern.ch/hypertext/WWW/TheProject.html&#34;&gt;un browser moderno&lt;/a&gt; che tramite uno splendido simulatore del &lt;a href=&#34;http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html&#34;&gt;line-mode browser&lt;/a&gt; (&lt;em&gt;browser a modalità di linea&lt;/em&gt;), il &lt;a href=&#34;http://line-mode.cern.ch/&#34;&gt;browser multipiattaforma&lt;/a&gt; sviluppato presso il CERN allo scopo di consentire a chiunque l&amp;rsquo;accesso al web, anche tramite i terminali seriali a caratteri dell&amp;rsquo;epoca.&lt;/p&gt;&#xA;&lt;p&gt;Particolarmente curiosa è la pagina relativa all&amp;rsquo;&lt;a href=&#34;http://info.cern.ch/hypertext/DataSources/WWW/Servers.html&#34;&gt;elenco dei server web esistenti nel 1992&lt;/a&gt;: una trentina!&lt;/p&gt;&#xA;&lt;p&gt;Il World Wide Web è un bellissimo esempio di come la ricerca fondamentale &amp;ndash; il &lt;a href=&#34;http://home.web.cern.ch/about&#34;&gt;CERN si occupa di fisica delle particelle&lt;/a&gt;, i mattoni fondamentali dell&amp;rsquo;universo, un settore della scienza apparentemente molto lontano dalla vita di tutti i giorni &amp;ndash; possa avere ricadute assolutamente imprendibili e molto più fruttuose dei soldi spesi per finanziare la ricerca stessa. Come nel caso della corsa allo spazio degli anni &amp;lsquo;60, che ha dato fra l&amp;rsquo;altro origine allo sviluppo travolgente dei &lt;a href=&#34;http://en.wikipedia.org/wiki/Integrated_circuit&#34;&gt;circuiti integrati&lt;/a&gt; e più in generale della tecnologia microelettronica, senza la quale non esisterebbe il mondo come lo conosciamo oggi.&lt;/p&gt;&#xA;&lt;p&gt;Una cosa che tanti &amp;ndash; soprattutto la nostra classe politica &amp;ndash; dimentica troppo spesso.&lt;/p&gt;&#xA;&lt;p&gt;Ci tenevo a parlarne qui.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
