Hi all!

I've been using Julia for a little over a month now, and I thought it would
be fun/informative to write a little post about my experience.

I'm mostly a Common Lisp guy. I write AI code in an academic setting.
However, I recently became enthusiastic about Clojure and was trying to
start a project in that.

Indecisive as usual, I continued poking around looking for the best
programming language to do the project in, even as I became fairly
committed to doing it in Clojure.

I had heard about Julia some time ago (looked at it very briefly), but
looked at it a second time when a friend mentioned it on twitter earlier
this year.

Looking at it again, I realized that:

1) Julia is "essentially a Lisp", IE, it is homoiconic (despite not
appearing so) and has the metaprogramming capabilities I am used to. (I
don't need these often, but if a language lacks it, I feel like I'm missing
an essential tool.)
2) Julia's type system and multiple dispatch capabilities give me much of
what I liked about Clojure's multimethods and protocols.
3) Julia is significantly faster (at least for many things).

I decided to start hacking out my project in Julia, abandoning the Clojure
code I had started.

After using it for a bit, I feel like it's been much easier to pick up what
I need to know than it was with Clojure. Both Julia and Clojure have the
deep, elegant stuff I like in a programming language; however, it seems
like Clojure creates a rich, interlocking set of concepts which you
*must* learn
in order to write very much code, whereas Julia has a gentle learning
curve, facilitating "normal" programming and allowing the user to learn the
deeper features as they become useful. At least, that's been my feeling.

Monkeying around with the metaprogramming *has* taught me that it's a
*bit* less
convenient than Lisp. Thinking about expr.head and expr.args is not as
intuitive as composing expressions as lists, I think. It's not a big
obstacle, though.

I've also found it a bit annoying that array access is not the same as
function application, again a feature of Clojure. Being able to treat
arrays and dictionaries as functions is convenient for certain higher-order
functions like map.

Overall, although I admit I'm judging Julia by Lisp/Clojure standards, it
comes out rather favorably. :)

-- 
Abram Demski
Blog: http://lo-tho.blogspot.com/
Leave anonymous feedback: http://www.admonymous.com/abramdemski

Reply via email to