Last week I tried the Julia language for the first time, and I’m very impressed.

Over the past couple years I’ve been to several talks about Julia, but never actually tried to use it. R and Python have always worked fine for my applications.

A couple things prevented me from jumping on board early. As with any new language or technology, Julia was not that stable initially. It sounds like 1.0 will be released next year, so this should become less of a problem. It also wasn’t clear to what extent the language would support vectorized operations. In R and Numpy users find it convenient to operate on entire vectors and arrays at one time. Julia supports this:

julia> exp(1:5)  # Equivalent to [exp(x) for x in 1:5]
5-element Array{Float64,1}:
   2.71828
   7.38906
  20.0855
  54.5982
 148.413

One strength of Julia is that it’s purpose built to use modern compiler technology. In older languages this is added on after the fact, so it’s less natural. Julia claims that the syntax is familiar to users of other technical computing environments. I found this to be true. Many of the array functions even share the name as the equivalent ones in Numpy, like reshape. So I was able to move from R and Python to Julia and be immediately productive with a numerical application. The application was approximating log likelihoods for high dimensional multivariate normal data. The code is available here; watch out, it’s written by a Julia newb.

If you’re thinking about trying Julia, then do it. Programming languages don’t demand monogamy, and language wars are boring. I would not hesitate to use Julia, especially for numeric / algorithmic research applications where one wants to write fast code with a minimum of fuss.

Big thanks to Professor Ethan Anderes at UC Davis for introducing the language to me.