Julia, a new compiled programming language
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/ 2 http://docs.julialang.org/en/latest/manual/metaprogramming/ 3 http://docs.julialang.org/en/latest/stdlib/base/#general-collections 4 http://docs.julialang.org/en/latest/manual/types/ 5 http://docs.julialang.org/en/latest/manual/running-external-programs/