<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dos on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/dos/</link>
    <description>Recent content in Dos on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Sun, 16 May 2021 12:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/dos/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Corsi e ricorsi</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2021/05/16/corsi-e-ricorsi/</link>
      <pubDate>Sun, 16 May 2021 12:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2021/05/16/corsi-e-ricorsi/</guid>
      <description>&lt;p&gt;Pensieri oziosi della domenica.&lt;/p&gt;&#xA;&lt;p&gt;Nel 1984 il Macintosh stupì il mondo con la sua interfaccia grafica, che permetteva di interagire con il computer tramite il mouse, i menu e le icone sullo schermo, invece di dover inserire laboriosamente i comandi arcani del DOS tramite la tastiera.&lt;/p&gt;&#xA;&lt;p&gt;Oggi però la vera potenza del computer è tornata ad esprimersi tramite il Terminale, con cui si possono &lt;a href=&#34;https://www.commandlinefu.com&#34;&gt;fare tantissime cose&lt;/a&gt; ed in modo così efficiente che, al confronto, l&amp;rsquo;interfaccia grafica sembra un reperto del passato.&lt;/p&gt;&#xA;&lt;p&gt;E dato che il Terminale è presente nativamente solo in Linux e macOS, anche Microsoft, per non perdere completamente il mondo degli sviluppatori e degli utenti più avanzati, dopo aver scopiazzato a piene mani l&amp;rsquo;interfaccia grafica del Macintosh nel suo Windows, ha ripetuto l&amp;rsquo;opera inserendo in Windows 10 uno strumento che emula un &lt;a href=&#34;https://docs.microsoft.com/it-it/windows/wsl/about&#34;&gt;ambiente Linux completo&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2021-05-16-corsi-e-ricorsi/1st_floor_computer_70s.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; Fonte: &lt;a href=&#34;http://toto.lib.unca.edu/findingaids/photo/national_climatic_data_center/NCDC_interior.htm&#34;&gt;National Climatic Data Center&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Dalla fine degli anni &amp;lsquo;70 e per tutti gli anni &amp;lsquo;80 il mondo del &lt;em&gt;computing&lt;/em&gt; era diviso in rigorosamente in due: da un lato i computer &lt;em&gt;seri&lt;/em&gt;, grossi &lt;em&gt;mainframe&lt;/em&gt; nascosti in stanze condizionate e gestiti da sacerdoti in camice bianco, a cui solo pochi fortunati potevano accedere collegandosi in remoto tramite un videoterminale &lt;em&gt;stupido&lt;/em&gt;; dall&amp;rsquo;altro i &lt;em&gt;personal computer&lt;/em&gt;, oggetti costosi e fortemente limitati ma che permettevano a tutti di usare un computer  in casa o in ufficio. In pochi anni i personal computer sono cresciuti e hanno soppiantato i mainframe, rimasti solo in qualche azienda o centro di ricerca avanzato.&lt;/p&gt;&#xA;&lt;p&gt;Oggi che i personal computer sono ultrapotenti e alla portata di tutti, stanno diventando centrali i servizi &lt;em&gt;cloud&lt;/em&gt; come Amazon Web Services (AWS) o Google Cloud e Microsoft Azure, che permettono di usare dei sistemi di calcolo potenti e adattabili alle necessità del momento senza doversi sobbarcare dell&amp;rsquo;acquisto e della gestione di computer fisici.&lt;/p&gt;&#xA;&lt;p&gt;Magari fra qualche anno il modo normale di usare un computer sarà quello di collegarsi in remoto  ad un sistema cloud tramite un semplice portatile o tablet. E il cerchio si chiuderà un&amp;rsquo;altra volta.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Python, il Visual Basic del XXI secolo?</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2021/04/19/python-il-visual-basic-del-xxi-secolo/</link>
      <pubDate>Mon, 19 Apr 2021 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2021/04/19/python-il-visual-basic-del-xxi-secolo/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2021-04-19-python-il-visual-basic-del-xxi-secolo/visual-basic-10-for-windows.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;&#xA;&amp;ndash; &lt;em&gt;Microsoft Visual Basic 1.0 per Windows 3.0 (e versioni successive)&lt;/em&gt;. Fonte: &lt;a href=&#34;https://winworldpc.com/product/microsoft-visual-bas/10&#34;&gt;WinWorld&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ho appena letto l&amp;rsquo;articolo &lt;em&gt;&lt;a href=&#34;https://medium.com/young-coder/is-python-the-spiritual-successor-to-visual-basic-5b211be55bc2&#34;&gt;Is Python the Spiritual Successor to Visual Basic?&lt;/a&gt;&lt;/em&gt; di &lt;a href=&#34;https://medium.com/@prosetech&#34;&gt;Matthew MacDonald&lt;/a&gt; e non potrei essere più d&amp;rsquo;accordo, tanto più che ho fatto esattamente lo stesso percorso, Visual Basic nei primi anni &amp;lsquo;90 e Python (assieme ad R) oggi.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;Visual Basic&lt;/strong&gt; è stato un linguaggio davvero rivoluzionario, il primo che permetteva di aggiungere in modo semplice una interfaccia grafica ai programmi scritti in BASIC, un linguaggio di programmazione ben noto a tutti coloro che avevano vissuto la stagione degli &lt;em&gt;home computer&lt;/em&gt; come il Commodore 64 o lo Spectrum.&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;&lt;/p&gt;&#xA;&lt;p&gt;A me, abituato ad usare il Fortran o uno dei vari linguaggi &lt;a href=&#34;https://issuu.com/adpware/docs/mc070/80&#34;&gt;Turbo-qualcosa e Quick-qualcosa&lt;/a&gt; che all&amp;rsquo;epoca spopolavano, Visual Basic sembrò all&amp;rsquo;inizio come una ventata di aria fresca e lo usai subito per un &lt;a href=&#34;http://rescience.github.io/bibliography/Maggi_2020.html&#34;&gt;progetto&lt;/a&gt; a cui tenevo moltissimo (e che merita di essere raccontato più in dettaglio).&lt;/p&gt;&#xA;&lt;p&gt;Ma dopo questa prima volta lo abbandonai senza remore, non solo perché nel frattempo avevo scoperto la potenza di UNIX e Windows era diventato improvvisamente troppo stretto per le mie esigenze, ma soprattutto perché avevo cozzato contro uno dei problemi più seri del linguaggio (almeno per me), l&amp;rsquo;incompatibilità fra le varie versioni, che impediva di eseguire il codice sviluppato per Visual Basic 1.0 già nella versione successiva della piattaforma di sviluppo. Ma dato che Microsoft già allora era maestra nel mettere i bastoni fra le ruote dei suoi utenti, nemmeno la compatibilità fra il Visual Basic 1.0 per Windows e la versione corrispondente per DOS era garantita al 100% (e questo era proprio il mio caso).&lt;/p&gt;&#xA;&lt;p&gt;Non sapevo ancora nulla di &lt;em&gt;free software&lt;/em&gt; o di &lt;em&gt;open source&lt;/em&gt;, ma l&amp;rsquo;idea di dover dipendere dai capricci di una azienda di software mi sembrava già allora incomprensibile.&lt;/p&gt;&#xA;&lt;p&gt;Visual Basic è considerato un prodotto Microsoft, ma in realtà è l&amp;rsquo;adattamento di un linguaggio di programmazione visuale per Windows 3.x, &lt;a href=&#34;https://www.computer.org/csdl/magazine/an/2020/04/09263263/1oReOkHdXQQ&#34;&gt;sviluppato in proprio da Alan Cooper&lt;/a&gt; (che lo aveva chiamato &lt;em&gt;Ruby&lt;/em&gt;). L&amp;rsquo;idea originale di Cooper era di creare uno strumento con cui costruire con facilità delle interfacce grafiche che aiutassero gli utenti ad utilizzare al meglio il nuovo sistema operativo, interfacce che potevano essere diversificate in base al livello di esperienza di chi le usava.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; Tramite dei buoni agganci Alan Cooper riuscì a presentare il proprio prodotto a Bill Gates, che ne rimase entusiasta e decise immediatamente di acquistarne i diritti. Ruby però finì subito in un limbo, ostaggio delle strategie aziendali e delle rivalità fra i diversi gruppi di sviluppatori, per essere associato solo in un secondo momento al QBasic, il vecchio interprete Basic della Microsoft, diventando così il Visual Basic che conosciamo.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;ambizioso obiettivo iniziale si ridusse così alla semplice riproposizione di un vecchio linguaggio di programmazione in una forma graficamente più accattivante. Alan Cooper sarà quindi anche considerato il &lt;em&gt;&lt;a href=&#34;https://yourstory.com/2017/06/techie-tuesdays-alan-cooper&#34;&gt;padre del Visual Basic&lt;/a&gt;&lt;/em&gt;, ma la sua idea originale ha ben poco a che fare con il prodotto finale!&lt;/p&gt;&#xA;&lt;p&gt;Date le premesse non ci si può stupire che Visual Basic abbia avuto una vita travagliata e relativamente breve, descritta con grande abbondanza di dettagli nell&amp;rsquo;articolo &lt;a href=&#34;https://socket3.wordpress.com/2016/09/12/visual-basic-early-beginnings/&#34;&gt;Visual Basic: Early Beginnings&lt;/a&gt;, pubblicato in uno dei blog più interessanti in assoluto sulla storia del Personal Computer.&lt;/p&gt;&#xA;&lt;hr style = &#34;border: none; &#xA;            border-top: 3px double #333; &#xA;            color: #333; &#xA;            overflow: visible; &#xA;            height: 5px; &#xA;            width: 50%; &#xA;            margin-left: auto; &#xA;            margin-right: auto;&#34;&#xA;&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;Python&lt;/strong&gt; oggi è uno dei linguaggi di programmazione più popolari, e con buona ragione. Python e Visual Basic sono praticamente coetanei: il primo ha &lt;a href=&#34;https://www.theregister.com/2021/02/20/python_at_30/&#34;&gt;festeggiato trent&amp;rsquo;anni&lt;/a&gt; a febbraio di quest&amp;rsquo;anno,&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; mentre Visual Basic è stato pubblicato pochi mesi dopo, a maggio del 1991.&lt;/p&gt;&#xA;&lt;p&gt;Ma Python, a differenza del Visual Basic, dopo una partenza lenta ha conosciuto negli ultimi anni un successo travolgente dovuto, a mio avviso, a due aspetti fondamentali del linguaggio:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Leggibilità&lt;/strong&gt;. Python non è infarcito di parentesi e di segni di interpunzione come JavaScript, C/C++ o Java, e questo lo rende molto più leggibile dei linguaggi concorrenti. Se per un programmatore esperto questo può essere un dettaglio di poco conto, di sicuro aiuta i neofiti ad avvicinarsi al linguaggio. Anche il fatto che le istruzioni contenute all&amp;rsquo;interno dei cicli &lt;code&gt;for&lt;/code&gt; e &lt;code&gt;while&lt;/code&gt; o delle istruzioni condizionali &lt;code&gt;if&lt;/code&gt; debbano essere &lt;a href=&#34;https://www.html.it/pag/39741/indentazione/&#34;&gt;indentate&lt;/a&gt; rispetto al resto del codice contribuisce moltissimo alla sua leggibilità, perché permette di afferrare &amp;ldquo;ad occhio&amp;rdquo; la struttura del programma. Questa caratteristica obbliga anche a rispettare una certa disciplina nella scrittura del codice (se non si rispetta la giusta indentazione il codice, anche se corretto dal punto di vista sintattico, si rifiuta di funzionare), che è sempre una cosa positiva quando si programma.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Flessibilità&lt;/strong&gt;. Si può programmare in Python utilizzando indifferentemente un approccio &lt;em&gt;procedurale&lt;/em&gt;, ad &lt;em&gt;oggetti&lt;/em&gt; o &lt;em&gt;funzionale&lt;/em&gt;, riuscendo spesso a mescolare senza troppi problemi i diversi metodi di programmazione all&amp;rsquo;interno dello stesso programma. Il linguaggio quindi si adatta facilmente alle abitudini dei singoli programmatori e consente di far evolvere il codice in base alle esigenze del momento. È abbastanza usuale, almeno per i programmatori &lt;em&gt;dilettanti&lt;/em&gt; come me, cominciare a scrivere un programma in Python buttando giù le idee alla bell&amp;rsquo;e meglio, per passare solo in un secondo momento ad organizzare le parti principali in funzioni autonome, arrivando magari a creare una struttura di classi e metodi o a spingersi verso le asprezze della programmazione funzionale (in cui dati e funzioni diventano un tutto unico) quando serve un approccio più robusto.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;La flessibilità del linguaggio viene sfruttata all&amp;rsquo;estremo dalle interfacce a &lt;em&gt;notebook&lt;/em&gt; come &lt;a href=&#34;https://jupyter.org&#34;&gt;Jupyter&lt;/a&gt;, che consentono di costruire dei veri e propri documenti programmabili, dove le parti di testo che descrivono il problema o i dettagli di funzionamento del codice si mescolano alle istruzioni Python e perfino ai dati e agli stessi risultati delle elaborazioni, dando all&amp;rsquo;utente la possibilità di sperimentare in modo interattivo e di eseguire il codice in modo non lineare (una pratica non sempre raccomandabile, ma che se tenuta sotto controllo è molto comoda).&lt;/p&gt;&#xA;&lt;p&gt;Jupyter può essere &lt;a href=&#34;https://jupyter.org/try&#34;&gt;utilizzato direttamente dal web&lt;/a&gt;, senza installare nulla sulla proprio computer e senza dover gestire le mille dipendenze dei pacchetti di terze parti che permettono a Python di essere usato in settori diversissimi, che spaziano dalle analisi scientifiche alla finanza o all&amp;rsquo;arte. Bisogna ammettere che la gestione dei pacchetti esterni è l&amp;rsquo;aspetto più complesso del linguaggio ed anche la sua principale debolezza, e che ancora oggi non esiste uno strumento universale per farlo.&lt;/p&gt;&#xA;&lt;p&gt;Grazie a &lt;a href=&#34;https://colab.research.google.com/notebooks/intro.ipynb&#34;&gt;Colab di Google&lt;/a&gt; si può persino utilizzare una GPU (e in certi casi persino una TPU) per velocizzare i programmi su Jupyter, una cosa fantascientifica fino a pochissimi anni fa.&lt;/p&gt;&#xA;&lt;p&gt;Sul fronte opposto, Python è in grado di girare anche su microcomputer da poche decine di euro, come le varie incarnazioni del &lt;a href=&#34;https://www.raspberrypi.org/products/raspberry-pi-4-model-b/&#34;&gt;Raspberry Pi&lt;/a&gt;, e perfino su alcuni microcontroller, come il recentissimo &lt;a href=&#34;https://www.raspberrypi.org/products/raspberry-pi-pico/&#34;&gt;Raspberry Pi Pico&lt;/a&gt;, dei veri e propri computer ridotti all&amp;rsquo;osso.&lt;/p&gt;&#xA;&lt;p&gt;Dal Visual Basic per Windows al Python di oggi se ne è fatta di strada!&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2021-04-19-python-il-visual-basic-del-xxi-secolo/6kxdp8u3k2c61.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da un testo mediante le reti neurali BigGAN e CLIP&lt;/em&gt;. Fonte: &lt;a href=&#34;https://www.reddit.com/r/MachineLearning/comments/kzr4mg/p_the_big_sleep_texttoimage_generation_using/&#34;&gt;Reddit&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2021-04-19-python-il-visual-basic-del-xxi-secolo/a-cityscape-in-the-style-of-mondrian-under-a-bright-sun.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;&#xA;&amp;ndash; &lt;em&gt;Immagine generata da un testo mediante le reti neurali BigGAN e CLIP&lt;/em&gt;. Fonte: Sabino Maggi.&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;Prima del Visual Basic mi viene in mente solo &lt;a href=&#34;https://it.wikipedia.org/wiki/LabVIEW&#34;&gt;LabView&lt;/a&gt; (sviluppato originariamente per MacOS), che però era un linguaggio iper-specializzato (e iper-costoso!) per la gestione della strumentazione elettronica di misura (e per l&amp;rsquo;automazione industriale in generale) e l&amp;rsquo;analisi dei dati acquisiti.&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;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;LabView (ancora!) perseguiva lo stesso scopo (e lo fa tuttora) nell&amp;rsquo;ambito, ben più ristretto, dell&amp;rsquo;automazione industriale.&amp;#160;&lt;a href=&#34;#fnref:2&#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;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Il codice originale di Python &lt;a href=&#34;https://github.com/smontanaro/python-0.9.1&#34;&gt;si trova qui&lt;/a&gt;, adattato in modo che possa essere ancora compilato sulle macchine moderne.&amp;#160;&lt;a href=&#34;#fnref:3&#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>
  </channel>
</rss>
