Geek Academy

Data Science: quali sono i linguaggi da conoscere?

Quando si tratta di linguaggi di programmazione, un aspirante data scientist dovrebbe prendere in considerazione l'idea di impararne più di uno. Ma quali?

Data Science: quali sono i linguaggi da conoscere?

Condividi su:

Abbiamo parlato in un precedente articolo delle caratteristiche che un bravo data scientist deve possedere per eccellere nel suo campo. Quando, invece, si tratta di competenze tecniche, quali sono quelle più necessarie? Scopriamolo insieme.

Lavorare nel campo delle Data Science è stimolante, data la necessità di combinare conoscenze avanzate di statistica con la capacità di programmare. Quando si tratta di linguaggi di programmazione, un aspirante data scientist dovrebbe prendere in considerazione l'idea di impararne più di uno. Sebbene non esista una risposta assoluta su quali effettivamente siano quelli utili da conoscere, ci sono degli aspetti da tenere in considerazione. 

Data science e linguaggi: aspetti da tenere in considerazione

Specificità

Nelle data science si va avanti solo se si è in grado di reinventarsi di continuo. È importante imparare ad utilizzare al meglio i pacchetti e i moduli che il linguaggio scelto offre. Fino a che punto ciò sia possibile dipende anzitutto da quanti pacchetti specifici per un dominio sono effettivamente disponibili.

Genericità

I migliori data scientist possiedono sia abilità di programmazione a tutto tondo che la capacità di fare calcoli. Gran parte del lavoro quotidiano nelle data science è approvvigionamento e processamento di dati grezzi, o pulizia dei dati. Per fare ciò, non c'è alcun pacchetto magico di machine learning che possa aiutare.

Produttività

Nel rapido mondo delle data science commerciali, si potrebbe parlare a lungo di come velocizzare il lavoro. Comunque, è qui che entra in gioco il debito tecnico e l'importanza della sua minimizzazione.

Performance

In taluni casi è fondamentale ottimizzare le performance del codice, in particolare quando si ha a che fare con corpose quantità di dati indispensabili per la crescita dell'azienda. I linguaggi compilati sono solitamente molto più veloci di quelli interpretati; allo stesso modo i linguaggi statici sono notevolmente più precisi rispetto a quelli dinamici. Certo, il rovescio della medaglia è un sensibile calo di produttività.
In un certo qual modo, si potrebbe immaginare un sistema a due assi (genericità/specificità – performance/produttività) dove ogni linguaggio cade in un qualche punto all'interno di questo spettro.

I linguaggi più diffusi nelle Data Science

Tenendo queste nozioni a mente, andiamo a dare un'occhiata ad alcuni dei linguaggi più popolari utilizzati nelle data science. Ecco la top list dei linguaggi più diffusi, in ordine di popolarità.

R

Cosa sapere
Rilasciato nel 1995 come diretto discendente del più vecchio S, R è un linguaggio di programmazione che sin da allora è diventato sempre più forte. Scritto in C, Fortran e lo stesso R, il progetto è attualmente supportato dalla R Foundation for Statistical Computing.
Licenza
Gratuita
Pro
Eccellente gamma di pacchetti open-source e domain specific di alta qualità. Con R c'è un pacchetto per quasi ogni applicazione quantitativa o statistica immaginabile. Questo include anche reti neurali, regressioni non lineari, filogenetica, plotting avanzato e molte, molte altre. L'installazione base è corredata di funzioni e metodi statistici intrinseci molto completi. R è inoltre in grado di gestire particolarmente bene le matrici algebriche.
La data visualization è un punto di forza fondamentale, insieme all'utilizzo di librerie quali ggplot2.
Contro
Performance. Non c'è niente da fare. R è lento.
Specificità di dominio. R è fantastico per la statistica e le data science. Un po' meno per la programmazione generica.
Stranezze. Ci sono alcune peculiarità di R che potrebbero risultare insolite ai programmatori esperti di altri linguaggi. Qualche esempio: indicizzazione a partire da 1, utilizzo di operatori con assegnazione multipla, strutture dati poco convenzionali.
Giudizio finale: eccellente nel campo per il quale è stato creato
R è un linguaggio potente che eccelle in un'enorme varietà di applicazioni statistiche e di data visualization, e il fatto che sia open source lascia spazio di azione ad una comunità di contributor molto attiva. La recente crescita in popolarità è un'ulteriore conferma di quanto sia efficace.

PYTHON

