is the environment also available? are environments first class? it talks only about expressions - the environment in which they are evaluated seems to be implicit.<p>what could you do with first class environments? could you implement logic variables and backtracking? something like oz?<p>also, i think julia is optionally typed? what's the type system like for expressions? i saw an 'Any' in the link, which looked worryingly vague.<p>[having said all that, as a "scientific programmer", i am worrying more and more that this is a language i really should be using]<p>[edit: thanks for the informative replies]
This is a copy from a comment I did in an earlier thread a couple of weeks ago, but I think it still applies:<p>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.<p>(original: <a href="https://news.ycombinator.com/item?id=6172751" rel="nofollow">https://news.ycombinator.com/item?id=6172751</a>)<p>[1] <a href="http://docs.julialang.org/en/latest/manual/calling-c-and-fortran-code/" rel="nofollow">http://docs.julialang.org/en/latest/manual/calling-c-and-for...</a>
[2] <a href="http://docs.julialang.org/en/latest/manual/metaprogramming/" rel="nofollow">http://docs.julialang.org/en/latest/manual/metaprogramming/</a>
[3] <a href="http://docs.julialang.org/en/latest/stdlib/base/#general-collections" rel="nofollow">http://docs.julialang.org/en/latest/stdlib/base/#general-col...</a>
[4] <a href="http://docs.julialang.org/en/latest/manual/types/" rel="nofollow">http://docs.julialang.org/en/latest/manual/types/</a>
[5] <a href="http://docs.julialang.org/en/latest/manual/running-external-programs/" rel="nofollow">http://docs.julialang.org/en/latest/manual/running-external-...</a>
Nice to see!<p>I choose Mathematica over python for a lot of scientific/numerical computing due to how "lisp-y" Mathematica is.<p>I'll be keeping a keen eye on Julia as well!