La continua evoluzione dei linguaggi di programmazione

La continua evoluzione dei linguaggi di programmazione

La figura del programmatore software da diversi anni mantiene la sua posizione tra i lavori più pagati al mondo ma è difficile che si possa guadagnare da vivere con i linguaggi appresi all’università. È, invece, molto probabile che egli debba aggiornare le proprie competenze. Secondo l’ufficio di statistica del lavoro americano (Us Bureau of Labor Statistics) la richiesta di sviluppatori web è incrementata del 20% negli ultimi 10 anni, raddoppiando l’indice di crescita di ogni altra occupazione. Vediamo dunque quali sono i linguaggi più richiesti nel 2018:

-SQL: vince a mani basse, da anni. Se il web è un database, il linguaggio più richiesto in assoluto non può che essere quello per la realizzazione di database;

-JAVA: dopo i database, sul secondo gradino del podio si posiziona IoT, ossia un’evoluzione della rete che si integra con gli oggetti, dandogli la possibilità di comunicare tra loro attraverso un’intelligenza intrinseca;

-PHYTON: linguaggio di programmazione moderno e potente ma allo stesso tempo abbastanza facile da imparare. Prende il nome dalla passione per i Monty Python del suo creatore Guido van Rossum;

-JAVASCRIPT: a differenza di Java, è utilizzato soprattutto nello sviluppo della parte esteriore di siti e pagine web. La sua popolarità continua a crescere, grazie alla semplicità e alla versatilità che ne consente l’utilizzo anche per le app;

-C++: l’erede del C, il padre di tutti i linguaggi di programmazione, mantiene alta la reputazione di una concezione geniale, sublimazione tra semplicità e potenza. Il C++ è molto utilizzato soprattutto per costruire i motori grafici dei videogiochi ma anche per servizi web. Se lo si impara bene, Python o JavaScript saranno una passeggiata;

-C# e SWIFT: chiunque decida di programmare in Windows e iOS dovrà mettere in conto di imparare rispettivamente C# e Swift perché questi due ambienti necessitano di competenze particolari;

-PHP: da una recente stima, circa l’80% dei siti Internet utilizza PHP principalmente perché è stato uno dei primi linguaggi di programmazione a diffondersi in quello specifico ambito;

-GO: è uno degli ultimi linguaggi di programmazione presentato da Google con l’intento di realizzare un modo di programmare adatto a computer e dispositivi con scarse capacità di calcolo.

Dunque l’informatica è un campo in continuo aggiornamento, l’hardware si evolve continuamente così come i linguaggi di programmazione. La figura del programmatore prevede un continuo apprendimento.  Quello che oggi il programmatore apprende potrebbe non servire più nei prossimi 10 anni, ma d'altronde il cambiamento è l’unica costante della nostra vita ed è anche un prezzo da pagare per il successo!

Pubblicato il 6 lug 2018

Tags

Potrebbero interessarti

COMMODORE 64... “I'LL BE BACK”

“I’ll be back” (Tornerò). Prendo in prestito una mitica frase di Schwarzenegger per descrivere il ritorno di un mito come il Commodore 64. Il Commodore 64 fu uno dei primi personal computer ad entrare nelle case di tutti; il segreto del successo era dovuto al prezzo contenuto e alla facilità d’installazione: tutti sanno collegare 2 cavi. Per utilizzarlo bastava accendere la tv e fare la ricerca delle frequenze, mettere una cassetta nel mangianastri, lanciare un programma o un gioco (io ricordo nostalgicamente quello dei Motocross) ed aspettare una mezz’oretta per l’avvio.           Dopo il primo fallimento di Commodore, il famoso personal computer sembrava rinato grazie alla nuova Commodore USA, azienda che nel 2012 aveva pensato di riproporre il buon vecchio C64 con un hardware di nuova generazione e puntando su Commodore OS Vision, una distribuzione basata su Linux Mint come sistema operativo preinstallato e non il buon vecchio Basic disponibile comunque nella distribuzione grazie ad un’emulatore dedicato. A quanto pare Commodore USA ha terminato la commercializzazione dei nuovi C64 nei primi mesi del 2013, il nuovo Commodore C64 basato su Linux non è riuscito a riavere il successo riscontrato negli anni 80. A riproporre ancora una volta il mitico Commodore 64 ci pensa niente meno che Amibyte, un’azienda produttrice italiana che ha deciso di riportare in vita il C64 includendo hardware di nuova generazione e offrendo agli utenti la possibilità di poter scegliere quale sistema operativo preinstallare nel personal computer. Attualmente il nuovo Commodore C64x made in Italy è disponibile nella versione Barebone con il case in stile C64 ed una configurazione che prevede un processore AMD APU A8 o A10 oppure con processori Intel Atom o ancora Core i3, i5 o i7 dotato di lettore / masterizzatore CD/DVD o Blu Ray, Card Reader ecc. I nuovi Commodore 64 prodotti da Amibyte vengono rilasciati con Commodore OS Vision oppure opzionalmente con Microsoft Windows il tutto a partire da 649 Euro fino ad arrivare ai 1299 Euro per il C64x con Intel Core i7. Alla fine è tornato!