Cosa sapere
Guido van Rossum introdusse Python nel 1991. Da allora è diventato un linguaggio di uso generico estremamente popolare, ed è largamente utilizzato nella comunità delle data science. Le versioni principali sono attualmente la 3.6 e la 2.7.
Licenza
Gratuita
Pro
Python è un linguaggio di programmazione di utilizzo generico molto diffuso. Ha una vasta gamma di moduli appositi e sostegno comunitario. Molti servizi online forniscono API Python.
Facile da apprendere. La barriera di ingresso molto bassa ne fa il linguaggio ideale per i neofiti della programmazione.
Pacchetti come Panda, Scikit e Tensorflow rendono Python una solida opzione per le applicazioni di machine learning avanzato.
Contro
Sicurezza. Python è un linguaggio dinamico, il che vuol dire che bisogna fare la dovuta attenzione. Errori di battitura (come ad esempio passare una stringa come argomento ad un metodo che si aspetta un intero) sono da tenere d'occhio.
Per scopi statistici e di data analysis, la vasta gamma di pacchetti di R rende quest'ultimo leggermente preferibile. Come linguaggio di programmazione generico, inoltre, esistono alternative molto più veloci e sicure di Python.
Giudizio finale: un eccellente tuttofare
Python è un'ottima scelta per le data science, non solo al livello base. Gran parte del processo delle data science ruota intorno alla lavorazione ETL (extration-transformation-loading). Per questo motivo, la genericità di Python lo rende il linguaggio ideale. Grazie a librerie quali Tensorflow, Python è un linguaggio stimolante per il machine learning.

SQL

Cosa sapere
SQL (Structured Query Language) definisce, gestisce e interroga i database. Il linguaggio comparve verso il 1974 e da allora ha visto numerose implementazioni, ma i principi di base sono rimasti gli stessi.
Licenza
Dipende. Alcune implementazioni sono gratuite, altre proprietarie.
Pro
Molto efficiente quando si tratta di interrogazione, aggiornamento e manipolazione dei database relazionali.
Chiarezza. La sintassi dichiarativa di SQL ne fa un linguaggio facile da leggere. Una riga come SELECT name FROM users WHERE age > 18 non lascia certo spazio al dubbio su quale sia il comando inserito!
SQL è molto utilizzato in una vasta gamma di applicazioni, il che lo rende un linguaggio veramente utile da conoscere. Grazie a moduli come SQL Alchemy, è facilmente integrabile con altri linguaggi.
Contro
Le capacità di analisi di SQL sono alquanto limitate: a parte aggregazione, somma, conteggio e media dei dati, non ci sono molte opzioni.
Per i developer con un background di programmazione imperativa, la sintassi dichiarativa di SQL può renderne complesso l'apprendimento.
Le molte implementazioni di SQL, come ad esempio PostgreSQL, SQLite, MariaDB, sono tutte diverse tra loro, il che rende l'inter-operatività un vero problema.
Giudizio finale: efficiente ed intramontabile
SQL è più utile come linguaggio di processamento dati che come strumento di analisi avanzata. Tuttavia, gran parte del processo delle data science si appoggia su ETL, e la longevità e l'efficienza di SQL provano quanto questo sia utile ai moderni data scientist.

JAVA

Cosa sapere
Java è un linguaggio di uso generico estremamente popolare che gira su JVM (Java Virtual Machine). È un sistema di computazione astratto che permette la portabilità efficace tra piattaforme. È attualmente supportato dalla Oracle Corporation.
Licenza
Versione 8: gratuita.
Versioni Legacy: proprietarie
Pro
Ubiquità. Molti sistemi ed applicazioni moderni sono costruiti su back-end Java. La capacità di integrare metodi di data science direttamente nel code-base esistente è una caratteristica che in un CV può fare la differenza.
Scrittura senza errori. Con Java non si scherza quando si tratta di sicurezza nella scrittura. Per applicazioni di big data cruciali per gli obiettivi aziendali, questa caratteristica è inestimabile.
Java è un linguaggio generico altamente performante. Questo ne fa un'ottima scelta per la produzione di codice ETL efficace e per algoritmi di machine learning intensivi a livello computazionale.
Contro
Per analisi ad-hoc e applicazioni statistiche dedicate, difficilmente Java sarà la prima scelta, data la sua complessità sintattica. Linguaggi dinamici come R e Python, in questi casi, sono molto più produttivi.
Rispetto a linguaggi domain-specific, come R, non esistono molte librerie Java per i metodi statistici avanzati.
Giudizio finale: un buon candidato per le data science
Sulla scelta di Java come linguaggio preferito per le data science ci sarebbe da discutere. Molte aziende apprezzano la capacità di integrare in maniera efficace il codice di produzione data science direttamente nei code-base esistenti, e troverete innegabili i vantaggi forniti dal potere performante e la sua sicurezza. Dall'altro lato, vi troverete sprovvisti dei pacchetti specifici per le statistiche disponibili per gli altri linguaggi.
A parte ciò, comunque, è decisamente un linguaggio da prendere in considerazione, soprattutto se già conoscete R e/o Python.

