Posted on: 2014-01-26 19:45:00 -0500
Julia checks all the boxes for the makings of a perfect scientific computing language. It provides a REPL for exploratory programming and analysis backed up by a JIT compiler. This avoids the need to eventually re-write critical sections of code in C or Fortran for speed. The type system makes sense for mathematics, multiplication works in a linear-algebra sense on matrices, and much more. I was cheering out loud during initial testing.
But there’s a big problem under the hood. Let’s fire up Julia 0.2.0 (a friend verified on 0.3.0-dev pulled from GitHub) and define two functions in the REPL:
function foo() return 42 end function bar() return foo() end
Evaluating bar() gives 42, just as one would expect. Now let’s redefine foo():
function foo() return 69 end
Evaluating bar() still gives 42! Not getting something so basic correct tells me to avoid the whole thing for fear of getting subtly screwed by some other oversight. Actually, oversight isn’t the right word, since broken automatic compilation has been a known problem for two years. My take-away from this and other developer threads is that there’s something not quite right about how the whole language is architected.
Best to steer clear for the foreseeable future.