Linguaggi di Programmazione: La top 10 Tiobe di fine anno.

Linguaggi di Programmazione: La top 10 Tiobe di fine anno.

Siamo giunti ormai alla fine di questo 2017, e per concludere l’anno lanciando uno sguardo alla programmazione, vi proponiamo l’indice Tiobe relativo ai linguaggi di programmazione.

Quello di Tiobe, è un indicatore riguardante la popolarità dei linguaggi di programmazione, la classifica è compilata grazie ai dati ricavati dai tre motori di ricerca Google, MSN e Yahoo! valutando la disponibilità mondiale di esperti programmatori, corsi a tema e a richiesta.

L’indice completo comprenderebbe richieste relative ai primi 50 linguaggi (nella tabella sono riportati solo i primi 20). Anche questa volta ci occuperemo di analizzare nel dettaglio solamente quei linguaggi che occupano la Top Ten della classifica.

Dando un primo sguardo alla classifica, rispetto all’inizio dell’anno, si può notare come tengano ben strette le loro posizioni linguaggi come Java, ancora al primo posto, C, sempre stabile al secondo e C++ anche lui sempre stabile al terzo posto. Un leggero cambio lo vediamo tra Python e C# che occupavano nei primi mesi del 2017, rispettivamente la quinta e la quarta posizione e che ora si sono scambiati le posizioni.

Cala, inoltre, l’interesse per Visual Basic .NET e PHP, quest’ultimo scende addirittura di due posizioni, mentre Javascript ne guadagna altrettante; Delphi e Swift escono dalla Top Ten, al loro posto si vedono comparire R e MATLAB.

Prima di passare ad esporre i linguaggi che occupano i primi dieci posti, vorrei spendere una nota particolare per Objective-C che dal 16° posto è salito fino ad arrivare all’11°, segno questo che il vecchio linguaggio di casa Apple sta riscuotendo maggior interesse rispetto a Swift. Lo vedremo approdare in Top Ten? Vedremo cosa ci diranno i primi mesi del 2018.

E adesso, senza dilungarci ulteriormente, andiamo ad analizzare i Top Languages:

Java:

Cos’è: Java è un linguaggio di programmazione il cui sviluppo comincia agli inizi degli anni ‘90. Nonostante il linguaggio sia open source, per cui chiunque può utilizzarlo liberamente, è attualmente di proprietà e gestito da Oracle Corporation. Java è stato progettato per essere un linguaggio che possa funzionare su qualsiasi dispositivo, e di conseguenza si presta allo sviluppo non solo di software per PC, ma anche di App per Smartphone, Tablet e persino TV intelligenti.

Buone ragioni per impararlo e usarlo: Java è uno dei linguaggi maggiormente in-demand. Aziende di qualsiasi dimensione utilizzano applicazioni scritte in Java. Se avete un’idea per un software innovativo per il business o per App innovative per Android, Java è probabilmente la scelta migliore per svilupparlo. Molte delle applicazioni più popolari Android come Angry Birds, Temple Run e Candy Crush Saga sono state scritte in Java. Lo stesso vale per la maggior parte dei software proprietari che compagnie aeree, agenzie governative e aziende Fortune 500 utilizzano ogni giorno.

 

C:

Cos’è: Molte persone nella comunità dei programmatori considerano C il nonno di tutti i moderni linguaggi di programmazione. Questo fondamentalmente per due motivi:

1) Il linguaggio C è stato sviluppato nel 1970, quando ancora alcuni computer erano le dimensioni intere stanze.

2) Molti linguaggi moderni come Java, C++ e Python sono stati direttamente influenzati da C.

Nonostante la sua età C resta però ancora molto utilizzato, e probabilmente rimarrà tale per molti anni a venire, anche perché C implementa una procedura che mira ad utilizzare meno memoria possibile.

Buone ragioni per impararlo e usarlo: la maggior parte dei buoni programmatori conoscono più di un linguaggio. Se avete intenzione di impararne più di uno C potrebbe essere una buona scelta. Alcuni corsi di sviluppo C hanno un metodo di insegnamento che può apparire ostico per alcuni, tuttavia, questo non dovrebbe essere preso come deterrente perché, dopo che avrete appreso C, imparare linguaggi più moderni come Objective-C, C++, PHP e molti altri vi risulterà molto più facile.

Come probabilmente avrete capito, C è un linguaggio piuttosto potente e, proprio grazie alla sua potenza, risulta essere il linguaggio perfetto quando è necessario avere un controllo assoluto sul software. Questo è il motivo per cui è la spina dorsale di molti dei sistemi operativi più diffusi oggi, quali Windows, OSX e Linux. Quasi tutti i dispositivi informatici sono scritti interamente o in parte in C. Microonde, calcolatori elettronici, banche dati, controlli di navette spaziali, hanno probabilmente una componete C.

 

