På ganske få år har det helt friske sprog Julia fundet sig en større fanskare. Da sproget kom til verden i 2012, var det ønsket om at forene egenskaber fra en række andre sprog, der var motivationen.
Det skulle have en hastighed som C, dynamiske sprogfeatures som i Ruby, makroer som Lisp og velkendt matematisk notation som i Matlab, vidtrækkende anvendelsesområder som med Python, statistiske faciliteter som i R og tekstbehandling som i Perl.
Samtidig skulle sproget have en open source-licens, være nemt at lære og have interaktive muligheder.
Noget kunne tyde på, at den ambitiøse målsætning er lykkedes, for selv om Julia stadig er et ganske lille sprog i udbredelse, med en 50.-plads på popularitetsindekset Tiobe, så får sproget meget omtale.
Julia har netop rundet versionsnummeret 1.0, der markerer sprogets udtræden af barndommen og ind i de voksne sprogs rækker.
Det er især Julias ydelse, som giver sproget fortrin i forhold til de mere eller mindre fortolkede sprog som R og Python.
»Hvis du er matematiker, videnskabsmand eller ingeniør, har du historisk haft mulighed for at vælge et sprog, der var hurtigt, som C ++ eller Java, eller et sprog, der er nemt at lære, som Matlab, R eller Python. I Julia skabte vi et sprog, der var hurtigt og nemt,« har en af sprogets bagmænd, Viral Shah, udtalt til mediet Quartz.
Han fortæller, at den primære inspiration bag udviklingen af Julia var at se, hvordan mange mennesker måtte skrive det samme program to gange:
Dataforskere vil først bruge et værktøj som Python eller R til at udvikle en algoritme, fordi det gør det nemt at udforske dataene og lave diagrammer i disse sprog. Og når forskerne var tilfredse med algoritmen, skulle de så omskrive programmet i C ++ eller Java for at få effektiv ydelse.
Julia er hurtigere end Python og R, fordi sproget er specielt designet til hurtigt at gennemføre den grundlæggende matematik, som benyttes i datavidenskab, såsom matrixudtryk og lineær algebra.
# calculates x for 0 = a<em>x^2+b</em>x+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
Et simpelt eksempel på Julia, fra Julia By Example.