Quando lavori a progetti di data science, hai a disposizione un'ampia scelta tra i migliori linguaggi di programmazione. Oltre ai pezzi grossi come Python, R e SQL, ci sono anche altri linguaggi generali e specializzati che puoi usare, come MATLAB, C/C++ e Go. Ma che dire di Julia, un arrivato relativamente recente sulla scena? Qui vediamo a cosa serve Julia e perché dovresti considerare di impararlo.
Che cos'è Julia?
Julia è un linguaggio di programmazione entusiasmante e relativamente nuovo, progettato per essere il linguaggio ideale per il calcolo scientifico, il machine learning e il data mining. Rilasciato nel 2012, Julia è diventato rapidamente un favorito tra i professionisti dei dati più esperti.
Progettato per unire la velocità di C, la capacità di programmazione generale di Python e la potenza statistica di R, Julia è un linguaggio potente e relativamente semplice da imparare rispetto ad altri linguaggi.
Oggi Julia è stato scaricato oltre 40 milioni di volte e ha creato una community che ha registrato più di 8.000 pacchetti per il linguaggio. A ottobre 2022, Julia si colloca al 25° e 27° posto rispettivamente nel PYPL Index e nel TIOBE Index. Ciò significa che, pur non essendo ancora popolare quanto Python, R o MATLAB, Julia è una stella nascente con una popolarità simile a SAS o Scala.
Pro e contro di Julia
È facile entusiasmarsi per un nuovo linguaggio di programmazione, soprattutto quando punta a essere così rivoluzionario. Tuttavia, come per tutti i linguaggi, Julia ha i suoi lati positivi e negativi. Di seguito abbiamo riassunto alcuni pro e contro di Julia. Li approfondiamo nel nostro articolo su l'ascesa di Julia:
Vantaggi di Julia
- È veloce. Si parla molto della velocità di Julia. In termini di micro-benchmark (misurazione delle prestazioni su una serie di schemi di codice comuni), si comporta molto bene, anche se questi risultati non includono il tempo di compilazione. Un'analisi approfondita ha rilevato che il pacchetto CSV.jl di Julia per la gestione di dati di testo delimitati era da 1,5 a 5 volte più veloce del pacchetto pandas di Python nella lettura di dati CSV.
- Ha una sintassi chiara. La sintassi di Julia trae ispirazione da linguaggi di programmazione per i dati già esistenti. Pensalo come MATLAB, ma con alcune buone idee prese da Python, R e Ruby.
- È versatile. Come vedremo, Julia ha molti utilizzi. Alcune sue caratteristiche, come il multiple dispatch, lo rendono applicabile in molti settori e per ogni tipo di progetto.
Svantaggi di Julia
- Il linguaggio è giovane. Come detto, Julia è un arrivato relativamente recente. Di conseguenza, non è così diffuso o supportato come linguaggi quali Python e R.
- L'ecosistema è piccolo (ma in crescita). A causa della sua novità, la community e l'ecosistema sono ancora relativamente piccoli. Stanno emergendo molte soluzioni e pacchetti interessanti, ma rispetto ai pesi massimi come Python, la strada da fare è ancora lunga.
- Ha alcuni problemi di compilazione. Diverse fonti hanno rilevato un ritardo in fase di compilazione del codice con il compilatore just-in-time (JIT) di Julia. JIT compila tutto il codice in linguaggio macchina prima dell'esecuzione. Questo ritardo può risultare un po' frustrante quando si vuole fare scripting rapido.
Utilizzi di Julia
Dunque, come linguaggio emergente, Julia ha diversi pro e contro. Ma a cosa serve Julia, in concreto?
Uno degli obiettivi principali alla base di Julia era creare un linguaggio che consentisse ai programmatori di scrivere codice chiaro, di alto livello, generico e astratto, simile alle formule matematiche, pur riuscendo a produrre un codice macchina veloce e di basso livello, tipico dei linguaggi statici. Guarda il linguaggio in azione con il nostro tutorial su Julia.
Di seguito abbiamo evidenziato diverse aree in cui il linguaggio eccelle.
1. Calcolo numerico
Esiste una gamma di pacchetti che permettono ai programmatori Julia di svolgere attività di calcolo numerico. Ad esempio, per attività legate all'algebra lineare c'è il modulo LinerAlgebra.jl; per la ricerca degli zeri c'è NonlinearSolve; e per la differenziazione automatica ci sono ForwardDiff o Enzyme.
2. Machine learning
Ancora una volta, Julia è stato costruito pensando al machine learning, in particolare al machine learning scientifico, che si concentra specificamente sulle sfide e sulle intuizioni ricavate da dataset scientifici. In quanto linguaggio compilato progettato per il parallelismo, Julia può offrire un'enorme velocità in alcune attività di machine learning. Ad esempio, Julia può ridurre notevolmente i tempi di training e i costi quando si mettono in produzione modelli di machine learning.
Con una community in rapida crescita e molti nuovi pacchetti per l'ML, molti dei quali inclusi nel framework MLJ, Julia può essere un'ottima scelta in questo ambito. Un ottimo esempio del machine learning in Julia proviene da un'azienda australiana che si occupa della manutenzione delle linee elettriche nel paese. Creando una mappa 3D e usando il machine learning in Julia, sono riusciti a individuare guasti di rete e potenziali guasti 100 volte più velocemente di prima.
3. Statistica
Un'altra funzione principale di Julia è la statistica e l'analisi statistica. Ad esempio, il meta-pacchetto StatsKit contiene pacchetti Julia per funzioni statistiche di base, oltre a strumenti per lavorare con dati tabulari in DataFrames, distribuzioni di probabilità, analisi statistiche multivariate, test d'ipotesi e altro ancora.
4. Programmazione generale
Come linguaggio di programmazione general-purpose, Julia è in grado di costruire un'ampia gamma di software e funzionalità. Ad esempio, il pacchetto Blink ti permette di creare app GUI con Electron, GameZero introduce allo sviluppo di videogiochi per principianti e Miletus consente di costruire contratti finanziari in Julia.
Abbiamo già detto che Julia è stato progettato per essere relativamente facile e rapido con cui scrivere programmi, grazie alla sua sintassi lineare. Inoltre, esegue il codice ed effettua calcoli molto velocemente.
5. Sviluppo web
Ci sono diversi ottimi strumenti per lo sviluppo web in Julia a disposizione degli utenti. Pacchetti come Genie.jl e Dash.jl. Genie consente di lavorare con i dati sul web in Julia. È un framework web full-stack che offre un modo per sviluppare applicazioni web con un flusso di lavoro snello ed efficiente. Dash.jl è un'interfaccia Julia all'ecosistema Dash, che ti permette di creare applicazioni web in Julia.
Esempi di Julia nei settori
Ora che sappiamo a grandi linee a cosa serve Julia, diamo un'occhiata ad alcuni esempi di utilizzo di Julia nei vari settori. Il sito di Julia elenca molte delle applicazioni del linguaggio, e qui sotto ne evidenziamo alcune tra le principali:
6. Modellazione e sviluppo farmaceutico
Julia è ampiamente utilizzato in ambito medico. I ricercatori lo usano per identificare e testare nuovi farmaci, ottimizzare i trattamenti, oltre che per diagnosi e terapie. Pacchetti come BioJulia (un'infrastruttura per la bioinformatica) e Pumas (per la modellazione farmacometrica, la scienza di qualificare le informazioni delle sperimentazioni sui farmaci) sono molto diffusi. Ad esempio, il colosso farmaceutico Pfizer ha utilizzato Julia per accelerare le simulazioni di nuove terapie.
7. Supercalcolo parallelo
Uno dei migliori esempi della velocità di Julia è nel campo dell'astronomia, dove spesso si usa il bundle AstroLib.jl di routine astronomiche e astrofisiche.
Un esempio dell'uso di Julia in astronomia è il progetto Celeste, in cui un team di ricerca composto da astronomi, fisici, ingegneri informatici e statistici ha sviluppato un nuovo metodo di calcolo parallelo utilizzando Julia. Dopo tre anni di sviluppo, hanno utilizzato questo metodo per produrre il catalogo più accurato di 188 milioni di oggetti astronomici in appena 14,6 minuti, con un miglioramento delle prestazioni superiore a 1.000 volte.
8. Modellazione e gestione finanziaria
Le prestazioni e la flessibilità di Julia lo rendono uno strumento potente nel mondo della finanza. I professionisti utilizzano il linguaggio per sviluppare modelli e proiezioni a supporto delle decisioni finanziarie. Uno dei pacchetti più popolari è JuliaFin, specializzato in aree come asset management, risk management, trading algoritmico, backtesting e altre aree della finanza computazionale, inclusa la modellazione di contratti finanziari.
9. Robotica
I roboticisti del MIT utilizzano Julia per programmare i robot. Gli esempi includono addestrarli a camminare, salire le scale e affrontare terreni difficili e pericolosi. Anche in questo caso, gli esperti citano la flessibilità e il codice generico di Julia come ragioni della sua efficacia in questo settore, poiché consente di scrivere funzioni chiare che possono operare su una varietà di tipi di dati.
Una delle raccolte di pacchetti più popolari in quest'area è JuliaRobotics, che include pacchetti Julia come MotionCaptureJointCalibration.jl, che fornisce la calibrazione cinematica per i robot a partire da dati di motion capture.
10. Sicurezza di rete
Specialisti di rete in Cisco hanno utilizzato il pacchetto Flux.jl di Julia per migliorare la sicurezza di rete e per il machine learning. La possibilità di scrivere codice efficiente in un unico linguaggio è indicata come uno dei principali vantaggi dell'uso di Julia in questo campo.
Iniziare con Julia
È evidente che gli usi di Julia sono importanti. Anche se è ben lontano dal sostituire subito Python o R nel campo della data science, dato quanto sono consolidati questi ultimi, ha certamente il potenziale per ampliare il tuo repertorio. Chi è interessato a imparare Julia dovrebbe iniziare con il nostro corso Introduction to Julia, che ti guiderà tra le caratteristiche chiave di questo linguaggio in rapida evoluzione. Puoi anche consultare la nostra Julia cheat sheet, una pratica guida di riferimento ai fondamenti di Julia.