C++:

Cos’è: A tutti gli effetti C++ è C con più funzioni. Mentre entrambe queste tecnologie sono considerate lingue di uso generale, C è di solito utilizzato per il software ” close to the machine” come i sistemi operativi, mentre C++ è di solito utilizzato per le applicazioni di alto livello come software di contabilità o come motore per videogiochi.

Buone ragioni per impararlo e usarlo: C++ è spesso la prima scelta per sviluppare grandi progetti software come browser web, driver grafici per computer e algoritmi di negoziazione finanziaria. Questo linguaggio sfrutta la metodologia della Programmazione Orientata a Oggetti (OOP) che C non supporta facilmente. Per questo motivo C++ risulta essere più appropriato per svolgere quelle attività dove C risulterebbe eccessivamente difficile o troppo dispendioso da utilizzare in termini di tempistica.

I motori di molti degli più popolari videogames, come Call of Duty, Halo, e Fifa sono stati scritti in C++. Anche i grandi studi di animazione come Pixar, Disney e DreamWorks usano C++ per lo sviluppo di funzioni particolari dei loro software di animazione. Grazie alla sua robustezza e alla sua velocità, C++ è usato anche per scrivere algoritmi di negoziazione ad alta frequenza che consentono alle imprese di Wall Street di scambiare migliaia di azioni in frazioni di secondo.

 

Python:

Cos’è: Python è un linguaggio general purpose che vede la sua origine nel 1991. Questo linguaggio è stato progettato per essere altamente leggibile, il che lo rende molto facile per i principianti. E’ un linguaggio dall’alto potenziale attraverso il quale si può spaziare dalla creazione di software scientifico, allo sviluppo web fino al rendering 3D.

Buone ragioni per impararlo e usarlo: A differenza dei linguaggi di livello più basso come C o Java, Python può essere appreso ad un ritmo relativamente veloce. Questo rende Python un linguaggio estremamente friendly per i neofiti alla programmazione.

Applicazioni come Instagram, Dropbox, YouTube e Reddit sono tutti esempi di ciò che si potrebbe essere in grado di realizzare con una buona conoscenza di Python.

 

C#:

Cos’è: C# è un linguaggio di programmazione sviluppato fin dai primi anni del 2000. Facente parte della famiglia .NET, agli inizi fu destinato ad essere unicamente utilizzato per lo sviluppo di prodotti Microsoft. Oggi C# viene utilizzato per sviluppare non solo applicazioni Windows standard, ma anche web applications lato server o come motore nello sviluppo di videogiochi.

Buone ragioni per impararlo e usarlo: Se siete interessati a sviluppare applicazioni specifiche per Windows o allo sviluppo di web applications che verranno eseguite su server Windows, C# è una buona scelta. Anche se attualmente non è così popolare come PHP o Java, la sua popolarità è in continuo aumento.

C# è stato progettato da Microsoft per venire eseguito senza problemi sui loro server, web applications come Bing e MSN sono costruiti con codice C# così come lo sono la maggior parte delle applicazioni sviluppate per Windows Phone.

Javascript:

Cos’è: Coloro che si avvicinano per la prima volta alla programmazione spesso non sanno che c’è una differenza tra Java e JavaScript. Questo linguaggio era originariamente chiamato ECMAScript, tuttavia a causa della popolarità di Java, i creatori cambiarono il nome per attirare più persone. A parte il nome, questi linguaggi hanno ben poco in comune.

Buone ragioni per impararlo e usarlo: Se siete interessati a diventare front-end web design dovreste imparare JavaScript, perché viene utilizzato per aggiungere interattività alle pagine web. Prive del suo utilizzo, le pagine possono risultare piuttosto blande, mentre l’utilizzo di JavaScript sui siti consente la creazione di animazioni e un migliore controllo dell’interfaccia web. Anche se viene utilizzato principalmente per lo sviluppo front-end, framework come Node.js permettono ai programmatori di scrivere anche software di back-end. JavaScript è utilizzato dall’88% di tutti i siti web. Se consideriamo la vastità del web, vi potete renderete conto che 88% è un’altissima percentuale. Effetti speciali al passaggio del mouse, menu a discesa, e altre animazioni nella pagina sono alcuni esempi dell’utilizzo di JavaScript.

 

Visual Basic.Net:

