<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Julia on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/julia/</link>
    <description>Recent content in Julia 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/julia/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>Swift contro Python, ovvero mele contro pere</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2022/10/03/swift-contro-python-ovvero-mele-contro-pere/</link>
      <pubDate>Mon, 03 Oct 2022 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2022/10/03/swift-contro-python-ovvero-mele-contro-pere/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/martina-leuderalbert-i-GgDz7KQz4-unsplash.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://unsplash.com/@tinaleuderalbert&#34;&gt;Martina Leuderalbert&lt;/a&gt; su &lt;a href=&#34;https://unsplash.com&#34;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Alle elementari la maestra mi aveva insegnato a non sommare le mele con le pere, cioè a non mettere insieme (o paragonare) cose e fatti molto diversi fra loro. Non ha quindi senso sommare 3 litri di acqua con 5 chilogrammi di farina o chiedersi se 40 metri sono più o meglio di 20 secondi.&lt;/p&gt;&#xA;&lt;p&gt;Quello che diceva la mia maestra lo dicono, sono sicuro, le maestre di tutto il mondo, ma c&amp;rsquo;è sempre qualcuno assente a queste lezioni.&lt;/p&gt;&#xA;&lt;h4 id=&#34;il-golia-della-programmazione-moderna&#34;&gt;Il Golia della programmazione moderna&lt;/h4&gt;&#xA;&lt;p&gt;Uno di questi è stato di sicuro Ari Joury che, nonostante il suo dottorato in fisica delle particelle, non si è fatto scrupoli a pubblicare su Medium questo &lt;a href=&#34;https://medium.com/geekculture/swift-was-poised-to-replace-python-then-it-tanked-3e6c11740ba6&#34;&gt;Swift was poised to replace Python. Then it tanked&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Cosa dice l’articolo? Che nel mondo del machine learning i linguaggi di programmazione più usati sono Matlab, R, Julia e soprattutto Python. Quest’ultimo, nato originariamente per sviluppare dei piccoli &lt;em&gt;script&lt;/em&gt; senza troppe pretese, è diventato oggi un vero &lt;em&gt;&amp;ldquo;Golia della programmazione moderna”&lt;/em&gt;, tanto da essere usato estensivamente da aziende come Dropbox, Instagram e Pinterest per i loro servizi online.&lt;/p&gt;&#xA;&lt;p&gt;Grazie alla disponibilità di librerie come TensorFlow o PyTorch (nonché, aggiungo io, di librerie di base come Pandas o NumPy), Python è diventato anche il linguaggio di elezione di chi si occupa di machine learning e di analisi dei dati.&lt;/p&gt;&#xA;&lt;p&gt;La crescita di Python sembra bloccata da un paio di anni, ma la sua enorme diffusione lo farà rimanere comunque un attore centrale anche nel prossimo futuro.&lt;/p&gt;&#xA;&lt;h4 id=&#34;entra-in-scena-swift&#34;&gt;Entra in scena Swift&lt;/h4&gt;&#xA;&lt;p&gt;Fin qui tutto vero e condivisibile. Magari si potrebbe eccepire qualcosina sull&amp;rsquo;importanza di R nell&amp;rsquo;ambito dell&amp;rsquo;analisi dei dati, ma non voglio essere puntiglioso.&lt;/p&gt;&#xA;&lt;p&gt;Il guaio è che se uno si limita a scrivere queste cose non se lo fila nessuno, chi vorrà mai leggere l&amp;rsquo;ennesimo articolo generico sulle virtù di Python per il machine learning (e non) o su &lt;a href=&#34;https://towardsdatascience.com/why-python-is-not-the-programming-language-of-the-future-30ddc5339b66&#34;&gt;quale linguaggio&lt;/a&gt; è destinato a soppiantarlo?&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; Ci vuole un colpo d&amp;rsquo;ala.&lt;/p&gt;&#xA;&lt;p&gt;Per fortuna c&amp;rsquo;è sempre Apple che, come il nero, va bene su tutto e, soprattutto, garantisce sempre un bel po&amp;rsquo; di click. E allora perché non mettere in mezzo Swift?&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.apple.com/swift&#34;&gt;Swift&lt;/a&gt; è un linguaggio di programmazione sviluppato da Apple con l&amp;rsquo;obiettivo specifico di sostituire &lt;a href=&#34;https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html&#34;&gt;Objective-C&lt;/a&gt; come linguaggio di elezione per lo sviluppo delle applicazioni per iOS e per macOS. Swift è facile da imparare e la sua sintassi leggibile ricalca quella di Python, è vero, così come quella di Julia e di tanti altri linguaggi di programmazione moderni.&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;Swift però non ha mai preteso di essere, come &lt;a href=&#34;https://medium.com/geekculture/swift-was-poised-to-replace-python-then-it-tanked-3e6c11740ba6&#34;&gt;sostiene il nostro Ari&lt;/a&gt;, il nuovo &lt;em&gt;&amp;ldquo;Re della Programmazione&amp;rdquo;&lt;/em&gt;. Ad Apple non interessa posizionare Swift come uno strumento di programmazione &lt;em&gt;general purpose&lt;/em&gt;, le interessa solo che venga usato per programmare le applicazioni per i suoi sistemi operativi. Del resto, il fatto che manchi di una versione per Windows taglia fuori una fetta così importante di potenziali utenti da rendere impossibile a priori una pretesa tanto assurda.&lt;/p&gt;&#xA;&lt;p&gt;A maggior ragione Swift non ha mai preteso di essere il nuovo strumento principe per il machine learning, come il buon Ari sotto sotto ci vuole far intendere. È vero che Google ha provato a &lt;a href=&#34;https://tensorflow.org/swift&#34;&gt;supportare Swift&lt;/a&gt; all&amp;rsquo;interno di TensorFlow (di cui Google è il principale sviluppatore), ma questo esperimento, come succede con tanti altri prodotti dell&amp;rsquo;azienda di Mountain View, è stato interrotto nel 2021. È ragionevole pensare, infatti, che chi sviluppa in Swift preferisce usare gli &lt;a href=&#34;https://developer.apple.com/machine-learning&#34;&gt;strumenti per il machine learning integrati&lt;/a&gt; in macOS/iOS piuttosto che prodotti di terze parti.&lt;/p&gt;&#xA;&lt;h4 id=&#34;io-sono-più-popolare-di-te&#34;&gt;Io sono più popolare di te&lt;/h4&gt;&#xA;&lt;p&gt;Ma la cosa più sconcertante è pretendere di confrontare la popolarità (o meno) dei linguaggi di programmazione utilizzando una metrica fasulla come la percentuale di domande poste ogni mese su StackOverflow relativamente ad uno o ad un altro linguaggio. In base a questa percentuale, la &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cswift&#34;&gt;popolarità di Python&lt;/a&gt; è cresciuta costantemente fino alla fine del 2020, per poi stabilizzarsi al 16% del totale delle domande su StackOverflow, mentre &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cswift&#34;&gt;quella di Swift&lt;/a&gt; dopo aver raggiunto un massimo del 3% è in declino e ora si aggira nei dintorni dell&#39;1.5%.&lt;/p&gt;&#xA;&lt;p&gt;Perché è una metrica fasulla? Perché finché siamo sui grandi numeri e confrontiamo la &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cjavascript&#34;&gt;popolarità di Python con quella di JavaScript&lt;/a&gt; può anche avere senso basarsi sul numero di domande poste su StackOverflow per valutarne la diffusione.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/stack-overflow-python-javascript.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Ma se buttiamo nel calderone anche la terna &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cjavascript%2Cjava%2Chtml%2Ccss%2Cphp&#34;&gt;HTML, CSS e PHP&lt;/a&gt;, che sono ancora oggi tre strumenti fondamentali per chi fa sviluppo web, troviamo che questi ultimi sono in costante declino, senza però che la decadenza (su StackOverflow) di PHP venga compensata da un incremento corrispondente nell&amp;rsquo;interesse verso JavaScript.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/stack-overflow-python-javascript-html-css-php.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Anche &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=wordpress&#34;&gt;Wordpress&lt;/a&gt;, che piaccia o non piaccia sta dietro il 40% dei siti web, secondo la metrica di StackOverflow sarebbe in calo. Idem per &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=mysql&#34;&gt;MySQL&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;E allora la spiegazione può essere un&amp;rsquo;altra: più che la diffusione, le domande su StackOverflow ci fanno vedere la complessità del linguaggio e la qualità della sua documentazione: HTML, CSS e PHP (o Wordpress e MySQL) sono prodotti ben assestati, per loro esistono ottime guide sul web che ne spiegano diffusamente i segreti. Di conseguenza non è necessario cercare risposte più o meno occasionali su StackOverflow, e comunque quelle che ci sono già bastano ed avanzano.&lt;/p&gt;&#xA;&lt;p&gt;Python e JavaScript, al contrario, hanno una sintassi di base piuttosto semplice ma per essere usati al meglio hanno bisogno di un gran numero di librerie aggiuntive, che sono spesso più complesse del linguaggio base e che vengono aggiornate ed espanse di continuo. La documentazione relativa non tiene sempre il passo dello sviluppo, per cui il modo migliore per imparare ad usare al meglio le centinaia e centinaia di API disponibili è quello di rivolgersi a qualche esperto su StackOverflow, spingendo così in alto la &lt;em&gt;popolarità&lt;/em&gt; dei due linguaggi.&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;/p&gt;&#xA;&lt;p&gt;Secondo la logica basata sul numero di domande su StackOverflow anche &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=c%2Cc%2B%2B&#34;&gt;C e C++&lt;/a&gt;, i linguaggi usati per la programmazione di sistema (e non) su Linux e Windows, sarebbero in declino, e lo stesso succede a &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=algorithm%2Carchitecture%2Cclass%2Cdatabase&#34;&gt;concetti di base&lt;/a&gt; come &lt;em&gt;algoritmo&lt;/em&gt;, &lt;em&gt;architettura&lt;/em&gt;, &lt;em&gt;classe&lt;/em&gt; o &lt;em&gt;database&lt;/em&gt;. Ma  sono in declino perché c&amp;rsquo;è davvero poco interesse o solo perché anche per loro c&amp;rsquo;è abbondanza di documentazione di ottimo livello, senza doversi ridurre a porre sempre delle nuove domande su StackOverflow?&lt;/p&gt;&#xA;&lt;p style=&#34;border-style:solid; border-color:lightblue; background-color:lightyellow; padding:1em;&#34;&gt;Nel mio piccolo lo faccio anch&#39;io: quando programmo in R uso pochissimo StackOverflow, perché posso usare l&#39;ottimo help in linea di RStudio e perché la documentazione che accompagna le librerie aggiuntive di R è centralizzata sul [CRAN](https://cran.r-project.org/) (_The Comprehensive R Archive Network_) ed è di altissima qualità. E quando tutto questo non basta, posso trovare decine di siti e di blog che spiegano benissimo gli aspetti più ostici del linguaggio. Quando passo a Python (un linguaggio che, sia chiaro, mi piace parecchio), StackOverflow diventa quasi una necessità, perché la frammentazione e la mancanza di sistema di gestione centralizzata delle librerie di Python rendono molto più complicato trovare documentazione aggiornata di qualità.&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;decaduto-o-semplice&#34;&gt;Decaduto o semplice?&lt;/h4&gt;&#xA;&lt;p&gt;Swift è un linguaggio semplice con una ottima &lt;a href=&#34;https://www.swift.org/documentation/&#34;&gt;documentazione ufficiale&lt;/a&gt;, un eccellente strumento di apprendimento del linguaggio (e non solo) come &lt;a href=&#34;https://www.apple.com/it/swift/playgrounds/&#34;&gt;Swift Playgrounds&lt;/a&gt; e un numero relativemente ridotto di &lt;a href=&#34;https://codersera.com/blog/open-source-swift-libraries/&#34;&gt;librerie aggiuntive&lt;/a&gt;, c&amp;rsquo;è davvero bisogno di passare un sacco di tempo su StackOverflow per usarlo al meglio?&lt;/p&gt;&#xA;&lt;p&gt;Guardando il grafico relativo al numero di domande relative a Swift ci si accorge che i picchi di interesse corrispondono alle date di presentazione della versione 1.0 (giugno 2014) e al rilascio delle versioni 2.0 (settembre 2015), 3.0  (settembre 2016) e 5.0 (marzo 2019) e, come è naturale, dopo ogni presentazione l&amp;rsquo;interesse tende a decadere, proprio perché per usare il linguaggio c&amp;rsquo;è davvero poco da chiedere su StackOverflow.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/stack-overflow-swift.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;A supporto di questa tesi c&amp;rsquo;è il risultato di &lt;a href=&#34;https://data.stackexchange.com/stackoverflow/query/edit/1649394&#34;&gt;questa semplice query SQL&lt;/a&gt;, con la quale ho provato a calcolare il numero di domande poste su StackOverflow ogni anno. Di SQL ne so pochissimo per cui dovete prendere i risultati con le pinze, ma sembra che il numero di domande su StackOverflow sia in progressiva diminuzione, da un massimo di 2.2 milioni di domande nel 2016 a 1.6 milioni nel 2021.&lt;/p&gt;&#xA;&lt;p&gt;Una volta raggiunta una base di conoscenza sufficientemente ampia non ha molto senso porre sempre delle nuove domande (che su StackOverflow sono fortemente scoraggiate) ma ci si può limitare ad utilizzare il materiale già esistente. Questo almeno per le tecnologie più stabili, come possono essere HTML, CCS, PHP, Wordpress, MySQL&amp;hellip; oppure Swift. Quando invece abbiamo a che fare con strumenti in rapidissima evoluzione, come Python o JavaScript, StackOverflow diventa davvero il modo migliore per imparare.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;C&amp;rsquo;è bisogno di dilungarsi ancora? Non credo, dico solo che basarsi su ipotesi fantasiose o metriche poco affidabili per ipotizzare &lt;a href=&#34;https://medium.com/geekculture/swift-was-poised-to-replace-python-then-it-tanked-3e6c11740ba6&#34;&gt;scenari catastrofici&lt;/a&gt; per Swift (o, al contrario, &lt;a href=&#34;https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62&#34;&gt;scenari entusiasmanti&lt;/a&gt; per Julia&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;) mi pare francamente &lt;a href=&#34;https://xkcd.com/558/&#34;&gt;insensato&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/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/dt140323.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://dilbert.com/strip/2014-03-23&#34;&gt;Dilbert&lt;/a&gt; di Scott Adams&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Capo: Non si possono confrontare mele e arance.&lt;/p&gt;&#xA;&lt;p&gt;Dilbert: È chiaramente sbagliato, perché li hai appena confrontati e dichiarati diversi.&lt;/p&gt;&#xA;&lt;p&gt;Wally: Mele e arance sono entrambi alimenti che crescono sugli alberi. Sarebbe assolutamente valido confrontarli dal punto di vista nutrizionale.&lt;/p&gt;&#xA;&lt;p&gt;Dilbert: Ho notato che molte delle cose che escono dalla tua bocca non hanno senso.&lt;/p&gt;&#xA;&lt;p&gt;Capo: Parli come mia moglie.&lt;/p&gt;&#xA;&lt;p&gt;Wally: Non puoi paragonare tua moglie al tuo subordinato. Sono mele e arance.&lt;/p&gt;&#xA;&lt;p&gt;Capo: Cosa sta succedendo qui?&lt;/p&gt;&#xA;&lt;p&gt;Wally: Non lo so, ma non lo paragonerei a lavoro.&lt;/p&gt;&lt;/blockquote&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;Ari sembra avere le idee un po&amp;rsquo; confuse sul futuro di Python, dato che su Medium ha anche pubblicato &lt;a href=&#34;https://towardsdatascience.com/why-python-is-not-the-programming-language-of-the-future-30ddc5339b66&#34;&gt;Why Python is not the programming language of the future&lt;/a&gt;, oppure &lt;a href=&#34;https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62&#34;&gt;Bye-bye Python. Hello Julia!&lt;/a&gt; e perfino &lt;a href=&#34;https://levelup.gitconnected.com/why-tensorflow-for-python-is-dying-a-slow-death-ba4dafcb37e6&#34;&gt;Why TensorFlow for Python is dying a slow death&lt;/a&gt;.&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;E non è un caso, perché alla base di tutti questi linguaggi c&amp;rsquo;è sempre il buon vecchio &lt;a href=&#34;https://time.com/69316/basic/&#34;&gt;BASIC&lt;/a&gt;, il primo linguaggio di programmazione davvero per tutti, che è stato il linguaggio di base dei computer personali degli anni &amp;lsquo;80 su cui si sono fatti le ossa tutti i grandi nomi dell&amp;rsquo;informatica di quegli anni.&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;Le sole domande sulla libreria &lt;code&gt;pandas&lt;/code&gt; di Python (una libreria fondamentale per chi usa Python per l&amp;rsquo;analisi dei dati) &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=pandas&#34;&gt;assommano al 3%&lt;/a&gt; del totale, le principali librerie per il machine learning (TensorFlow, Keras, PyTorch, scikit-learn, OpenCV, NLTK) fanno &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=tensorflow%2Ckeras%2Cpytorch%2Cscikit-learn%2Copencv%2Cnltk&#34;&gt;un altro 2%&lt;/a&gt;, mentre quelle su &lt;code&gt;Django&lt;/code&gt; e &lt;code&gt;Flask&lt;/code&gt; (le principali librerie Python per lo sviluppo di applicazioni per il web) sono quasi &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=django%2Cflask&#34;&gt;al 2.5%&lt;/a&gt; del totale generale. Chiaramente queste domande vengono anche conteggiate come domande relative a Python.&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;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Perché sì, &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=julia&#34;&gt;l&amp;rsquo;interesse per Julia&lt;/a&gt; sembra essere in aumento su StackOverflow, ma parliamo di non più dello 0.16% (1/10 dei valori di Swift) e anche in questo caso i picchi corrispondono al rilascio delle varie versioni del linguaggio.&amp;#160;&lt;a href=&#34;#fnref:4&#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>
  </channel>
</rss>
