I've just started exploring Julia and I'm really impressed by how efficient it is compared to Python and R. Julia is probably as fast if not faster than C++.<p>It's also completely mathematical, just like Machine Learning is. One reason may be the complexity but for most of the machine learning use cases in Python or R you still need a good understanding of Math (linear regression, polynomial regression).<p>It also has the same modules (Transformers.jl, Flux.jl, Torch.jl)<p>Despite all of this, Julia is not the go-to language for ML. For non-commercial it's Python and for commercial it's R. Do people not know about Julia?
I've been thinking about this a bunch, and I honestly still don't know. Julia SHOULD be very popular, but it isn't.<p>One issue is that if you ask 10 people why it's not, you get 11 different answers, each of them being confident that their particular problem with the language is the universal reason. Nonetheless, by listening to sufficiently many people's complains, we can draw a picture:<p>* The latency and memory consumption overhead makes Julia unsuitable for a large group of tasks, including many CLI applications.<p>* Julia is hard to "deploy" since it can't generate standalone binaries, and it's not preinstalled on most systems.<p>* Multiple dispatch, it's system of abstract inheritance and lack of static analysis and tooling makes it very difficult to write correct code. It's even hard to read Julia code due to dispatch labyrinths, macros that obfuscate IDEs, and lack of good IDE tooling.<p>I think these are the major issues of Julia that prevents adoption, apart from simply inertia. Most users bump into points 1 and 2 nearly immediately - only later do they realise point 3.
Julia is my favorite language by far. The biggest issue is the tooling.<p>- Promotes REPL driven development, but can’t even redefine types without restarting the session.
- Language is very permissive (both by semantics and by convention). Very difficult to write correct code. Poor IDE experience. The shining light atm is
- Poor support for abstractions. Julia’s abstract types are very limited. Best practice is to use traits (not even a language feature, but a tacked on convention), but afaict, there is no IDE support for this.
- High latency due to compilation (Julia is an AoT language masquerading as a JITed language, eg V8 JavaScript). Julia 1.9 (beta) is first release I found tolerable latencies.<p>I do Java for my day job. That language is garbage in comparison to Julia. But the tooling makes it far more tolerable.
These are all the companies/organization using Julia
<a href="https://juliahub.com/case-studies/" rel="nofollow">https://juliahub.com/case-studies/</a>
<a href="https://nerdsapps.com/python-vs-r-vs-julia-which-is-better/" rel="nofollow">https://nerdsapps.com/python-vs-r-vs-julia-which-is-better/</a>
Lots of Academics and Research are using Julia.
Julia is great for statistics, especially if you need to implement custom methods, and scientific ML, e.g. inferring ODEs from data.<p>But Python, which I dislike as a language, has unbeatable differentiable ML libraries (TF, Torch, JAX). Julia's are quite impressive given the few man-hours they have received, but will give you a lot of trouble if you try to do non-trivial things.