På ganske få år har det nye språket Julia funnet seg en stor fanskare. Da språket kom til verden i 2012, var det ønsket om å forene egenskaper fra en rekke andre språk som var motivasjonen.
Det skulle ha en hastighet som C, dynamiske språkfunksjoner som i Ruby, makroer som i Lisp og velkjent matematisk notasjon som i Matlab, vidtrekkende bruksområder som Python, statistiske muligheter som i R og tekstbehandling som i Perl.
Samtidig skulle språket ha en åpen kildekode-lisens, være enkelt å lære og ha interaktive muligheter.
Noe kan tyde på at den ambisiøse målsetningen har lyktes, for selv om Julia fortsatt er et ganske lite språk i utbredelse, med en femtiendeplass på popularitetsindeksen Tiobe, så får språket mye omtale.
Høy ytelse
Det er særlig Julias ytelse som gir språket et fortrinn sammenlignet med de mer eller mindre fortolkede språk som R og Python.
– Hvis du er matematiker, vitenskapsmann eller ingeniør, har du historisk hatt mulighet til å velge et språk som var hurtig, som C++ eller Java, eller et språk som er lett å lære, som Matlab, R eller Python. I Julia skapte vi et språk som var hurtig og enkelt, har en av språkets grunnleggere, Viral Shah, uttalt til mediet Quartz.
Han forteller at det viktigste som inspirerte dem til å utvikle Julia var å se hvordan mange mennesker måtte skrive det samme programmet to ganger. Dataforskere vil først bruke et verktøy som Python eller R til å utvikle en algoritme, fordi det gjør det enkelt å utforske dataene og lage diagrammer i disse språkene.
Når forskerne var tilfredse med algoritmen, skulle de så skrive om programmet til C++ eller Java for å få effektiv ytelse. Julia er raskere enn Python og R, fordi språket er spesielt designet for å raskt gjennomføre den grunnleggende matematikken som benyttes i datavitenskap, så som matriseuttrykk og lineær algebra.
Her er et enkelt eksempel på Julia, fra Julia By Example.
# calculates x for 0 = ax^2+bx+c, arguments types can be defined in
# function definitions
function quadratic2(a::Float64, b::Float64, c::Float64)
# unlike other languages 2a is equivalent to 2*a
# a^2 is used instead of a**2 or pow(a,2)
sqr_term = sqrt(b^2-4a*c)
r1 = quadratic(a, sqr_term, b)
r2 = quadratic(a, -sqr_term, b)
# multiple values can be returned from a function using tuples
# if the return keyword is omitted, the last term is returned
r1, r2
end
Artikkelen er levert av Version2.dk