<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Fortran on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/fortran/</link>
    <description>Recent content in Fortran on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Sun, 06 Oct 2024 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/fortran/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>70 anni di Fortran (più o meno)</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2024/10/06/70-anni-di-fortran-piu-o-meno/</link>
      <pubDate>Sun, 06 Oct 2024 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2024/10/06/70-anni-di-fortran-piu-o-meno/</guid>
      <description>&lt;p&gt;Pochi giorni fa, il &lt;a href=&#34;https://www.edn.com/1st-fortran-program-runs-september-20-1954/&#34;&gt;20 settembre&lt;/a&gt; per essere precisi, il Fortran ha compiuto 70 anni.&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; La data scelta per il compleanno è un po&amp;rsquo; anomala, per i software di solito si celebra la data in cui vengono presentati al pubblico,&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; mentre per il Fortran è stato scelto il giorno in cui gli sviluppatori dell&amp;rsquo;IBM hanno eseguito il primo programma scritto in questo linguaggio, ben tre anni prima della presentazione ufficiale.&lt;/p&gt;&#xA;&lt;h4 id=&#34;ad-alto-livello&#34;&gt;Ad alto livello&lt;/h4&gt;&#xA;&lt;p&gt;Ed è una decisione pienamente giustificata, poiché il 20 settembre del 1954 accade qualcosa che avrebbe fatto la storia: per la prima volta un computer esegue un programma scritto in un linguaggio ad alto livello, molto più vicino al modo di pensare di un uomo, invece che in un linguaggio comprensibile solo alle macchine come l&amp;rsquo;assembler.&lt;/p&gt;&#xA;&lt;p&gt;Un evento cruciale, che avrebbe reso la programmazione accessibile ad un numero sempre maggiore di persone, aprendo la strada alla diffusione capillare dei computer e innescando una trasformazione radicale della società e della nostra vita quotidiana. Non a caso David Padua&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; &lt;a href=&#34;https://ucla-biostat-257-2020spring.github.io/readings/fortran.pdf&#34;&gt;sostiene che&lt;/a&gt;&lt;/p&gt;&#xA;&lt;!-- &#xA;&gt; it is almost universally agreed that the most important event of the 20th century in compiling -- and in computing -- was the development of the first Fortran compiler between 1954 and 1957. By demonstrating that it is possible to automatically generate quality machine code from high-level descriptions, the IBM team led by John Backus opened the door to the Information Age.&#xA; --&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;è quasi universalmente riconosciuto che l&amp;rsquo;evento più importante del XX secolo nel campo dei compilatori &amp;ndash; e in quello dell&amp;rsquo;informatica [in generale, ndt] &amp;ndash; è stato lo sviluppo del primo compilatore Fortran tra il 1954 e il 1957. Dimostrando che è possibile generare automaticamente codice macchina di qualità a partire da descrizioni ad alto livello, il team IBM guidato da John Backus aprì le porte all&amp;rsquo;era dell&amp;rsquo;informazione.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h4 id=&#34;il-primo-programma&#34;&gt;Il primo programma?&lt;/h4&gt;&#xA;&lt;p&gt;Per quanto abbia cercato non sono riuscito a trovare il codice di questo primo programma in Fortran, ma non dovrebbe essere troppo diverso da questo,&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2024-10-06-70-anni-di-fortran-piu-o-meno/ibm3.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;IBM 704 Fortran Programmer&amp;rsquo;s Reference Manual, 1956.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;che cerca il numero più grande in una lista di numeri fornita dall&amp;rsquo;utente. Il programma è molto semplice e può analizzare non più di 999 numeri ma, quando l&amp;rsquo;unica alternativa era scorrere a mano colonne e colonne di numeri, doveva essere un bel passo in avanti.&lt;/p&gt;&#xA;&lt;p&gt;Da notare la presenza dell&amp;rsquo;istruzione &lt;code&gt;FREQUENCY&lt;/code&gt;, rimossa nelle versioni successive e più efficienti del compilatore, con la quale il programmatore poteva stimare il numero di volte in cui ciascun ciclo &lt;code&gt;DO&lt;/code&gt; o test logico &lt;code&gt;IF&lt;/code&gt; poteva essere eseguito, dando modo al compilatore di &lt;a href=&#34;https://ucla-biostat-257-2020spring.github.io/readings/fortran.pdf&#34;&gt;ottimizzare il codice macchina generato&lt;/a&gt;. L&amp;rsquo;ottimizzazione  si basava sul nuovo (per l&amp;rsquo;epoca) metodo Monte Carlo, che non è per niente difficile da padroneggiare, ma che deve essere piuttosto difficile da programmare in un linguaggio a basso livello come l&amp;rsquo;assembler. Tanto di cappello per gli sviluppatori del primo Fortran!&lt;/p&gt;&#xA;&lt;h4 id=&#34;ottimizzare-ottimizzare-ottimizzare&#34;&gt;Ottimizzare ottimizzare ottimizzare&lt;/h4&gt;&#xA;&lt;p&gt;La questione dell&amp;rsquo;ottimizzazione del codice generato dal compilatore era essenziale per il successo del nuovo compilatore Fortran. I computer di allora erano estremamente lenti e costosi, e i programmi dovevano essere molto efficienti per riuscire ad eseguire le operazioni richieste senza inutili sprechi di risorse. Il team IBM &lt;a href=&#34;https://ucla-biostat-257-2020spring.github.io/readings/fortran.pdf&#34;&gt;era consapevole&lt;/a&gt; che&lt;/p&gt;&#xA;&lt;!-- &#xA;&gt; if Fortran, during its first months, were to translate any reasonable scientific source program into an object program only half as fast as its hand-coded counterpart, the acceptance of our system would be in serious danger.&#xA; --&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;se il Fortran, nei suoi primi mesi di vita, fosse in grado di tradurre qualsiasi programma sorgente scientifico ragionevole in un programma oggetto con una velocità pari alla metà di quella della sua controparte codificata a mano, l&amp;rsquo;accettazione del nostro sistema sarebbe in serio pericolo.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;E ci sono riusciti. Un programma scritto in Fortran e tradotto in codice macchina attraverso il primo compilatore risultava effettivamente più lento di uno equivalente scritto in assembler, ma molto meno di quanto avessero temuto inizialmente gli sviluppatori.&lt;/p&gt;&#xA;&lt;p&gt;Il grande vantaggio di poter programmare utilizzando un linguaggio ad alto livello, con una sintassi molto vicina all&amp;rsquo;inglese, compensava ampiamente questa perdita di prestazioni. Non a caso, in pochi anni l&amp;rsquo;uso dei linguaggi ad alto livello si diffuse così tanto da mandare l&amp;rsquo;assembler nel dimenticatoio.&lt;/p&gt;&#xA;&lt;h4 id=&#34;notarelle-finali&#34;&gt;Notarelle finali&lt;/h4&gt;&#xA;&lt;p&gt;Il &lt;a href=&#34;http://pages.swcp.com/~walt/ibm.html&#34;&gt;manuale&lt;/a&gt; della prima versione del Fortran era davvero smilzo, appena 54 pagine. Niente a che vedere con i giganteschi tomi odierni, che riempiono 4-500 pagine per insegnare i rudimenti di un linguaggio di programmazione o di uno strumento software.&lt;/p&gt;&#xA;&lt;p&gt;Negli anni &amp;lsquo;80 il Fortran era così popolare in ambito scientifico che poteva essere usato non solo sui grossi mainframe o sulle workstation e i minicomputer tanto diffusi in ambito universitario, ma perfino sui microcomputer economici come il &lt;a href=&#34;https://www.lyonlabs.org/commodore/onrequest/Nevada_FORTRAN_for_the_Commodore_64.pdf&#34;&gt;Commodore 64&lt;/a&gt; e lo &lt;a href=&#34;https://crashonline.org.uk/45/tips.htm&#34;&gt;Spectrum 48K&lt;/a&gt;, oppure (c&amp;rsquo;è bisogno di dirlo?) sul più potente &lt;a href=&#34;https://www.computinghistory.org.uk/det/1702/Apple-II-Apple-Fortran-Language-Reference-Manual/&#34;&gt;Apple II&lt;/a&gt;. Certo, su queste macchinette non si poteva pensare di far girare una simulazione meteorologica o di generare un frattale in tempo reale, ma per imparare nella comodità di casa propria potevano essere più che sufficienti.&lt;/p&gt;&#xA;&lt;p&gt;È curioso che i tre principali linguaggi di programmazione sviluppati negli anni &amp;lsquo;50, Fortran (1954), LISP (1958) e COBOL (1959) siano ancora in uso oggi, dividendosi in modo netto i campi di applicazione: il Fortran per il calcolo scientifico ed ingegneristico, il COBOL in campo finanziario e bancario. E il LISP? Beh, il LISP sta ben nascosto in tante cose odierne, fra cui &lt;a href=&#34;https://www.gnu.org/software/emacs/&#34;&gt;emacs&lt;/a&gt; e &lt;a href=&#34;https://julialang.org/&#34;&gt;Julia&lt;/a&gt;, e comunque rimane sempre il più affascinante dei tre.&lt;/p&gt;&#xA;&lt;h4 id=&#34;bibliografia&#34;&gt;Bibliografia&lt;/h4&gt;&#xA;&lt;p&gt;Qualche link per chi volesse approfondire:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Il sito di riferimento del linguaggio Fortran, &lt;a href=&#34;https://fortran-lang.org/&#34;&gt;fortran-lang.org&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.ibiblio.org/pub/languages/fortran/ch1-1.html&#34;&gt;A Brief History of FORTRAN/Fortran&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;David Padua, &lt;a href=&#34;https://ucla-biostat-257-2020spring.github.io/readings/fortran.pdf&#34;&gt;The Fortran I Compiler&lt;/a&gt;, Computing in Science &amp;amp; Engineering, 2000.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Lee Phillips, &lt;a href=&#34;https://arstechnica.com/science/2014/05/scientific-computings-future-can-any-coding-language-top-a-1950s-behemoth/&#34;&gt;Scientific computing’s future: Can any coding language top a 1950s behemoth?&lt;/a&gt;, Ars Technica, 2014.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Rud Merriam, &lt;a href=&#34;https://hackaday.com/2015/10/26/this-is-not-your-fathers-fortran/&#34;&gt;This Is Not Your Father’s FORTRAN&lt;/a&gt;, Hackaday, 2015.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Liam Tung, &lt;a href=&#34;https://www.zdnet.com/article/this-old-programming-language-is-suddenly-hot-again-but-its-future-is-still-far-from-certain/&#34;&gt;This old programming language is suddenly hot again. But its future is still far from certain&lt;/a&gt;, ZDNET, 2021.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&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;Lo so, ormai non sono più tanto &lt;em&gt;pochi&lt;/em&gt;, ma negli ultimi tempi sono stato assorbito dal trasloco imprevisto del nostro istituto a causa di urgenti lavori di ristrutturazione.&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;Anche in modo informale, come è successo per Linux, presentato per la prima volta su un &lt;a href=&#34;https://en.wikipedia.org/wiki/History_of_Linux&#34;&gt;newsgroup&lt;/a&gt; dedicato ad un sistema operativo ormai dimenticato.&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;David Padua è professore emerito presso il Dipartimento di Informatica dell&amp;rsquo;università dell&amp;rsquo;Illinois a Urbana-Champaign.&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>
    <item>
      <title>Schede perforate: 1-2-3 Quattro</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2022/10/16/schede-perforate-1-2-3-quattro/</link>
      <pubDate>Sun, 16 Oct 2022 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2022/10/16/schede-perforate-1-2-3-quattro/</guid>
      <description>&lt;p&gt;Per la tesi avevo un problema: dovevo cercare di calcolare se era possibile realizzare un nuovo dispositivo elettronico funzionante a bassissima temperatura, quello che nel titolo della tesi sarà un &amp;ldquo;dispositivo ad anello di giunzioni Josephson&amp;rdquo;.&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; In teoria era una idea interessante, perché la configurazione ad &lt;em&gt;anello&lt;/em&gt; rendeva il dispositivo meno soggetto al rumore magnetico, ma anche se le equazioni matematiche dicevano che funzionava, non era affatto detto che fosse davvero fattibile.&lt;/p&gt;&#xA;&lt;p&gt;Ma come calcolare i valori realistici dei parametri da usare per la realizzazione di questo dispositivo? A quei tempi di tecnologia sapevo solo l&amp;rsquo;indispensabile che mi permetteva di capire, più o meno, quello che dovevo cercare di ottenere. Il problema era che i parametri di fabbricazione dipendevano l&amp;rsquo;uno dall&amp;rsquo;altro in modi più o meno complicati, ogni volta che cambiavo il valore di un parametro anche gli altri ne erano influenzati.&lt;/p&gt;&#xA;&lt;p&gt;Praticamente era la descrizione di un foglio elettronico. E allora perché non provare ad usarlo per risolvere il mio problema?&lt;/p&gt;&#xA;&lt;p&gt;Con il senno di poi era un&amp;rsquo;idea folle. Eravamo più o meno fra il 1985 e il 1987 (e sì, allora ci voleva una vita per preparare la tesi) e anche se sapevo cosa fosse un foglio elettronico &amp;ndash; del resto ogni mese leggevo avidamente Bit, MCmicrocomputer e, quando potevo, BYTE &amp;ndash; non lo avevo mai usato e non sapevo se fosse adatto o no al mio scopo.&lt;/p&gt;&#xA;&lt;p&gt;Per fortuna avevo degli amici che potevano darmi una copia, rigorosamente &amp;ldquo;pirata&amp;rdquo;, di &lt;a href=&#34;https://en.wikipedia.org/wiki/Lotus_1-2-3&#34;&gt;Lotus 1-2-3&lt;/a&gt;, che aveva già soppiantato il &lt;a href=&#34;https://en.wikipedia.org/wiki/VisiCalc&#34;&gt;VisiCalc&lt;/a&gt; come programma dominante per la gestione dei fogli elettronici, e cominciai subito ad imparare ad usarlo.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-16-schede-perforate-1-2-3-quattro/lotus-123-for-dos.png&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: WinWorld, &lt;a href=&#34;https://winworldpc.com/product/lotus-1-2-3/1x&#34;&gt;Lotus 1-2-3 per DOS&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Un vero spettacolo! Potevo inserire i dati di partenza, aggiungere un po&amp;rsquo; di formule collegate una all&amp;rsquo;altra e, magia!, il foglio ricalcolava all&amp;rsquo;istante i valori dei parametri che mi servivano. Beh, &lt;em&gt;quasi&lt;/em&gt; all&amp;rsquo;istante, perché i primi PC erano quelli che erano (cioè lenti) e il ricalcolo si &lt;em&gt;vedeva&lt;/em&gt; chiaramente sullo schermo. Però, ragazzi, a mano ci avrei messo delle ore e invece lì tutto avveniva in pochi secondi.&lt;/p&gt;&#xA;&lt;p&gt;A quel punto mi bastava far variare questo o quel dato in un certo intervallo per ottenere la risposta complessiva del sistema con il grafico associato. Ci voleva un po&amp;rsquo;, ma sempre infinitamente meno che sviluppando un programma apposito in Fortran.&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;&lt;/p&gt;&#xA;&lt;p&gt;Dopo poco, tramite i soliti &amp;ldquo;canali&amp;rdquo;, riuscii ad avere una copia di &lt;a href=&#34;https://en.wikipedia.org/wiki/Quattro_Pro&#34;&gt;Borland Quattro&lt;/a&gt;, che emulava al 100% il Lotus 1-2-3 ed era anche un bel po&amp;rsquo; più veloce e che, come ciliegina sulla torta, faceva dei bellissimi grafici che stampavo con un &lt;a href=&#34;http://www.hpmuseum.net/display_item.php?hw=74&#34;&gt;plotter a penne HP&lt;/a&gt; (un oggetto favoloso).&lt;/p&gt;&#xA;&lt;p&gt;Con l&amp;rsquo;aiuto di Quattro la tesi si concluse rapidamente, e feci pure un bella figura.&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;Inizia oggi una nuova serie di post, con cadenza occasionale, &amp;ldquo;Schede perforate&amp;rdquo;, nei quali voglio raccontare delle storielle di informatica personale. Roba leggera per una volta, che infatti uscirà (quando uscirà) di domenica, quasi a sostituire la vecchia serie &amp;ldquo;Playlist per Bora Bora&amp;rdquo;, che era una goduria da scrivere ma che non interessava a nessuno, o quasi.&lt;/p&gt;&#xA;&lt;p&gt;Quale occasione migliore per iniziare questa serie che celebrare la ricorrenza di domani, il &amp;ldquo;giorno del foglio elettronico&amp;rdquo;? Perché proprio il 17 ottobre 1979 usciva &lt;a href=&#34;http://www.bricklin.com/visicalc.htm&#34;&gt;VisiCalc&lt;/a&gt; per Apple II, il software che avrebbe letteralmente rivoluzionato l&amp;rsquo;uso del computer personale, trasformandolo da costoso giocattolo per soli &lt;em&gt;nerd&lt;/em&gt; a strumento di lavoro per tutti, da tenere permanentemente sulla scrivania.&lt;/p&gt;&#xA;&lt;p&gt;La &lt;em&gt;bellezza&lt;/em&gt; di VisiCalc (e anche dei suoi successori 1-2-3 o Quattro) era la sua semplicità, chiunque poteva &lt;em&gt;programmare&lt;/em&gt; un foglio elettronico facendogli fare cose che spaziavano dalla gestione di una azienda ad un semplice ricettario di cucina. Oggi Excel è letteralmente di un&amp;rsquo;altra galassia rispetto a VisiCalc, ma il diluvio di funzioni disponibili lo ha reso un prodotto molto lontano dalla indimenticabile semplicità d&amp;rsquo;uso dei primi fogli elettronici.&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/5cNJNKkCQ2E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#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;A quei tempi imperava una sorta di accademia della Crusca interna e gli inglesismi erano banditi, c&amp;rsquo;è uno che ha dovuto scrivere &amp;ldquo;effetto traforo&amp;rdquo; al posto di &amp;ldquo;effetto tunnel&amp;rdquo;. Io sono stato più fortunato e me la sono cavata con &amp;ldquo;anello&amp;rdquo; al posto di &amp;ldquo;loop&amp;rdquo;.&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;A posteriori ammetto che era un metodo molto rozzo. Il mio era di un problema di ottimizzazione vincolata e ora conosco delle tecniche molto efficaci per &lt;a href=&#34;https://www.sciencedirect.com/science/article/abs/pii/S0266352X16303329&#34;&gt;risolverlo&lt;/a&gt;, ma allora ero solo un pischello alle prime armi.&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;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>JuliaCon 2021</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2021/07/23/juliacon-2021/</link>
      <pubDate>Fri, 23 Jul 2021 12:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2021/07/23/juliacon-2021/</guid>
      <description>&lt;p&gt;Julia è l&amp;rsquo;ultimo arrivato fra i linguaggi di programmazione scientifici, che ambisce a combinare la velocità del Fortran con la semplicità sintattica e l&amp;rsquo;interattività di Python.&lt;/p&gt;&#xA;&lt;p&gt;Un&amp;rsquo;altra particolarità molto interessante di Julia è il supporto nativo agli &lt;em&gt;ambienti&lt;/em&gt;: ciascun progetto scritto in Julia può avere un suo ambiente specifico, contenente il compilatore,&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; le librerie e gli eventuali package aggiuntivi necessari, nelle versioni che garantiscono il perfetto funzionamento del progetto. La gestione degli ambienti è ancora oggi una delle principali debolezze di Python, averli integrati direttamente nel linguaggio di programmazione dovrebbe rendere più semplice la scrittura di &lt;a href=&#34;https://rescience.github.io/&#34;&gt;codice &lt;em&gt;riproducibile&lt;/em&gt;&lt;/a&gt;, il Santo Graal del software scientifico odierno.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2021-07-23-juliacon-2021/world_2800.png&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://juliacon.org/2021&#34;&gt;JuliaCon 2021&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Perché parlo di Julia? Perché la settimana prossima inizia il &lt;a href=&#34;https://juliacon.org/2021&#34;&gt;JuliaCon 2021&lt;/a&gt;, un&amp;rsquo;ottima occasione per iniziare a conoscere questo interessante linguaggio di programmazione. La &lt;a href=&#34;https://juliacon.org/2021/tickets/&#34;&gt;registrazione&lt;/a&gt; è gratuita per cui non ci sono rischi, nemmeno per il portafoglio.&lt;/p&gt;&#xA;&lt;p&gt;In attesa dell&amp;rsquo;inizio della Conferenza, si stanno tenendo dei &lt;a href=&#34;https://juliacon.org/2021/workshops/&#34;&gt;workshop preliminari&lt;/a&gt; molto interessanti che possono già essere visti su YouTube (o potranno essere visti in diretta nei prossimi giorni), senza nemmeno la necessità di installare l&amp;rsquo;ennesimo sistema di videoconferenza. Per quanto mi riguarda, finito il post mi guarderò &lt;a href=&#34;https://www.youtube.com/watch?v=IlPoU5Yr2QI&#34;&gt;Statistics with Julia from the ground up&lt;/a&gt;, mentre lunedì mi aspetta &lt;a href=&#34;https://www.youtube.com/watch?v=W_ExvidyESg&#34;&gt;Introduction to Bayesian Data Analysis&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Per chi preferisce leggere, consiglio questo articolo generale del sempre bravissimo Jeffrey Perkel, &lt;a href=&#34;https://www.nature.com/articles/d41586-019-02310-3&#34;&gt;Julia: come for the syntax, stay for the speed&lt;/a&gt;, e questo post su Towards Data Science, &lt;a href=&#34;https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62&#34;&gt;Bye-bye Python. Hello Julia!&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Buona visione (o buona lettura)!&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;Julia è un linguaggio compilato ma funziona anche in modo interattivo.&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>Cray-1 il macina numeri</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2017/08/21/cray-1-il-macina-numeri/</link>
      <pubDate>Mon, 21 Aug 2017 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2017/08/21/cray-1-il-macina-numeri/</guid>
      <description>&lt;p&gt;Cray. Oggi non se lo ricorda quasi nessuno (o magari pensa ad un supermercato), ma negli anni &amp;lsquo;70 e &amp;lsquo;80 Cray era sinonimo di supercomputer, quei computer potentissimi e inaccessibili usati per la ricerca nucleare o spaziale o per prevedere il tempo.&lt;/p&gt;&#xA;&lt;a href=&#34;https://melabit.files.wordpress.com/2017/08/cray1-1.jpg&#34; target=&#34;_blank&#34;&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2017/08/cray1-1.jpg&#34; alt=&#34;Il Cray-1 esposto al Deutsches Museum di Monaco.&#34; style=&#34;width:50%;&#34;&gt;&lt;/a&gt;&#xA;_Il Cray-1 esposto al Deutsches Museum di Monaco, presumibilmente l&#39;unità appartenuta al Max Planck Institute di Garching, Monaco._&#xA;&lt;p&gt;Per tutta la seconda metà degli anni &amp;lsquo;70 non esisteva nessun computer più potente del Cray-1, un bestione di due metri da 10 milioni di dollari (di allora, oggi corrispondono a più o meno il doppio), costruito in modo quasi artigianale. Il primo computer ad usare i circuiti integrati &amp;ndash; solo quattro tipi diversi &amp;ndash; distribuiti su centinaia e centinaia di schede elettroniche strettamente accoppiate, che producevano tanto calore da dover essere raffreddate con un sistema speciale a base di freon.&lt;/p&gt;&#xA;&lt;a href=&#34;https://melabit.files.wordpress.com/2017/08/cray1-2.jpg&#34; target=&#34;_blank&#34;&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2017/08/cray1-2.jpg&#34; alt=&#34;Schede elettroniche modulari del Cray-1.&#34; style=&#34;width:50%;&#34;&gt;&lt;/a&gt;&#xA;_Schede elettroniche modulari del Cray-1._&#xA;&lt;p&gt;Il Cray-1 era composto da 12 colonne a forma di cuneo con la punta tagliata, che formavano un arco di 270°. Visto da sopra ricordava la lettera &amp;ldquo;C&amp;rdquo; di Cray. Ma la forma aveva una funzione precisa: minimizzare la lunghezza dei collegamenti fra le schede elettroniche che componevano l&amp;rsquo;intero computer, ciascuno dei quali non dovevano superare i 120 centimetri per non rallentare inutilmente la macchina. C&amp;rsquo;erano migliaia di coppie intrecciate di cavi bianchi e azzurri, per un totale più di 100 chilometri di cavo, a formare un groviglio che sembrava inestricabile.&lt;/p&gt;&#xA;&lt;a href=&#34;https://melabit.files.wordpress.com/2017/08/cray1-3.jpg&#34; target=&#34;_blank&#34;&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2017/08/cray1-3.jpg&#34; alt=&#34;Groviglio di cavi nella zona centrale del Cray-1.&#34; style=&#34;width:50%;&#34;&gt;&lt;/a&gt;&#xA;_Groviglio di cavi nella zona centrale del Cray-1._&#xA;&lt;p&gt;Per gli standard di allora il Cray-1 era veloce, anzi velocissimo: 138 MFLOPS (cioè milioni di operazioni in virgola mobile al secondo) continuativi e 250 MFLOPS, quasi il doppio, per brevi periodi di tempo, circa 5 volte meglio del miglior computer dell&amp;rsquo;epoca, il CDC 7600. E tutto ciò nonostante le due ore giornaliere di fermo macchina necessarie per le operazioni di manutenzione preventiva.&lt;/p&gt;&#xA;&lt;p&gt;Il Cray-1 era costruito apposta per fare calcoli o &lt;em&gt;macinare i numeri&lt;/em&gt; (&lt;em&gt;number crunching&lt;/em&gt;), come si usava dire allora, preferibilmente lavorando in parallelo sui cosiddetti &lt;em&gt;vettori&lt;/em&gt;, strutture matematiche formate da numeri dello stesso tipo organizzati in righe o colonne. Il suo compilatore trasformava il normale codice  FORTRAN in istruzioni specifiche per l&amp;rsquo;hardware della macchina, e i risultati dei calcoli venivano usati immediatamente per le  elaborazioni successive, senza passare dalla memoria. Il concetto di &lt;em&gt;chaining&lt;/em&gt; (o &lt;em&gt;pipelining&lt;/em&gt;) diventerà comune solo decine di anni dopo.&lt;/p&gt;&#xA;&lt;p&gt;Il Cray-1 era super anche per il resto delle sue caratteristiche hardware: 8 MB di memoria RAM e una frequenza di clock di 80 MHz, numeri astronomici per l&amp;rsquo;epoca (tanto per mettere le cose in prospettiva, il primo modello di &lt;a href=&#34;https://en.wikipedia.org/wiki/Apple_II&#34;&gt;Apple II del 1977&lt;/a&gt; aveva una frequenza di clock di 1 MHz, una memoria massima di 48 kB e costava 2500 dollari; se avesse avuto le stesse specifiche hardware dal CRAY-1 sarebbe dovuto costare più di 30 milioni di dollari).&lt;/p&gt;&#xA;&lt;p&gt;Per chi come me si è appassionato di computer alla fine degli anni &amp;lsquo;70, il Cray-1 era un mito irraggiungibile. Riservato solo a pochissimi scienziati, agli altri toccavano le schede perforate o, al massimo, il VAX.&lt;/p&gt;&#xA;&lt;p&gt;Pochi giorni fa ho avuto la fortuna di vederne uno dal vivo, al &lt;a href=&#34;http://deutsches-museum.de&#34;&gt;Deutsches Museum&lt;/a&gt; di Monaco, uno dei principali musei della scienza e della tecnica del mondo (se passate da Monaco una visita al Deutsches Museum è d&amp;rsquo;obbligo). Era chiaramente il re della sezione, piazzato proprio al centro della stanza, ben in vista e ben illuminato. Ancora bellissimo, con il suo look inconfondibilmente anni &amp;lsquo;70.&lt;/p&gt;&#xA;&lt;p&gt;Peccato solo non aver potuto condividere l&amp;rsquo;emozione con nessun altro, nemmeno con mia moglie, che pazientemente ha voluto accompagnarmi a visitare un settore del museo per lei assolutamente alieno.&lt;/p&gt;&#xA;&lt;p&gt;(&lt;a href=&#34;https://melabit.wordpress.com/2017/08/31/cray-1-a-confronto/&#34;&gt;continua&lt;/a&gt;&amp;hellip;)&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Senza fretta</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2013/12/27/senza-fretta/</link>
      <pubDate>Fri, 27 Dec 2013 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2013/12/27/senza-fretta/</guid>
      <description>&lt;p&gt;Ho scoperto solo di recente questo interessante articolo sulla programmazione: &lt;a href=&#34;http://norvig.com/21-days.html&#34;&gt;Teach Yourself Programming in Ten Years&lt;/a&gt; di Peter Norvig. Purtroppo la traduzione in italiano non è più disponibile direttamente ma può essere ritrovata, tramite il benemerito sito &lt;a href=&#34;https://archive.org&#34;&gt;archive.org&lt;/a&gt;, alla pagina &lt;a href=&#34;https://web.archive.org/web/20130521001215/http://www.culturahacker.it/documenti/teach.html&#34;&gt;Impara a Programmare in Dieci Anni&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Questo articolo è una lettura fondamentale per chiunque voglia avvicinarsi al mondo affascinante della programmazione ed insegna fondamentalmente a&amp;hellip; non avere fretta.&lt;/p&gt;&#xA;&lt;p&gt;Imparare a programmare è una attività intellettuale simile a imparare a suonare uno strumento musicale, a parlare una nuova lingua o a cucinare. Ci vuole dedizione, tempo ed esperienza. Bisogna sperimentare, sbagliare, ed imparare a correggere i propri errori. Tutte cose che non si possono fare in pochi giorni né, beninteso, in pochi mesi. Ci vogliono anni di lavoro.&lt;/p&gt;&#xA;&lt;p&gt;Per fortuna i primi frutti possono essere ottenuti in tempi relativamente brevi, in modo da essere stimolati a proseguire lo studio. Ma bisogna avere pazienza. Iniziare dalle cose basilari, preferibilmente usando un linguaggio di programmazione semplice ma potente come &lt;a href=&#34;http://www.python.org&#34;&gt;Python&lt;/a&gt;, e non porsi obiettivi troppo ambiziosi per le proprie capacità del momento.&lt;/p&gt;&#xA;&lt;p&gt;Fatto questo, le soddisfazioni non mancheranno.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