Scala

Cosa sapere
Sviluppato da Martin Odersky e rilasciato nel 2004, Scala è un linguaggio che gira su JVM. Si tratta di un linguaggio multiparadigma, che permette sia approcci funzionali che object-oriented. Il framework di cluster computing Apache Spark è scritto in Scala.
Licenza
Gratuita
Pro
Scala + Spark = Cluster computing altamente performante. È la scelta ideale per chi lavora con data set di dimensioni notevoli.
Multiparadigma. I programmatori Scala possono ottenere il meglio da entrambi i mondi: i paradigmi di programmazione funzionali così come quelli object-oriented sono entrambi alla loro portata.
Scala è compilato con bytecode Java e gira su JVM. Questo permette di ottenere inter-operatività con lo stesso Java, il che ne fa un linguaggio generico molto potente, e allo stesso tempo adatto alle data science.
Contro
Scala non è il linguaggio ideale da cui cominciare. La miglior cosa è scaricare sbt e settare un IDE come Eclipse o IntelliJ con uno specifico plug-in Scala.
La sintassi e il sistema di scrittura sono spesso definiti complessi. Di conseguenza, aspettatevi una curva di apprendimento piuttosto ripida se avete avuto a che fare solo con linguaggi dinamici come Python.
Giudizio finale: perfetto per le giuste quantità di dati
Quando si tratta di utilizzare il cluster computing nella lavorazione dei Big data, la combinazione Scala + Spark è una soluzione fantastica. Se si ha esperienza di Java o altri linguaggi pensati per la statistica, apprezzerete queste caratteristiche anche con Scala. Tuttavia, se la vostra applicazione non lavora un volume di dati tale da giustificare la complessità aggiunta di Scala, probabilmente sarete molto più produttivi con altri linguaggi, come R o Python.

Julia

Cosa sapere
Rilasciato poco più di 5 anni fa, Julia ha lasciato il segno nel mondo della computazione numerica. La sua reputazione è cresciuta grazie alla rapida adozione da parte di numerose organizzazioni di primo piano, tra cui molte nell'industria finanziaria.
Licenza
Gratuita
Pro
Julia è un linguaggio compilato di tipo JIT (just-in-time), che lo rende ben performante. Inoltre possiede la semplicità, la scrittura dinamica e le capacità di scripting dei linguaggi interpretati come Python.
Julia è stato strutturato per le analisi numeriche, ma è adatto anche alla programmazione generica.
Leggibilità. Molti utenti lo reputano un vantaggio notevole.
Contro
Maturità. Trattandosi di un linguaggio recente, alcuni utenti hanno notato delle instabilità nell'utilizzo dei pacchetti. Tuttavia il linguaggio in sé è stato riconosciuto come abbastanza stabile per l'utilizzo in produzione.
Un'altra conseguenza della recente creazione e delle ridotte dimensioni della community di sviluppatori di questo linguaggio è la limitata disponibilità di pacchetti. A differenza dei più longevi R e Python, Julia non possiede (ancora) la gamma di pacchetti di questi ultimi.
Giudizio finale: arriverà il suo momento
I problemi principali di Julia non sono imputabili a pecche del linguaggio in sé. In quanto recente, non è maturo e production-ready quanto le due alternative più popolari (R e Python). Ma, con un po' di pazienza, è una buona idea tenerne d'occhio l'evoluzione nei prossimi anni.

MATLAB

Cosa sapere
MATLAB è un linguaggio computazionale numerico molto diffuso utilizzato sia da studiosi che da professionisti
È stato sviluppato e rilasciato da MathWorks, una compagnia costituitasi nel 1984 allo scopo di commercializzarne il software.
Licenza
Proprietaria: il prezzo è variabile a seconda dei casi di utilizzo.
Pro
Sviluppato specificatamente per la computazione numerica. MATLAB è adatto alle applicazioni quantitative con requisiti matematici sofisticati quali analisi dei segnali, trasformate di Fourier, matrici algebriche e processamento di immagini.
Data Visualization. MATLAB ha ottime caratteristiche intrinseche di plotting.
MATLAB viene spesso insegnato come parte del programma delle lauree triennali in materie quantitative come Fisica, Ingegneria e Matematica Applicata. Di conseguenza è molto utilizzato in questi campi.
Contro
Licenza a pagamento. A seconda del caso di utilizzo (accademico, personale, professionale) potrebbe essere necessario acquistare una licenza. Esistono alternative gratuite quali Octave. Vale la pena di tenerlo in considerazione.
MATLAB non è la scelta più ovvia per la programmazione generica.
Giudizio finale: il meglio sulla piazza per le applicazioni di matematica intensiva
L'uso diffuso di MATLAB in una vasta gamma di campi quantitativi e numerici sia nel mondo del lavoro che in quello accademico lo rendono un'opzione da prendere seriamente in considerazione per le data science, in particolare ne caso in cui la vostra applicazione o i vostri compiti quotidiani richiedano funzionalità intensive di matematica avanzata (ovvio, è per questo che è stato sviluppato!).

