20 comments

[ 10.1 ms ] story [ 142 ms ] thread
I just discovered "Julia" thanks to this article. It looks like a wonderfully thought out programming language. Unfortunately, I am having trouble installing the language on my dated OS. Apparently, I need Ubuntu 13 to run it!
I have had no trouble compiling from source. Are you trying to use a PPA?
Can anyone comment on the difficulty of porting Matlab code to Julia? It appears extremely straightforward, but I'm guessing that many toolbox functions aren't implemented in Julia yet?

In academia, there's tremendous momentum behind Matlab, but Julia would solve many problems with licensing, building more complex systems, etc.

There's a growing number of packages written in Julia (http://docs.julialang.org/en/latest/packages/packagelist/) and using the PyCall package you can call any python package if you're missing functionality. Do have a look to see if what you need is implemented. Other than that porting existing MATLAB code is extremely easy since the syntax is similar in many cases.

Disclaimer: I'm one of the core devs.

One thing that is holding me back from porting my Matlab code to Julia is manual loop-unrolling. "It seems that, when using Julia, one needs to unlearn everything you’ve ever learned about vectorisation in MATLAB." [1]. Once the speed with Matlab-like syntax improves, I'll try again.

[1]: http://www.walkingrandomly.com/?cat=59

> Once the speed with Matlab-like syntax improves, I'll try again.

The @devec macro should help, meanwhile:

    @devec r = a .* b + c .* d + a
... will devectorize the expression. It's not perfect, but it's definitely useful.

https://github.com/lindahua/Devectorize.jl

Do you feel 2D plotting is sufficiently developed to be useful at this point?
Sufficiently developed? No way. Is it getting there? Yes I think. There are no plotting facilities part of the standard library, but external packages like Winston [1] are available -- but the syntax was verbose for my taste, so I let it pass.

According to this SO question[2], there was some web-REPL plotting earlier but it is unmaintained now.

[1] https://github.com/nolta/Winston.jl

[2] http://stackoverflow.com/questions/14970817/plot-not-defined...

The author seems to have glazed over quite a bit of the rather mature Python ecosystem simply because it lives in a general purpose language.
Perhaps, though he states "In this area, it’s unfortunately hard to dispute that general-purpose scripting languages like Perl, Ruby, and Python, have much better language and library support in this area than any of the data-specific languages."

It's also highly likely that most analysts reading this article know lots about Python (and Ruby), some about R, and little to nothing about Matlab, Octave, or Julia, unless they have an engineering background. (Yes, some analysts do have backgrounds other than CS/Eng/Physics!)

So, I don't think it's glazing as much as it's trying to focus on the new and not the "yet again, someone telling me how to use Python for data, when I want to know if there's something even better...".

I also have the impression that the research that went in this article is a quite light. R, ML, Python serve different purposes. Julia is cool but brand new and feel kind of out of place compared to the heavy weight that are the other three. The point the author makes about ML and R being black boxes is misleading. At least, R is open source and you can always look at the gut of the software, nothing is more easy.
(comment deleted)
(comment deleted)
The only reason I can see to use Matlab is that you have invested heavily in it in the past. If not, I'd always use python instead. I claim it's not less "tuned for numerics" (with numpy) than Matlab. If you really need a Matlab like IDE, you should either give Spyder² [1] (I don't use it myself, but I know some Matlab-switchers that are quite happy with it) or IPython notebook a try.

In my oppinion, the only thing Matlab has going for it are commercial extensions and (often exclusive) hardware support (and I don't mean computers).

[1] http://code.google.com/p/spyderlib/