<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ibm on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/ibm/</link>
    <description>Recent content in Ibm 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/ibm/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: Dal sottosuolo</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2022/10/23/schede-perforate-dal-sottosuolo/</link>
      <pubDate>Sun, 23 Oct 2022 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2022/10/23/schede-perforate-dal-sottosuolo/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-23-schede-perforate-dal-sottosuolo/punch-card-stacks.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://www.creativeboom.com/features/print-punch-artefacts-from-the-punch-card-computing-era-/&#34;&gt;What obsolete computer punch cards reveal about the history of information design in today&amp;rsquo;s era of unseen data&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Sono stato combattuto a lungo sul nome da dare a questa serie. In un primo momento avevo scelto &amp;ldquo;Racconti dal sottosuolo&amp;rdquo;. I primi computer che ho usato stavano proprio sotto terra, prima sotto il &lt;a href=&#34;https://www.google.it/maps/@45.0518686,7.6822259,3a,75y,301.74h,86.74t/data=!3m6!1e1!3m4!1sna8AFNVBYUhDvftAT1oX4A!2e0!7i16384!8i8192&#34;&gt;vecchio Dipartimento di Fisica di Torino&lt;/a&gt; e l&amp;rsquo;anno dopo nella &lt;a href=&#34;https://www.google.it/maps/@45.0611546,7.6870546,3a,75y,51.78h,104.07t/data=!3m6!1e1!3m4!1sqmgdglb2gnL_IEyLTFS82g!2e0!7i16384!8i8192&#34;&gt;&lt;em&gt;dependance&lt;/em&gt; sotterranea&lt;/a&gt; del centro di calcolo dell&amp;rsquo;Università (ora c&amp;rsquo;è un supermercato), dove riuscivo ad entrare di straforo grazie all&amp;rsquo;aiuto di un amico che studiava informatica. Stare sottoterra, quindi, è stato per me all&amp;rsquo;inizio una condizione naturale per usare un computer.&lt;/p&gt;&#xA;&lt;p&gt;Ma ripensandoci &amp;ldquo;Racconti dal sottosuolo&amp;rdquo; era un titolo troppo altisonante, quasi dostojevskiano, e anche troppo personale per essere comprensibile ai più.&lt;/p&gt;&#xA;&lt;p&gt;E allora è diventato quasi ovvio scegliere &amp;ldquo;Schede perforate&amp;rdquo;. Sono abbastanza vecchio da averle usate per un anno, proprio in quel primo anno passato molto spesso nel sotterraneo di Fisica, e per me rimangono ancora associate in modo indissolubile al computer. Ne ho ancora alcune nella mia piccola collezione di vecchie glorie del &lt;em&gt;computing&lt;/em&gt;, un paio di schede continuano ancora ad emergere ogni tanto da una montagnola di carte accanto mia scrivania, ma non mi decido mai a metterle in un posto più adatto.&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;Usare un computer con le schede perforate era un bell&amp;rsquo;affare. Bisognava scrivere con pazienza il programma sulle schede, una riga di codice per scheda, usando  una specie di macchina da scrivere elettrica accoppiata ad un grosso macchinario che prendeva le schede nuove da una pila, le bucava nei punti giusti e infine spostava la scheda finita su una seconda pila, pronta per essere letta dal computer.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-23-schede-perforate-dal-sottosuolo/ibm029c.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Perforatrice modello IBM 029. Fonte: &lt;a href=&#34;http://www.columbia.edu/cu/computinghistory/029.html&#34;&gt;Columbia University Computing History&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Di queste perforatrici, tutte IBM naturalmente, allora IBM era la dominatrice indiscussa del mercato dei computer &amp;ldquo;seri&amp;rdquo;, nel piccolo sotterraneo di Fisica ce ne saranno state almeno una decina e il rumore che facevano era infernale. Pochi giorni fa un membro giovane del gruppo si lamentava del ronzio del server nella sua stanza, avrei voluto fargli sentire cosa c&amp;rsquo;era laggiù!&lt;/p&gt;&#xA;&lt;p&gt;Una volta pronte le schede, bisognava prendere la pila e portarla nella stanzetta del lettore, aspettando pazientemente il proprio turno per farle leggere ed elaborare. A questo punto era solo una questione di fortuna, se il computer centrale era &lt;em&gt;scarico&lt;/em&gt; o se per qualche combinazione astrale il proprio &lt;em&gt;job&lt;/em&gt; riusciva a passare davanti agli altri, si poteva avere una risposta in pochi minuti, altrimenti potevano passare benissimo delle ore. Sempre sperando che il programma non finisse in un loop infinito e dovesse essere interrotto di brutto da un qualche &lt;em&gt;sacerdote&lt;/em&gt; in camice bianco che stava chissà dove, una circostanza che veniva annunciata a piena voce nella stanzetta del lettore, a pubblico ludibrio del colpevole. Chiaro che, dopo un paio di volte che succedeva si stava bene attenti a non sottomettere un &lt;em&gt;job&lt;/em&gt; prima di averlo controllato più che bene.&lt;/p&gt;&#xA;&lt;p&gt;Se invece il programma si concludeva correttamente, prima o poi uscivano i risultati dell&amp;rsquo;elaborazione, stampati su degli enormi fogli perforati che bisognava imparare a tagliare alla perfezione senza mai interrompere il flusso di carta della stampante. Magari ci si era dimenticati di una virgola, e tutto quello che si otteneva era un messaggio di errore indecifrabile. Nel qual caso bisognava tornare alla perforatrice, correggere le schede sbagliate e ripetere tutto il processo.&lt;/p&gt;&#xA;&lt;p&gt;Una vera tortuna, ma anche una scuola impareggiabile di precisione e di cura maniacale dei dettagli.&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;Un problema non da poco con le schede perforate è che bisognava portarle da una stanza all&amp;rsquo;altra, districandosi fra gli studenti che andavano e venivano. Io per fortuna usavo il FORTRAN e le mie pile di schede erano maneggiabili con facilità, ma per gli informatici che usavano il COBOL erano dolori. Non so niente di COBOL ma so benissimo da quegli anni che è un linguaggio di programmazione molto &lt;em&gt;verboso&lt;/em&gt;, per cui le sue pile di schede erano molto, molto alte. Non ho mai dimenticato la ragazza buttata per terra a piangere dopo che aveva fatto cadere per terra una pila di centinaia e centinaia di schede perforate in COBOL per la tesi.&lt;/p&gt;&#xA;&lt;p&gt;E non oso nemmeno immaginare cosa avrebbe fatto la signora fotografata qui sotto se fosse successo a lei.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-23-schede-perforate-dal-sottosuolo/5mb-punch-card-program.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; Il programma (presumibilmente) più lungo scritto con le schede perforate occupa ben 62.500 schede, corrispondenti a 5 MB di dati. &lt;em&gt;Fonte: &lt;a href=&#34;https://www.computerhope.com/jargon/p/punccard.htm&#34;&gt;Computer Hope, Punch card&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