IL RUOLO DEI COMPILATORI NELLE ARCHITETTURE RICONFIGURABILI

L'hardware riconfigurabile è di fatti una realtà in continua evoluzione e crescita. I dispositivi FPGA trovano sempre maggior impiego nelle diverse realtà tecnologiche, quali ad esempio datacenter e IoT. La riconfigurazione dell'hardware comporta diversi vantaggi in termini prestazionali. Infatti un FPGA può essere programmato in due modi diversi tali da consentire di rispettare gli stessi requisiti funzionali con performance diverse. Tra queste gioca un ruolo fondamentale il consumo di potenza, argomento ampiamente di attualità visto l'utilizzo sempre più frequente e frenetico di dispositivi mobili che necessitano di un'alimentazione tale da garantirne l'uso per almeno un'intera giornata. Tra le possibilità che un FPGA offre, in base alla sua caratteristica di riconfigurabilità, c'è quella di progettare un'architettura fortemente dinamica capace di riconfigurarsi continuamente in base al tipo di applicazione che deve essere processata. Semplificando con un esempio, si pensi alla possibilità di avere un elemento di processamento che si comporti come una GPU quando si elaborano applicazioni fortemente grafiche e come un processore in caso di elaborazioni che richiedono più logica di controllo che processamento massivo. Affinché tale architettura possa essere realizzata è necessario prevedere un meccanismo capace di collegare la parte software delle diverse applicazioni con quella hardware che è riconfigurabile. Tale strato è identificabile attraverso un compilatore che deve essere capace di tradurre nella maniera corretta ed ottimizzata le applicazioni in codice macchina, interpretabile dall'architettura sottostante che essendo riconfigurabile cambierà di volta in volta. Esistono delle toolchain di compilatori che consentono la realizzazione di questo modello. Tali toolchain prevedono sostanzialmente due componenti fondamentali che sono la parte di front-end e quella di back-end. In particolare, la prima consente la traduzione del codice sorgente in un linguaggio di rappresentazione intermedia, definito in genere dalla toolchain stessa. In questo modo è possibile ottenere la stessa rappresentazione per sorgenti provenienti da linguaggi di programmazione differenti. Ovviamente è necessario che la toolchain preveda un compilatore di front-end per ognuno dei linguaggi di programmazione sorgenti supportati. La parte di back-end invece, partendo dalla rappresentazione intermedia che viene prodotta dal componente di front-end, deve produrre del linguaggio macchina (sequenze di bit!) interpretabile dall'architettura sottostante. Dal momento che la nostra architettura è di tipo riconfigurabile è necessario implementare la parte di back-end del compilatore in maniera parametrica, ovvero capace di conoscere di volta in volta i parametri che descrivono in modo completo l'architettura per cui deve essere prodotto il codice macchina. Le piattaforme eterogenee e le architetture riconfigurabili saranno probabilmente la nuova frontiera da perseguire per ottimizzare le performance nei sistemi di elaborazione. Pertanto, in un certo senso, l'oggettiva distanza che esiste tra hardware e software potrebbe ridursi attraverso l'implementazione di piattaforme che richiedono hardware descritto via software e software tradotto in base all'hardware sottostante.

RIVOLUZIONE CLOUD