C++

C++ non è una scelta comune per le data science, sebbene abbia performance velocissime e sia molto popolare. La semplice ragione potrebbe essere un problema di produttività in rapporto alle performance.
Per dirla con le parole di un utente Quora:
“Se stai scrivendo del codice per un'analisi ad hoc che dovrà girare solo una volta, preferiresti passare 30 minuti a scrivere un programma che ci metterà 10 secondi per essere eseguito, o 10 minuti a scrivere un programma che verrà eseguito in 1 minuto?”
Il ragazzo ha colto nel segno. E tuttavia, per una performance di notevole livello produttivo, C++ sarebbe una scelta da non sottovalutare per l'implementazione di algoritmi di machine learning di basso livello.
Giudizio finale: non per tutti i giorni, ma se si cerca la performance...

JavaScript

Con la recente ascesa di Node.js, JavaScript è diventato un linguaggio sempre più server-side. Tuttavia, il suo utilizzo nelle data science e nel machine learning è tutt'oggi limitato (però date un'occhiata a brain.js e synaptic.js!). Gli svantaggi di questo linguaggio sono i seguenti.
È arrivato tardi! Node.js ha solo 8 anni di vita. Potete immaginare.
Poche librerie e moduli di rilievo per le data science sono attualmente disponibili. Ciò vuol dire che al momento manca un vero e proprio interesse nei suoi confronti.
Buone performance: Node.js è veloce, ma JavaScript non è immune da problemi. I punti di forza di Node sono tutti nell'I/O non sequenziale, il suo utilizzo diffuso e l'esistenza di linguaggi compilati su JavaScript. Di conseguenza, è comprensibile che possa seguirne un utile framework per le data science e il processamento ETL in tempo reale. La domanda da porsi è se questo possa offrire o meno qualcosa in più rispetto a quanto già disponibile sulla piazza.
Giudizio finale: c'è ancora molto da fare prima che JavaScript possa essere tenuto in considerazione per le data science

Perl

Perl è noto come il coltellino svizzero dei linguaggi di programmazione, grazie alla sua versatilità come linguaggio di scripting generico. Ha molte cose in comune con Python, trattandosi di un linguaggio dinamico, ma la sua diffusione non si avvicina minimamente a quella di quest'ultimo nel mondo delle data science.
In effetti è una sorpresa, considerato il suo utilizzo in campi quantitativi quali la bioinformatica. Perl presenta una serie di svantaggi quando si tratta di data science. Non è particolarmente veloce e la sua sintassi è tristemente famosa per non essere semplice. Inoltre non c'è stato molto interesse nello sviluppo di librerie specifiche per le data science. E in tutti i campi, bisogna saper cavalcare l'onda.
Giudizio finale: un linguaggio generico molto utile, ma che tuttavia non offre vantaggi sostanziali per il vostro CV da data scientist

Ruby

Ruby è un altro linguaggio generico interpretato e dinamico. Tuttavia, neanch'esso ha visto la popolarità di Python in questo campo.
Questa osservazione potrebbe lasciare sorpresi; la causa è probabilmente da ricercare nel dominio incontrastato di Python nel mondo accademico e il suo conseguente feedback positivo. Più persone usano Python, più moduli e framework vengono sviluppati, e più persone continuano a utilizzare Python.
Esiste un progetto, SciRuby, delineato per implementare funzionalità di computazione scientifica, quali le matrici algebriche, in Ruby. Ma per adesso è ancora Python a stare in cima alla lista.
Giudizio finale: non la scelta più ovvia, ma pur sempre utile da conoscere

Conclusioni

Una guida lampo ai linguaggi da tenere in considerazione per gli aspiranti data scientist. Fondamentale è comprendere i requisiti di utilizzo in termini di genericità e specificità, oltre allo stile personale di performance in rapporto alla produttività.

Se volete saperne di più sui corsi di Geeks Academy, visitate il nostro sito web! Che siate appassionti di Coding o di Big Data, troverete ciò che fa per voi!

 

Articolo originale 

LEGGI TUTTE LE NEWS