6 ms·
I really like Julia. I'm currently playing around with it whenever I find some spare time. I don't see it as a competitor to R, I think it could well be somethi
by terhechte 13y ago
I really like Julia. I'm currently playing around with it whenever I find some spare time. I don't see it as a competitor to R, I think it could well be something along the lines of Python or Go.
It is LLVM based, and already really fast even though it is still a 0.2 and the JIT seems to have a lot of room for optimisation.
Whats more, it seems to offer just the right blend of language features:
- Easily include C libraries via a simple ffi [1]
- It is homoiconic like Lisp and thus allows for fantastic macro facilities [2]
- It has solid parallel programming support via a Coroutines implementation (Tasks) (similar to Goroutines as far as I can tell)
- It is a non-pure functional language
- In contrast to Go it has generics, so functional constructs like map, apply, drop, reduce, fold, partition & friends are already in there (or can easily be implemented) [3]
- It has optional types, so that you can assign types and the compiler will check for it and mark errors and will be able to create optimised code, but you don't have to [4]
- Running external programs is a joy [5] (Example: a=readall(`echo hello`))
The community seems to be very alive. There's a simple web framework called "Morsel" and I've recently set it up against a couple of contenders from the web framework benchmark (cpoll-cppsp, phreeze, and some others), and even though it is still a version 0.2, the performance for the json serialization benchmark would be pretty close to Scalatra (I yet have to publish these numbers, will do so soon).
I really hope that Julia will grow, as I love the choices that went into the design of the language, and it would be a shame if it would be only a replacement for R instead of something much bigger, as it is such a nice language.
[1] http://docs.julialang.org/en/latest/manual/calling-c-and-fortran-code/ http://docs.julialang.org/en/latest/manual/calling-c-and-for...
[2] http://docs.julialang.org/en/latest/manual/metaprogramming/ http://docs.julialang.org/en/latest/manual/metaprogramming/
[3] http://docs.julialang.org/en/latest/stdlib/base/#general-collections http://docs.julialang.org/en/latest/stdlib/base/#general-col...
[4] http://docs.julialang.org/en/latest/manual/types/ http://docs.julialang.org/en/latest/manual/types/
[5] http://docs.julialang.org/en/latest/manual/running-external-programs/ http://docs.julialang.org/en/latest/manual/running-external-...
- Synroc 13y agoI don't know if you have any experience with it, but how would you compare it to clojure?
- terhechte 13y agoI bought a Clojure book and started going through it, and I have some limited experience with ELisp and Racket. I really like lispy (is that even a word?) languages, so I tried to get into Clojure, also because I really like the ideas behind ClojureScript and the various libraries for it. So far, my experience has been mixed, I guess because I didn't read enough, or maybe it is my unfamiliarity with anything jvm-related (having never been a Java guy), as that's also something I constantly run into when I'm doing Scala. I'll try to write a bit more in Clojure, but so far Julia felt easier to get into, and I really like the ability to use types so that stupid errors don't result in runtime issues. There're way too many interesting languages these days :)
- jamesjporter 13y agoI'm acutally playing with Clojure and Julia right now and I'm running into the same problem. Never used Java and a lot of the Clojure material assumes you're coming with at least a little bit of Java background. That said Clojure is a much more mature language, Julia is still very new, its APIs are changing rapidly, etc. Agreed about too many interesting languages though :)
- peatmoss 13y agoHere's an idea: A port of Incanter to Typed Racket
- bitsai 13y agoNot exactly a trivial task... Incanter uses several sizable Java libraries (such as Parallel Colt) under the hood, so a port would first need to either finding suitable replacements or re-writing that code as well.
- peatmoss 13y agoDefinitely not a trivial task--though it may be a worthy task. Incanter has moved from PColt to JBlas, and is moving toward core.matrix which will abstract the linear algebra stuff. If anything, I'd guess that Racket might be an easier ask than Clojure due to the JVM weirdness around boxing / unboxing of numbers passed to and from the underlying jblas (it's entirely possible I don't understand what I'm talking about re boxing / unboxing, though I've heard tell that the JVM makes some aspects of numerical work very challenging).
- susi22 13y agoAgreed. Julia seems like it could really become a competitor to MATLAB (unless you rely on fancy toolboxes). I think their blog has some nice posts: http://julialang.org/blog/ http://julialang.org/blog/ especially these seem very interesting: http://julialang.org/blog/2013/03/julia-tutorial-MIT/ http://julialang.org/blog/2013/03/julia-tutorial-MIT/ It's also a huge plus that they can pretty much call any python inline: http://nbviewer.ipython.org/url/jdj.mit.edu/~stevenj/IJulia%2520Preview.ipynb http://nbviewer.ipython.org/url/jdj.mit.edu/~stevenj/IJulia%... So we have the fall back python libraries and can do plotting etc..
- jfb 13y agoI've been reading the Julia docs this morning, and it actually looks like it might be a good fit for my problem domain (video); most of the real heavy computational lifting in my applications happens across a C API boundary, but I still push enough bits that having e.g. unsigned ints (gazes balefully at Gosling) is a requirement. Hmm.
- glesica 13y agoI have been following Julia development for a while now (about a year and a half). It seems like it will be a great tool, but it is still VERY immature. The amount of breakage, especially with regards to important packages like plotting, has become something of an "in" joke. I'm really looking forward to seeing them get their package management situation worked out and a set of core packages nice and stable.
- terhechte 13y agoI concur. I can't really use it for any important projects right now, so I'm just following along and playing with it for simple and small scripts where breakage and failure are not a problem :)
- _pmf_ 13y ago> I'm really looking forward to seeing them get their package management situation worked out and a set of core packages nice and stable. I really don't understand why each language ecosystem has to go through this phase. What would be so bad about implementing packaging the way it has been done in OSGi for a decade? It's language agnostic, since the bundle can export/import namespaces or arbitrary capabilities, it has solved the dependencies-are-a-graph-not-a-list problem, it supports versioning and multiple parallel versions of the same package.
- glesica 13y agoBelieve me, I'd much rather use a standard packaging system for all languages. I'm not a Julia developer, so I don't have control over what they're doing. But ultimately, I need to be able to install packages in order to use the language to solve problems, so whether they reinvent the wheel (in your view, I'm not as familiar with it as you seem to be) or roll their own, it still just needs to get done.
- geebee 13y agoJulia does seem promising. Interesting that you see it as more along the lines of python than R. I just finished the data science coursera class, and while we used Python, we didn't get into R. I've played around a little R on my own, and while I certainly don't think it's too difficult to learn for a programmer with a math background, as a programmer I feel much more at home with Python. Given the choice, I'd rather use Python than R just because it feels more natural to me. If Julia is a truly a programming language, I'd agree that it would be more of a competitor with python than R (in the sense that its audience would be people like me who would lean toward python)... but I think it could be very successful by making it very easy for a programmer to stay within a programming language. In other words, it wouldn't compete with R, it would compete with python by bringing what you get from R to a programming language.
- peatmoss 13y ago(Hi there, I took the coursera course too!) I disagree with your compare and contrast of R as not-a-programming-language. R is absolutely a real language in every sense of the term. R, and its precursor SPlus, both have a very lispy feel. If you should ever try scheme after learning R, the biggest superficial difference you'll find is that the parentheses move: function(x1, x2) becomes (function x1 x2) R has a number of warts as a language (e.g. how it deals with copying objects in memory, amongst others), however it's just as "real" as Python, which also has its warts. I do like the direction Julia's heading, even if I'd prefer to see something like Clojure/Incanter, or better still, something like Racket be the next baton holder.
- geebee 13y agoOh, I'm not too surprised to hear that R isn't a full fledged programming language. I found python very natural to use, since I currently program mainly in Ruby (and, Java/C++ a while ago). Python felt easier for me than R, but that's probably related to my background. Some of this may also simply be a result of doing some exercises in Python (in the coursera class), and not doing any R. I was pretty bummed that we didn't't get at all into R in the coursera class, because sometimes just getting set up a little bit (like having some sample skeleton files for homework) and a few exercises can make a big difference. Not meant as a knock on the course, which was free and (I thought) very good. But a bit of exposure to R would be helpful (while I appreciate the importance of visualization, I do think that given the choice between tableau and an intro to R, I'd definitely have preferred R).
- ioddly 13y agoWow, it's come along nicely since the last time I saw it. I seem to recall they didn't even have macros and were doing everything with eval. As somebody with no interest in scientific programming, Julia still seems like a very well thought out language. I'll have to try writing an application with it soon.
- runarberg 13y agoI'm also really excited about the integration of Julia and IPython. https://news.ycombinator.com/item?id=6173212 https://news.ycombinator.com/item?id=6173212