Autore: UMNW

  • Quale Linguaggio di Programmazione Imparare?

    Quale Linguaggio di Programmazione Imparare?

    Imparare un linguaggio di programmazione può aprire un mondo di opportunità, sia che tu stia cercando di entrare nel campo della tecnologia per la prima volta o che tu stia cercando di migliorare le tue competenze esistenti.

    Ma con così tanti linguaggi disponibili, quale dovresti imparare? In questo articolo, esploreremo alcuni dei linguaggi di programmazione più popolari e le loro applicazioni per aiutarti a prendere una decisione informata.

    Molto dipende anche da qual è la tua aspirazione; intraprendere una carriera da sistemista o devOps potrebbe farti virare su scelte completamente differenti rispetto a quelle che faresti se volessi diventare uno sviluppatore mobile o un web developer. Anche il sistema operativo nel quale dovranno essere usate le tue applicazioni cambia, ovviamente, in maniera significativa il peso specifico dei linguaggi di sviluppo.

    Questo articolo è indirizzato verso i principianti, ma offre spunto anche a quanti partono da altri settori e volessero chiarirsi le idee su altri linguaggi di programmazione.

    Andremo ad analizzare Python, Javascript, C# e Java.

    Python: Versatilità e Facilità di Uso

    Python è uno dei linguaggi di programmazione più popolari e versatili del mondo. È noto per la sua sintassi chiara e leggibile, che lo rende una scelta eccellente per i principianti.

    Applicazioni:

    • Sviluppo Web: Framework come Django e Flask.
    • Data Science: Librerie come Pandas, NumPy e scikit-learn.
    • Automazione e Scripting: Perfetto per automatizzare compiti ripetitivi.
    • Machine Learning e Intelligenza Artificiale: Supporto per librerie come TensorFlow e PyTorch.
    PROCONTRO
    Facile da imparare e usare.Non è il più veloce in termini di prestazioni.
    Grande comunità di supporto.Non è sempre la scelta migliore per lo sviluppo mobile.
    Ampia gamma di applicazioni.

    JavaScript: Il Re del Web

    JavaScript è il linguaggio di programmazione del web. È essenziale per lo sviluppo front-end e sta diventando sempre più importante anche per il back-end grazie a Node.js.

    Applicazioni:

    • Sviluppo Web: Front-end (React, Angular, Vue) e back-end (Node.js).
    • Sviluppo Mobile: Framework come React Native.
    • Sviluppo di Giochi: Motori di gioco come Phaser.
    PROCONTRO
    Essenziale per lo sviluppo web moderno.Può essere difficile da debugare a causa della sua natura asincrona.
    Grande ecosistema di librerie e framework.Problemi di sicurezza se non gestito correttamente.
    Alta domanda di sviluppatori JavaScript.Difficoltà di apprendimento perché sia back-end che client-side.

    Java: La Scelta dell’Impresa

    Java è un linguaggio di programmazione robusto e sicuro, molto popolare nelle grandi imprese e per lo sviluppo di applicazioni Android.

    Applicazioni:

    • Applicazioni Enterprise: Utilizzato da molte grandi aziende.
    • Sviluppo Android: Il linguaggio principale per lo sviluppo di app Android.
    • Sistemi Backend: Molti server e applicazioni backend sono scritti in Java.
    PROCONTRO
    Altamente scalabile.Curva di apprendimento ripida.
    Forte gestione della memoria.Più verboso di altri linguaggi.
    Alta domanda nelle grandi imprese.Necessita di strumenti più “pesanti” per essere sviluppato.

    C#: La Potenza di Microsoft

    C# è un linguaggio di programmazione sviluppato da Microsoft, ideale per lo sviluppo di applicazioni Windows e giochi con il motore Unity.

    Applicazioni:

    • Sviluppo di Applicazioni Windows: Utilizzato con il framework .NET.
    • Sviluppo di Giochi: Uno dei principali linguaggi per lo sviluppo con Unity.
    • Sviluppo Web: Utilizzato con ASP.NET per creare applicazioni web.
    PROCONTRO
    Ottima integrazione con i prodotti Microsoft.Principalmente limitato all’ecosistema Microsoft.
    Forte comunità di sviluppatori.Meno popolare al di fuori del mondo Windows.
    Ideale per lo sviluppo di giochi.

    La scelta del linguaggio di programmazione da imparare dipende dai tuoi obiettivi e interessi specifici. Se sei un principiante, Python è una scelta eccellente per la sua facilità d’uso e versatilità. Se sei interessato allo sviluppo web, JavaScript è indispensabile. Per chi mira a entrare nel mondo aziendale, Java è una scelta solida, mentre C# è ideale per chi è interessato allo sviluppo di applicazioni Windows e giochi.

    Se dovessi dare un consiglio universalmente valido io partirei da Javascript, che con NodeJS, è diventato un linguaggio di programmazione universale e molto potente.

    Qualunque cosa andrai imparare ti sarà utile, comincia subito 😀

    Ho chiesto a ChatGPT di fornirmi dei dati circa le curve di apprendimento di questi linguaggi, ma questo è un altro articolo.
    A presto.

  • Introduzione alla CI/CD con GitHub: Possibilità, Limiti e Costi

    Introduzione alla CI/CD con GitHub: Possibilità, Limiti e Costi

    Nel mondo dello sviluppo software moderno, l’efficienza e l’affidabilità sono essenziali. Una delle pratiche chiave per raggiungere questi obiettivi è l’adozione di CI/CD (Continuous Integration/Continuous Deployment). Vediamo insieme cosa significa, come funziona su GitHub e quali sono i costi e i limiti da considerare.

    1. Cosa è una CI/CD e perché è importante usarla

    Continuous Integration (CI) è la pratica di automatizzare l’integrazione del codice che sviluppatori diversi stanno scrivendo. Ogni modifica viene testata automaticamente, assicurando che nuove aggiunte non rompano il codice esistente.

    Continuous Deployment (CD), invece, automatizza il processo di rilascio delle modifiche in produzione, riducendo il tempo di consegna del software e migliorando l’affidabilità grazie a test e verifiche continue.

    Perché usarla?

    • Qualità del Codice: Identificazione rapida di bug e problemi.
    • Velocità: Riduzione dei tempi di rilascio.
    • Affidabilità: Processi ripetibili e verificati automaticamente.
    • Feedback Rapido: Feedback immediato sugli effetti delle modifiche.

    2. Come funziona la CI/CD con GitHub

    GitHub Actions è la soluzione di GitHub per implementare CI/CD. Consente di automatizzare, personalizzare e eseguire i workflow di sviluppo software direttamente nel repository GitHub. Ecco come funziona:

    • Workflow: Un insieme di comandi definiti in un file YAML che descrive cosa deve succedere quando avviene un evento specifico (es. push, pull request).
    • Action: Ogni step del workflow è rappresentato da un’azione. GitHub offre molte azioni predefinite, ma è anche possibile creare azioni personalizzate.
    • Eventi: Gli eventi che scatenano il workflow, come un push su un branch specifico o l’apertura di una pull request.

    3. Altre info di contesto (workflow, azioni con contesto ed espressioni)

    • Workflow: Scritti in YAML e memorizzati nella directory .github/workflows/ del repository. Un workflow può contenere più job che vengono eseguiti in parallelo o in sequenza.
    • Azioni con Contesto: Ogni azione può accedere al contesto delle informazioni del repository, dell’evento scatenante e altro ancora.
    • Espressioni: Utilizzate per eseguire condizioni logiche all’interno dei workflow, come ${{ github.event_name == 'push' }} per eseguire un’azione solo su eventi di push.

    4. Creare una CI/CD per un progetto: workflow per staging e produzione

    Per creare una pipeline CI/CD che esegue diversi workflow su branch differenti, segui questi passi:

    1. Creare il file YAML del workflow:
      • Crea un file chiamato .github/workflows/staging.yml per il workflow di staging.
      • Crea un file chiamato .github/workflows/production.yml per il workflow di produzione.
    2. Configurare il workflow di staging:
      Ecco un esempio di un file YAML di staging.
    name: CI/CD Staging
    
    on:
      push:
        branches:
          - staging
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
          - name: Install dependencies
            run: npm install
          - name: Run tests
            run: npm test
          - name: Deploy to staging
            run: echo "Deploying to staging server..."
    
    1. Configurare il workflow di produzione:
      Qui vediamo un esempio dello YAML di produzione
    name: CI/CD Production
    
    on:
      push:
        branches:
          - master
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
          - name: Install dependencies
            run: npm install
          - name: Run tests
            run: npm test
          - name: Deploy to production
            run: echo "Deploying to production server..."
    

    5. Costi e Limiti

    GitHub Actions è gratuito per i repository pubblici, ma ha limiti di utilizzo per i repository privati. Ecco una panoramica dei costi e dei limiti:

    • Repository Pubblici: Gratuito con limiti di runtime mensili.
    • Repository Privati: Piani gratuiti con limiti di runtime, piani a pagamento disponibili per aumentare i limiti.
    • Limiti di utilizzo: 2000 minuti di runtime gratuiti al mese per i repository privati sul piano gratuito. Oltre questo, si pagano i minuti extra.

    Implementare una CI/CD con GitHub Actions offre numerosi vantaggi in termini di qualità del codice, velocità di rilascio e affidabilità. È una pratica che, sebbene richieda un investimento iniziale in termini di tempo e risorse, ripaga ampiamente migliorando l’efficienza del team di sviluppo. Con una configurazione appropriata, è possibile automatizzare flussi di lavoro complessi e garantire rilasci sicuri e tempestivi.

  • Un divo di Hollywood ha trovato l’equazione del tutto? Terrence Howard e il fiore della vita.

    Un divo di Hollywood ha trovato l’equazione del tutto? Terrence Howard e il fiore della vita.

    Di recente ho visto l’intervento di Terrence Howard al podcast Joe Rogan Experience e sono rimasto completamente senza parole.

    Al di là di se questo ragazzone colorato sia completamente nel torto o nella ragione, quello di cui ha parlato è senz’altro affascinante e degno di attenzione, perché i modelli matematici che assieme al suo team ha prodotto, hanno spiegato la formazione del sistema solare con i suoi pianeti … senza usare la forza di gravità.

    Sebbene ci siano degli aspetti (la quasi totalità) che non ho ben compreso, approfitto di questo post per cristallizzare su carta (digitale) i miei pensieri a riguardo, perché sento che queste nuove prospettive proposte dall’attore con la passione per la fisica, siano quanto meno interessanti e degne di approfondimento.

    Prima di andare avanti, tirate giù quelle narici fiutanti flatulenze e partite dal presupposto che Howard non è un idiota. Ha attualmente depositato numerosi brevetti (per lo più open source) che sono usati dalle compagnie più grandi e potenti del pianeta (Amazon, Google, Meta eccetera), ha inventato un nuovo tipo di volo e tanto altro. Quindi vi invito a drizzare le orecchie e mettere in moto la materia grigia, perché la cosa è intrigante.

    Gli anelli e gli esagoni di Saturno spiegati senza gravità

    Giusto per farvi capire quanto le riflessioni e gli studi di Terrence siano degni di attenzione soffermiamoci un attimo sul pianeta Saturno, il gigante gassoso che con i suoi anelli è forse il più bello tra i “satellite” del nostro Sole.

    In precedenza le sonde Pioner 11, Voyager 1 e 2 avevano già effettuato un passaggio in prossimità di Saturno, tuttavia la sonda Cassini, agli inizi del 2000, è stata la prima ad addentrarsi nell’orbita di Saturno e tra i suoi anelli e ha così potuto inviare delle immagini spettacolari a noi terrestri.

    Fotografia del polo nord del pianeta Saturno, fotografata dalla sonda Cassini a ridosso del 1° luglio 2004, data in cui ha cominciato a orbitare intorno al pianeta.

    Come si può osservare in foto, il pianeta, nel suo polo Nord presenta quella che gli studiosi hanno chiamato una “tempesta”, dalla curiosa forma esagonale e che pare apparire e scomparire (addirittura) a seconda delle stagioni (compare al polo quando è estate nell’emisfero corrispondente).

    When Cassini arrived at Saturn in 2004, it was summertime in the southern hemisphere, and the spacecraft found a polar vortex at the south pole. Eventually, summertime arrived in the northern hemisphere, and they witnessed the formation of the storm at the North Pole. This has only reconfirmed what we’ve known since the 1980’s when the Voyager mission studied Saturn and found a summertime storm at Saturn’s Northern Pole.

    “While we did expect to see a vortex of some kind at Saturn’s north pole as it grew warmer, its shape is really surprising.” – Leigh Fletcher, University of Leicester, UK, lead author.

    Source: https://www.universetoday.com/139937/cassini-data-has-revealed-a-towering-hexagonal-storm-at-saturns-northern-pole/

    Per il momento nessuno, a parte il nostro Howard, è riuscito, in maniera convincente, a spiegare con un modello matematico questo fenomeno degli esagoni ai poli e degli stessi anelli di Saturno. Per di più, senza considerare nel modello la forza di gravità, la materia oscura e l’energia oscura, cosa che ha un impatto assolutamente rivoluzionario su tutto lo scibile umano.

    Lo stesso modello, a detta di Terrence Howard, è in grado di spiegare senza queste “variabili” (gravità, energia e materia oscura) tutto il comportamento osservabile del cosmo. Se fosse tutto vero: wow.

    Da dove è partito Howard?

    Howard parte da alcuni concetti principi che lo hanno motivato e ispirato, di cui probabilmente il primo in assoluto è questo: “There’s no such thing as straight line in nature”, ovvero “Non ci sono linee dritte in natura”.

    Il concetto principe “Non ci sono linee rette in natura”, non è del tutto nuovo nella storia umana. Uno di quelli che ha portato questa visione nell’architettura della città di Vienna, è stato l’architetto Friedensreich Hundertwasser, che ha creato delle interessanti strutture dal design singolare nella capitale austriaca, dove ha vissuto ed operato. (Se andate a Vienna non mancate di visitare questi strambi e affascinanti edifici.)

    Da ingegnere, so che esiste il modello matematico e il modello reale e che essi possono essere anche tanto distanti tra di loro (in termini di risultati ottenuti), inoltre la nostra esperienza di vita cosciente, suggerisce che questo concetto sia sostanzialmente vero (“non esistono linee rette in natura”).

    Ciò detto non sono qui a portare prove sul fatto che non possono esistere linee rette in natura, ma sfido qualcun altro a dimostrare il contrario. Perfino la luce delle stelle non segue linee rette nel suo propagarsi, i pianeti e le galassie sono in movimento costante e in nessun caso si muovono su linee rette. Anche il laser degli interferometri, con i quali abbiamo (o avremmo, secondo Howard) captato le onde gravitazionali, possono essere soggetti a curvatura. Inoltre come potrebbe esistere una linea retta se tutto è in movimento e lo stesso tessuto dello spazio/tempo è per sua natura deformato?

    Almeno per me, pare intuitivamente chiaro che, di linee rette in natura, non ce ne siano, cosa che possiamo osservare sia con un microscopio elettronico, sia nel cosmo.
    Tuttavia le percezioni e le intuizioni non producono, se non opportunamente formalizzate, alcun risultato scientificamente apprezzabile.

    No alle linee rette anche nella tavola periodica degli elementi

    Riprendendo gli studi di Walter Russel, che nel 1924 aveva creato una sua versione della tavola periodica degli elementi, Terrence Howard spiega che si può guardare agli elementi della tavola periodica, come qualche cosa che assume connotazioni diverse a seconda della pressione/densità a cui è sottoposta, che farebbe così manifestare una natura diversa alla stessa sostanza.

    Secondo questa visione, ad esempio, i gas nobili sarebbero manifestazioni a frequenze diverse della stessa identica materia. Sinceramente non so cosa pensare di tutto ciò, per me questa cosa può avere senso, ma senza uno studio approfondito non saprei in quale scaffale collocarla: fantascienza o hard science?

    Ciò premesso, sebbene l’intuizione non sia scienza, non dobbiamo dimenticarci che questa gioca e ha storicamente giocato un ruolo cruciale nel progresso scientifico.

    Ho trovato un’intera pagina di frasi, citazioni e aforismi sull’intuizione dalle quali traggo quella del nostro matematico crucco preferito Alberto Unapietra:

    La mente intuitiva è un regalo sacro e la mente razionale è un servitore fedele. Noi abbiamo creato una società che onora il servo e ha dimenticato il regalo.

    Albert Einstein

    Dentro il Fiore della Vita

    Howard si è detto essere un grande fan di Tesla e di altri “controversi” scienziati del passato recente e di essere guidato dall’intuizione.

    Tutto è partito, secondo quanto dichiarato dal sodale di Iron Man (Howard ha recitato in questo film della Marvel), dal fiore della vita un simbolo antichissimo e diffusissimo nel pianeta dalla preistoria.

    Questa immagine è detta “codice atlantico” e rappresenta l’interesse che Leonardo da vinci ha avuto per il fiore della vita, un simbolo antichissimo e diffuso in tutto il mondo.

    Troviamo il fiore della vita nei templi, nelle rovine e tra gli scavi archeologici letteralmente in tutto il mondo; lo abbiamo trovato in Egitto, India, Cina, Grecia, Spagna, Libano, Giappone e chi più ne ha più ne metta.

    Fiore della vita
    Il fiore della vita

    Il fiore della vita ha ispirato Howards, che ha intuito che la sua rappresentazione fosse una visione bidimensionale di una forma che invece sarebbe da interpretare come una proiezione su piano di un’oggetto in 3 dimensioni, come è possibile trovare in questo tempio di Pechino (Bejing, China) che mostro nell’immagine che segue.
    Non so precisamente da quale tempio è stata tratta questa foto, tuttavia cercando via Google Immagini (oggi si chiama Lens) esce fuori veramente di tutto!

    In questa immagine possiamo vedere il fiore della vita nella sua rappresentazione tridimensionale. Non conosco la simbologia di questo dietro questo mastino, ma di sicuro quello che sembra voler trasmettere con gli artigli piantati è forse possesso o protezione o controllo su quel globo.

    È sulla base di questo fiore della vita che Howard è stato ispirato nelle sue ricerche ed è riuscito a spiegare fenomeni naturali basandosi sull’interazione delle forze e dei relativi vortici (metto il link al podcast a fine post).

    L’importanza dell’intuizione

    Secondo quanto è dato da conoscere, Nikola Tesla avrebbe immaginato il progetto dell’alternatore elettrico, completo in ogni sua parte. Una volta materialmente realizzato, secondo la progettazione immaginata, tale apparato risultava perfettamente funzionante e finito in ogni sua parte.

    Non ho difficoltà a credere a questa cosa, perché mutatis mutandis, anche io (che non sono nemmeno la pipa di Tesla), nel mio piccolo, ho tante volte in un momento di riposo intuito una soluzione ad un problema che ho affrontato in giornata; specie per le problematiche di progettazione e sviluppo software, molto spesso (se non la totalità delle volte) la soluzione a problemi complessi mi è venuta dall’universo, come dicono i fan delle dottrine olistiche, ovvero mi è pervenuta da una serie di processi mentali involontari per i quali il mio cervello ha bussato alle porte della mia coscienza (o viceversa?) e ha detto “Ciccio, ecco la soluzione completa e funzionante del problema al quale non stavi più nemmeno pensando”.

    Io credo che questa cosa sia vera, utile e applicabile quasi sempre nella vita, ascoltare il proprio istinto, connettersi alla sorgente (ammesso che ci sia davvero come credo) rappresentano, a mio modo di vedere l’unico modo di elevarsi e trascendere. Che tu ti stia occupando di giardinaggio, di portare avanti una cucina, di costruire una strada o di educare i tuoi bambini, lasciarsi andare all’intuizione può essere a volte l’unico modo per risolvere in maniera brillante un problema complesso o apparentemente tale.

    Implicazioni sulla fisica

    Se le teorie e gli studi di Terrence Howard si dovessero rilevare corretti, prima o poi, dovremo riscrivere tutti i libri di fisica perché essi sarebbero basati su concetti sbagliati.

    L’attore/fisico non ha dubbi che questo vada fatto, sicuro come è di aver avuto successo dove Einstain ha fallito, avendo trovato l’equazione del tutto.

    Ma è così, nella nostra esperienza matematica scolastica e/o ingegneristica sappiamo che le nostre equazioni sono pieni di aggiunte di costanti, coefficienti e quant’altro necessario per far quadrare i conti.

    Questo non significa necessariamente che sono errate, ma che sicuramente rappresentano un’approssimazione della realtà perché non la descrivono mai pienamente.

    La stessa “diatriba” tra fisica quantistica e classica è la prova che i nostri modelli matematici non sono efficaci per descrivere appieno le fenomenologie osservate.
    Personalmente penso che la stessa energia oscura e materia oscura siano lì perché non quadrano i conti senza mettere a bilancio queste due variabili, che sarebbero il 95% di ciò che c’è! Il mio intuito mi suggerisce che non possa essere così.

    Mi ero già interessato in passato a ricercatori e divulgatori che vedevano l’universo mosso da frequenze, suoni e vibrazioni, piuttosto che da forze oscure e gravità. Non ho approfondito gli aspetti matematici che sottendono le visioni di Terence Howard, ma è tutto maledettamente elegante e fluido.
    Personalmente penso che i suoi studi dovranno essere seriamente analizzati e ripresi, anche se ci sono cose come 1×1=2 che davvero non so come approcciare 😀

    Giungendo a conclusioni, grazie per aver letto questo post. Fammi sapere cosa pensi del lavoro proposto da Terrence Howard e non mancare di guardare il video (in lingua inglese) del suo intervento al podcast Joe Rogan Experience.

    Terrence Howard ospite di Joe Rogan. Questo postcast ha fatto 10 milioni di visualizzazioni in un mese.