Cos’è: Visual Basic .NET (VB.NET) è un linguaggio di programmazione orientato agli oggetti multi-paradigma,implementato su Framework .NET. Microsoft ha lanciato VB.NET nel 2002 come successore del noto Visual Basic. Insieme con C#, è uno dei due principali linguaggi rivolti al framework .NET.

Buone ragioni per impararlo e usarlo: Visual Basic presenta un’alta facilità d’uso, non utilizza la formalità di punteggiatura tipica di quasi tutti gli altri linguaggi e il suo ambiente di lavoro RAD permette di realizzare in breve tempo interfacce GUI anche complesse; inoltre è pratico nella creazione di accessi alle basi dati e nella creazione di controlli ActiveX.

Oltre tre milioni di programmatori utilizzano Visual Basic, e molti di loro lo hanno imparato come primo linguaggio.

 

R:

R è, oltre ad un linguaggio di programmazione, anche un ambiente di sviluppo specifico per l’analisi statistica dei dati. È un software libero, distribuito con la licenza GNU GPL, disponibile per diversi sistemi operativi come Unix, Linux, Mac, Windows.

È un linguaggio object oriented e deve la sua popolarità ad un’ampia disponibilità di moduli distribuiti con licenza GPL (General Public License, software libero) che possiamo reperire con facilità (data anche la loro organizzazione) sul sito CRAN – The Comprehensive R Archive Network (https://cran.r-project.org).

Questi moduli servono sostanzialmente per espandere le capacità del programma, oltre alle molte funzioni statistiche aggiuntive, esistono moduli che permettono la comunicazione con database (sia con driver specifici che tramite connessioni ODBC) o con sistemi GIS (Geographic Information System – Sistema informativo territoriale).

R viene fornito principalmente con un’interfaccia a riga di comando, ma per chi lo volesse sono disponibili diverse interfacce grafiche tra cui RStudio, (https://www.rstudio.com), l’ide grafico più comunemente usato oppure R Tools per Visual Studio.

 

PHP:

Cos’è: PHP è un altro discendente di C poiché è stato sviluppato utilizzando il linguaggio C e come conseguenza ne ha ereditato alcune potenzialità. PHP è stato progettato per rendere possibile la creazione di web applications come Facebook.

Buone ragioni per impararlo e usarlo: Se avete un’idea per un nuovo sito web, un linguaggio come PHP risulta molto pratico. PHP è il linguaggio ideale per le persone che vogliono andare da nessuna esperienza allo sviluppo di applicazioni web in un breve lasso di tempo. PHP è utilizzato su oltre duecento milioni di siti web il che dimostra come sia veramente popolare questo linguaggio. Viene anche utilizzato su alcuni dei siti più visitati al mondo come Yahoo o da CMS come WordPress e Magento.

 

MATLAB:

Abbreviazione di “MATrix LABoratory“, MATLAB fu creato alla fine degli anni settanta da Cleve Moler, il presidente del dipartimento di scienze informatiche dell’Università del Nuovo Messico; è un ambiente per il calcolo numerico e l’analisi statistica scritto in C. Grazie a MATLAB è possibile manipolare matrici, visualizzare funzioni e dati, implementare algoritmi, creare interfacce utente, e interfacciarsi con altri programmi.

MATLAB può chiamare funzioni e subroutine scritte nei linguaggi di programmazione C o Fortran. Dal 2014 è stato aggiunto l’aumento dell’interfaccia bidirezionale con Python. Inoltre librerie scritte in linguaggi come Perl, Java, ActiveX o .NET possono essere chiamate direttamente da MATLAB, e molte librerie MATLAB (ad esempio supporto XML o SQL) sono implementate come wrapper attorno alle librerie Java o ActiveX.

MATLAB è usato da milioni di persone nell’industria e nelle università per via dei suoi numerosi strumenti a supporto dei più disparati campi di studio applicati e funziona su diversi sistemi operativi, tra cui Windows, MacOS, Linux e Unix.

 

E con questo la nostra esposizione si chiude, ci aggiorniamo nel 2018 con le novità sull’indice Tiobe.

miniBloq

miniBloq

miniBloq è un linguaggio di programmazione visuale open source in fase di sviluppo per Multiplo ™, Arduino ™ e dispositivi fisici di calcolo e robot. Minibloq nasce nel 1997 quando lo sviluppatore Juliàn da Silva Gillig pubblica Minibloques, una versione gratuita ma non aperta, utilizzata nelle scuole elementari e medie in Argentina.

Tra maggio e giugno del 2011, miniBloq partecipa ad una raccolta fondi su KickStarter  con il progetto chiamato “Minibloq: graphical programming environment for Arduino” raggiungendo e oltrepassando di molto il traguardo di 4.300$.

Non ho compreso a quale versione del programma fossero quando hanno lanciato la raccolta fondi, fatto è che gli obiettivi proposti erano molti e le persone gli hanno effettivamente dato fiducia. Ad oggi però, ancora non esiste la versione 1.0 e molti degli obiettivi proposti (tra i quali il miglioramento della GUI) non sono stati ancora raggiunti.

La versione 0.83 attualmente disponibile, che ho personalmente testato, presenta un ambiente a mio parere stabile ma molto scomodo e poco intuitivo. La scelta delle icone che rappresentano i “blocchi” sono poco comprensibili e la loro dimensione, quando vengono inseriti nell’area di sviluppo, risulta a mio parere inappropriata alla programmazione. Con il comando Mouse wheel + Ctrl: Zoom in / Zoom out, è possibile  ingrandire e rimpicciolire i blocchi presenti nell’area di sviluppo ma non sembra risolvere il problema, solo cambia la loro dimensione e questa pratica di rimpicciolire i blocchi può solo aiutare la navigazione del codice ma non la sua comprensione.

Un’altro problema è la rappresentazione delle strutture di controllo, in quanto l’unica via per riconoscere dove inizia e finisce una struttura è osservando la posizione dei blocchi e quindi la loro indentazione. Però l’indentazione è una soluzione di leggibilità tipica dei linguaggi puramente testuali, dove si cerca in tutti i modi di migliorare la leggibilità del testo anche attraverso colori e dimensioni. Nel caso di Scratch e Snap!, l’indentazione viene usata in modo marginale, in quanto il codice contenuto all’interno di una struttura di controllo viene letteralmente avvolto dalla stessa. Questo approccio permette di avere la percezione che il codice è effettivamente contenuto ed eseguito al suo interno e, se il fine è quello di educare i giovani alla programmazione, credo sia indispensabile alleggerire la lettura e la comprensione del codice.

Anche se vi sono molti altri problemi legati all’ambiente di sviluppo, credo non sia necessario sottolinearli in quanto stiamo parlando di una versione in corso d’opera che spero di vedere un giorno conclusa.

Parlando invece degli aspetti positivi su cui investirei, ho trovato molto utile l’accesso agli esempi suddivisi secondo l’hardware utilizzato, mi piace che si possa fare un confronto diretto tra il codice sviluppato graficamente ed il codice in formato testuale e trovo importante avere una lista ragguardevole di possibili piattaforme hardware da poter utilizzare.

Hardware supportato:

  • AERobot v1.0
  • Arduino Leonardo
  • Arduino Mega 2560 o Mega ADK
  • Arduino Uno
  • DuinoBot Kids v1.x.HID
  • DuinoBot v1.x -> 2.3 HID
  • DuinoBot c2.3.CDC
  • miniSim v0.2
  • Pi-Bot v1.0
  • RedBoard
  • RedBot v1.0
  • Seeeduino 328/Arduino Duemilanove
  • Seeeduino Mega 1280 / Arduino Mega
  • Sparki v1.0
  • Ta-Bot v1.0

In casa, l’unico Hardware ora a mia disposizione per testare le funzionalità di miniBloq, è una scheda Arduino Uno, delle resistenze e tanti LED. La mia iniziale intenzione era quella di poter scrivere un programma per costruire un orologio binario. Dopo però essermi reso conto che l’unico tipo di variabile disponibile è di tipo float, che le uniche strutture di controllo sono if/else, while e for, che non si può lavorare con gli array, che non vi è il modulo per calcolare il resto e che l’unico modo per poter inserire nel codice questi elementi era quello di scriverli a mano, decisi di desistere con il mio progetto e di testare alcuni esempi tra i quali quello che vedete nell’animazione che si chiama 310.FiveLEDs.

In conclusione, credo che attualmente miniBloq sia ad un ottimo punto di partenza per la creazione di un IDE che possa un giorno raggiungere i livelli di altri ambienti di sviluppo come Snap!, ma penso che per ora sia più utile come banco test dove poter improvvisare alcune semplici automazioni.

 

Link:

LabVIEW

LabVIEW

Tra tutti i Linguaggi di Programmazione Visuali esistenti ed esistiti (sono oltre 100), LabVIEW è forse l’unico che si sia distaccato e che sia entrato nella top 50 dell’indice di popolarità dei linguaggi di programmazione TIOBE. LabVIEW nasce nel 1983 dalla necessità della National Instruments di testare i suoi prodotti Hardware ed oggi, con l’uscita della sua ultima versione LabVIEW 2017, puó essere definito un linguaggio universale in quanto è in grado di integrarsi, oltre che agli strumenti di proprietà della National Instruments, anche ad una vasta quantità di prodotti di terze parti. Inoltre possiede strumenti di progettazione di terze parti tra cui (solo per citarne alcuni) il software MATLAB, SolidWorks, Simulink ed anche strumenti per la compilazione di schede di tipo Arduino e Raspberry. Fornisce funzioni e driver per la connessione a reti e protocolli industriali, e possiede molti strumenti grafici per la creazioni di interfacce grafiche di tipo industriale e non.

Aree di Impiego e alcuni approfondimenti del linguaggio:

Le aree di impiego di LabVIEW sono molteplici grazie alla vasta libreria di funzioni e driver per la gestione e la comunicazione con la quasi totalitá dell’hardware esistente, per questo motivo puó essere facilmente integrato in qualsiasi ambiente professionale. Inoltre, grazie alla programmazione grafica, é in grado di accellerare i tempi di programmazione, semplificando l’integrazione hardware e permettendo quindi di acquisire e visualizzare rapidamente i dati da ogni tipo di dispositivo I/O.

Esempi aree di impiego:

  • Sistemi di controllo e monitoraggio embedded
  • Monitoraggio e controllo industriale
  • Monitoraggio condizioni macchina
  • Sviluppo di sistemi di test di produzione
  • Sistemi di misura con sensori e attuatori
  • Progettazione di sistemi di comunicazione wireless
  • Robotica e veicoli autonomi
  • Progettazione di applicativi ad interfaccia utente
  • Analisi ed elaborazione dati
  • Analisi ed elaborazione del segnale

Inoltre tra i suoi moduli di ampliamento vi sono:

  • Vision Development Module – Pensato per lo sviluppo di applicazioni di visione artificiale. Dispone delle funzioni per l’acquisizione, l’analisi e l’elaborazione di immagini. Viene usato spesso nel settore industriale per rilevare la presenza di oggetti, identificare le caratteristiche e per misurare parti e sezioni.
  • LabVIEW FPGA Module – Permette di lavorare con la tecnologia FPGA senza necessitare di profonde conoscenze di progettazione digitale hardware in quanto possiede gli strumenti per definire sistemi complessi in modo rapido, con l’aiuto di simulatori e funzioni di debug.
  • LabVIEW NI SoftMotion Module – Dispone di un ambiente di sviluppo grafico per la creazione di applicazioni in grado di gestire le impostazioni di movimentazione assi, di effettuare i test per la configurazione e regolare i motori per la loro integrazione.

 

Come funziona:

LabVIEW viene definito dai suoi creatori come linguaggio G (grafico) ed al contrario di quanto si possa pensare, pur non avendo una fase esplicita di compilazione, LabVIEW é un linguaggio compilato. In fase di sviluppo, il programmatore può modificare il codice e subito poi eseguirlo semplicemente cliccando sul “Run button” il quale eseguirà all’istante l’intero progetto senza dover attendere per la compilazione dello stesso.

Senza entrare molto nel dettaglio, di seguito verranno introdotti alcuni degli aspetti importanti che rendono il compilatore di LabVIEW altamente performante:

  • Algoritmo di propagazione dei tipi di dato – Gestisce il controllo dei tipi di dato e della loro “sintassi” identificando eventuali errori.
  • Clumping – Identificazione del parallelismo nei diagrammi raggrupandoli in nodi chiamati “clump” i quali vengono poi eseguiti in parallelo.
  • Inplacer – Algoritmo che riduce notevolmente le prestazioni di esecuzione, é in grado di allocare i dati che poi verranno riutilizzati durante l’esecuzione evitando inutili copie.
  • Linker – I Linker disegnano una mappa delle varie dipendenze che esistono tra i VI (Virtual Instruments) per poi poterli ricompilare.
  • GenAPI – Algoritmo per l’allocazione dei registri.
  • Data Flow Intermediate Representation (DFIR) – Tra le sue varie funzioni possiede gli algoritmi per l’eliminazione del codice morto o irragiungibile, il folding delle costanti e lo spostamento del codice loop-invariante.
  • LLVM – Dal 2010 LabVIEW ha implementato il framework compilatore open source LLVM – Low Level Virtual Machine utilizzato per la creazione di istruzioni macchina eseguibili in memoria.

Community:

Come ogni altro affermato linguaggio di programmazione, anche LabVIEW dispone di una community di utilizzatori che partecipano attivamente. Esistono molti forum sia ufficiali che non, dove poter aprire discussione e reperire materiale utile alla programmazione.