PDA

Visualizza la versione completa : Mini-review linguaggio Julia


sylvaticus
31-03-2017, 11:28
Buongiorno,
apro una mini-review e discussione sul linguaggio di programmazione Julia per: 1) capire se in questo forum c'è qualcuno che lo usa, 2) per farne un po' di pubblicità :-)

Per chi non lo conoscesse, Julia è un (relativamente) nuovo linguaggio di programmazione (2012) che prende il meglio di R, Matlab e Python, ci aggiunge un po' di introspezione alla Lisp & Clojure (che permette di fare metaprogrammazione in maniera decente), generalizza il concetto di polimorfismo dei linguaggi ad oggetti con l'indirizzamento multiplo (non so se si traduca così "multiple dispatch") e gira con performance dell'ordine di grandezza di C o Fortran.

Ecco, questo è il punto essenziale.

Se prendete il seguente grafico [originale (http://www.oceanographerschoice.com/2016/03/the-julia-language-is-the-way-of-the-future/)], che compara vari lingaggi mettendo in ascissa la lunghezza del codice di una serie di benchmarks e in ordinata (logaritmica!) la rapidità di esecuzione, noterete che tra espressività di un linguaggio e la sua efficienza esiste chiaramente una correlazione negativa, con i linguaggi dinamici (cluster di nord-ovest) che tipicamente eccedono nell'espressività e quelli compilati (cluster di sud-est) più a "basso livello" ma più performanti .

Quel punto grigio a sud-ovest che rompe tutti gli schemi è, appunto, Julia.

28346

Ora, un po' come con tua moglie (o ragazza, marito,..), che all'inizio l'avrai approcciata per la sua bellezza e poi ci vuole un po' per coglierne tutte le qualità positive, questo è tipicamente il genere di info che fa incominciare ad usare Julia. E come per la moglie (ragazza, marito,..) una volta che l'hai approcciata ti accorgi ti tutte le altre qualità che ne fanno un linguaggio di programmazione moderno e piacevole da usare.

Sicuramente è ancora acerbo (la versione corrente è 0.5, con la prossima che sta per uscire e che dovrebbe essere l'ultima prima della versine 1.0 stable). Fuori dal suo dominio d'utilizzo naturale, le applicazioni numeriche e scientifiche, è ancora ben poco conosciuto.
Nonostante questo, la facilità di utilizzo dell'enorme catalogo di librerie scritte in altri linguaggi (R, Python) e la presenza di ambienti di sviluppo già molto potenti (un EIDE basato su ATOM molto simile a R-Studio e IJulia, il kernel Jupyter per Julia) ne permettono un proficuo utilizzo fin da subito.

Come nota "negativa" il fatto che da linguaggi come R e matlap ha preso anche alcuni aspetti negativi, come la notazione degli array a base 1. Nell'eterna diatriba se sia meglio utilizzare gli indici a base-0 o base-1, c'è anche chi ha provato a proporre 0.5, ma non è stato ascoltato.


Questi alcuni links:
- sito web ufficiale http://julialang.org/
- forum https://discourse.julialang.org/
- doc (ottima, ma ~600 pagine) http://docs.julialang.org/en/stable/
- sito per un utilizzo cloud gratuito (con risorse tutt'altro che "demo") https://juliabox.com/
- l'unico tutorial in Italiano che ho trovato (ma prevalentemente focalizzato su aspetti a basso livello) http://www.programming.raskrjal.net/julia/july0000.html
- un mio tutorial più generico, ma in inglese https://www.gitbook.com/book/sylvaticus/julia-language-a-concise-tutorial/details

(PS: era un po' che non bazzicavo per questo forum.. è praticamente abbandonwere, il software che lo regge è obsoleto a dir poco... che peccato..)

MItaly
02-04-2017, 18:56
Sembra molto promettente, specie il JIT paragonabile a LuaJit come velocità, ci darò senz'altro un'occhiata.

Come nota "negativa" il fatto che da linguaggi come R e matlap ha preso anche alcuni aspetti negativi, come la notazione degli array a base 1.
Oh no, ma quando impareranno? :cry:

(PS: era un po' che non bazzicavo per questo forum.. è praticamente abbandonwere, il software che lo regge è obsoleto a dir poco... che peccato..)
La cosa buffa è che prima dell'aggiornamento c'era un software ancora più vecchio (vBulletin 2.3.qualcosa), ma che aveva un decimo dei bachi di quello attuale. :stordita:

Loading