L'irragionevole efficacia del linguaggio di programmazione Julia

11

Nessuna festa è come una festa in conferenza virtuale del linguaggio di programmazione

Ultimamente mi sono imbattuto in molti scienziati felici ed entusiasti. "Incontrare" in senso virtuale, ovviamente, poiché le conferenze e altre opportunità di scontrarsi con gli scienziati nello spazio della carne sono state quasi eliminate. La maggior parte degli scienziati crede nella teoria dei germi della malattia.

Ad ogni modo, questi scienziati e matematici sono entusiasti di un nuovo strumento. Non è un nuovo acceleratore di particelle né un supercomputer. Invece, questo nuovo ed entusiasmante strumento per la ricerca scientifica è… un linguaggio informatico.

Come può un linguaggio informatico essere eccitante, chiedi? Sicuramente, alcuni sono migliori di altri, a seconda dei tuoi scopi e delle tue priorità. Alcuni funzionano più velocemente, mentre altri sono più veloci e facili da sviluppare. Alcuni hanno un ecosistema più ampio, che ti consente di prendere in prestito codice testato in battaglia da una libreria e fare meno lavoro da solo. Alcuni sono adatti a particolari tipi di problemi, mentre altri sono bravi a essere di uso generale.

Per gli scienziati che elaborano, i linguaggi, la qualità dei compilatori e delle librerie e, naturalmente, le macchine su cui girano, sono sempre stati importanti. Per coloro il cui compito è simulare l'atmosfera o progettare armi nucleari, Fortran era lo strumento tradizionale preferito (e lo è ancora spesso, anche se ora ha più concorrenza). Quel linguaggio ha dominato il mercato perché sono disponibili compilatori che possono trarre vantaggio dai più grandi supercomputer. Per l'attuale razza di data scientist, Python è attualmente popolare a causa dello slancio del suo ecosistema e della sua interattività e del rapido ciclo di sviluppo.

Sei anni fa, ho scritto in queste pagine della perdurante importanza di Fortran per il calcolo scientifico e l'ho confrontato con molti altri linguaggi. Ho concluso quell'articolo con una previsione che, in 10 anni, un nuovo linguaggio chiamato Julia aveva buone possibilità di diventare quello a cui gli scienziati si sarebbero rivolti quando avrebbero affrontato problemi numerici su larga scala. La mia previsione non era molto accurata, però.

Annuncio pubblicitario

In realtà Julia ha impiegato solo circa la metà di quel tempo.

Abbastanza eccitazione per un Con

Parlando con gli scienziati negli ultimi anni, il linguaggio informatico Julia ha davvero creato una nuova ondata di entusiasmo nel settore. Ma quando ho scritto del suo potenziale, non capivo perché il linguaggio sarebbe decollato.

Ho basato la mia valutazione sulla combinazione unica di Julia di sintassi conveniente con prestazioni senza compromessi. All'epoca, sebbene Julia fosse ancora in stato pre-1.0, c'era già un sacco di chiacchiere eccitate. Julia sembrava aver risolto il "problema delle due lingue", un enigma che spesso devono affrontare i programmatori Python, così come gli utenti di altri linguaggi espressivi e interpretati. Scrivi un programma per risolvere un problema in Python, godendo della sua piacevole sintassi e interattività. Il programma funziona su una versione di prova del tuo problema, ma quando provi a ridimensionarlo a qualcosa di più realistico, è troppo lento. Non è colpa tua. Python è intrinsecamente lento, qualcosa che non ha importanza per alcuni tipi di applicazioni, ma è importante per la tua grande simulazione. Dopo aver applicato varie tecniche per velocizzarlo ma realizzando solo guadagni modesti, si ricorre finalmente alla riscrittura delle parti più lunghe del calcolo in C (più comunemente). Ora è abbastanza veloce, ma ora devi anche mantenere il codice in entrambe le lingue, da qui il problema delle due lingue.

Sebbene la soluzione di Julia a questo problema abbia attratto scienziati e altri alla lingua, questo non è il motivo della ritrovata eccitazione intorno alla piattaforma. C'è qualcos'altro.

Ingrandisci / Il banner per JuliaCon 2020

Mentre lavoravo a questo articolo, la JuliaCon di quest'anno, la convention annuale di Julia, si è svolta (online, ovviamente). Di solito il programma per una riunione informatica è pieno di titoli su cose relative a programmazione, compilatori, algoritmi, ottimizzazione e altri argomenti di informatica. E mentre ce n'era in abbondanza al Julia Meetup di quest'anno, sfogliare i titoli dà l'impressione di essere incappati in una conferenza scientifica. Ci sono presentazioni su tutto, dalla fluidodinamica all'imaging cerebrale, all'elaborazione del linguaggio. Nonostante la straordinaria varietà di campi, tuttavia, guardare le presentazioni dà un senso di comunità attorno a un atteggiamento condiviso che sembra essere stato influenzato dal movimento del software libero.

Annuncio pubblicitario

Il codice di tutti è su GitHub. Se sei interessato a utilizzare l'algoritmo di qualcuno nella tua ricerca, puoi leggere la fonte e avrai accesso all'ultima versione man mano che viene sviluppata. Gli scienziati di una certa età sapranno quanto questo sia molto diverso da come procedeva la ricerca computazionale. Ai vecchi tempi, il codice raramente lasciava il laboratorio.

La comunità di Julia è unificata anche da qualcos'altro: una gioia condivisa nel potere magico (questa parola è emersa più di una volta) di Julia per facilitare la collaborazione e il riutilizzo del codice. Considera solo alcuni degli elogi provenienti dai presentatori di JuliaCon 2020:

Questa è una delle cose che rende Julia così potente nella soluzione di questi problemi […] Questa integrazione offre a Julia un vantaggio rispetto ad altre lingue […] siamo stati in grado di sviluppare queste soluzioni in brevissimo tempo:

León Alday, modellistica molecolare

Julia è davvero il linguaggio che consente l'esistenza di un progetto del genere:

George Datseris, Dr. Watson, un assistente scientifico

Julia è una gioia programmare in:

Mauro Werder, Spessore del ghiaccio del ghiacciaio

La lingua di Giulia […] è uno strumento particolarmente agile:

Valeri Vasquez, Dinamica dei vettori di malattia

Julia è stata la scelta più ovvia:

Rafael Schouten, Simulazioni spaziali

[Julia allows] a sfruttare gli strumenti di tutte le discipline per far progredire la ricerca sul cancro:

Meghan Ferrall-Fairbanks, Dinamiche tumorali

Questo lavoro è stato molto piacevole da fare in Julia a causa delle belle astrazioni che consentono un codice molto generale:

Vilim Štih, Dinamiche del cervello di Zebrafish

È davvero bello avere un linguaggio veloce che può essere usato per scrivere tutto. […] ma ciò che mi colpisce davvero in questi giorni è qualcos'altro: Julia è in qualche modo in grado di aumentare la mia produttività […]. Julia rende facile pensare al giusto livello di astrazione.”:

Petr Krysl, Equazioni alle derivate parziali

Perché fare scienza a Julia è fantastico […] Interazione tra pacchetti = pura magia!:

George Datseris Analisi della performance musicale

Tutti questi scienziati hanno scoperto che Julia aumenta le opportunità di collaborazione e rende più facile che mai incorporare il lavoro di altri e consentire loro di scrivere codice che può essere utilizzato da altri in modi imprevisti. La chiave di questi poteri è nella soluzione di Julia a un diverso vecchio enigma, questa volta dall'informatica: il problema dell'espressione.