Il “cloud” ha rappresentato una rivoluzione – tuttora in corso – nel mondo di Internet, sia per le persone che per le aziende. Perchè? Semplice: grazie al cloud, le persone e le aziende possono ora accedere a programmi e servizi tramite Internet che altrimenti richiederebbero ingenti risorse per funzionare. Questo è il cosiddetto “cloud computing”: l’offerta/fruizione di applicazioni e servizi tramite internet. Queste applicazioni sono installate in potenti servers ospitati in grandi data centers e sfruttano la potenza dei servers (e reti di servers) per operazioni che non sarebbero facilmente realizzabili se non a grandi spese. E’ il “cloud computing” a permettere alle persone ed alle aziende – anche alle aziende di piccolissime dimensioni – di accedere gratuitamente e bassissimi costi a programmi e servizi in passato accessibili soltanto a grandi aziende che avevano risorse per investire in un parco hardware e software e nel personale necessario. Un’azienda che vende prodotti potrebbe ad esempio aver bisogno di un programma di gestione delle vendite (come SalesForce) o di CRM (come Sage). Prima del cloud un’azienda avrebbe dovuto acquistare la costosa licenza per l’utilizzo del software, e poi mettere in piedi un team di esperti hardware e software per installare, configurare, testare, eseguire, proteggere, aggiornare il programma una volta acquistato. Ovviamente, piccole e medie aziende non avevano le risorse per poterlo fare o per farlo per tutti i programmi di cui avevano bisogno. Oggi invece, grazie al “cloud computing”, le aziende interessate a specifici servizi semplicemente affittano il servizio via cloud o pagano a consumo, sempre comunque accedendo tramite il cloud al servizio. Il programma che permette la fruizione del servizio ed i dati contenuti in esso sono accessibili via Internet all’azienda, ed eventualmente ai suoi utenti o clienti. I vantaggi del cloud per le aziende sono numerosi. Il fornitore del servizio cloud, chiamato “hosting service provider“, gestisce tutto ciò che riguarda hardware e software al posto dell’azienda. L’azienda accede al servizio e ai suoi dati via Internet, e si può così focalizzare soltanto sul proprio business, dimenticandosi di tutto il lato tecnico. Non si deve preoccupare più ad esempio di installare o aggiornare il programma. Inoltre, l’azienda può pagare solo le funzionalità necessarie: se non serve avere una specifica funzionalità, il costo del servizio è più basso. Gli aggiornamenti sono automatici, la scalabilità verso l’alto o verso il basso è semplice, e i dati sono duplicati in più data centers. Anche in caso di guasti tecnici o attacchi di hackers ai servers di un data center, l’hosting provider può recuperare e duplicare nuovamente i tuoi dati dai servers negli altri data centers. Ovviamente, questi vantaggi valgono anche per gli utenti privati. Quando ti affidi ad esempio ad un servizio cloud per archiviare i tuoi dati, non ti devi preoccupare della possibile perdita dei dati: sai che vengono duplicati più volte in più sedi geografiche diverse. E per molte delle tue attività quotidiane che svolgi tramite computer, ad oggi non sei obbligato a comprare un programma, ad installarlo, ad aggiornarlo, ad avere un computer potente per poterlo usare o un computer capiente per conservare tutti i dati che man mano accumuli nel tempo. E’ per questo che numerosissime attività oggi sono possibili per tutti, mentre in passato erano possibili solo a fronte di grandi spese e del possesso di computer potenti. E la tendenza è questa: sempre più il tuo computer si svuoterà di programmi e funzionerà invece solo come interfaccia per l’accesso a servizi cloud. E sempre più i tuoi dati, la tua musica, i tuoi video, i tuoi documenti saranno depositati in servers accessibili via cloud invece che nel computer di casa o in chiavette usb o in hard disk esterni. E non pensare che il cloud sia utile solo per dati di questo tipo. Ci sono infinite possibili utili applicazioni del cloud in situazioni di vita reali. Pensa invece ad esempio alla possibilità per un dottore, in caso di emergenza medica, di accedere alla tua cartella sanitaria via cloud per capire se sei allergico o meno a certi farmaci o effettuare una diagnosi migliore (sistemi nazionali di Electronic Health Records sono già disponibili in numerosi stati). Le grandi aziende di Internet sono state tra le prime a cavalcare la rivoluzione del cloud. Google si è lanciato nel cloud computing con numerosi servizi come Gmail e Google Docs. Anche lo sviluppo di Android è fortemente orientato al cloud, permettendoti di accedere alla posta elettronica, ai tuoi documenti direttamente dal dispositivo (smartphone o Tablet) su cui è installato. Google ha anche investito pesantemente in computers come Chromebook, che si appoggiano al cloud per quasi ogni possibile attività che tu voglia fare o di cui il computer ha bisogno per la manutenzione, l’aggiornamento e la sicurezza. Microsoft ha sviluppato la piattaforma Azure, puntando principalmente sui servizi per le piccole e medie imprese, e sta anche modificando la propria offerta software spingendo verso il cloud. L’ultima versione di Office 365 si appoggia al cloud per salvare i tuoi file direttamente nel cloud e renderli sempre disponibili dovunque, tramite connessione Internet. Anche Apple è stata tra i pionieri del cloud: non a caso iTunes, che sfrutta il cloud per salvare i tuoi file e gusti musicali, è la piattaforma leader nel mercato della musica digitale. Il cloud può essere usato per il backup dei tuoi dati, per l’archiviazione (il cosiddetto cloud storage), per la condivisione dei tuoi file con i tuoi contatti, per la collaborazione online su documenti, e per la gestione delle tue foto e dei tuoi file audio e video.