What don’t you like about Julia for “serious work”?
First of all, I would like to say that I like Julia and I like what the core team is trying to achieve. I like to play with Julia. To be honest for me it is more a toy than anything else. I am still struggling to find a real use for it or even use it.
If I need to prototype a model, glue things together do some stats, make some plots or create automated analysis and reports, then I can use R, Python or even Excel. Any of these 3 options will do a better job than Julia because they have better libraries, tooling and ecosystem in general. They also do not suffer from the Time to first plot, have better documentation and larger communities. That also means that you are more likely to find someone to help you solve your problems, understand code that was written by someone else or even find some to hire with that particular skill. I can list more things that are missing from Julia but that is not the point here.
Most people around me who tried to use Julia only see it as an immature fast version of R/Python. However for most people everything is not all about speed. Most people around me would say that they need to get things done quick, in a stable, reliable, secure and reproductible way. But often the Julia workflow is a pain, ecosystem too young, correctness issues, huge memory consumption and bugs like this one that drove me crazy:
That being said, which language is not a pain when you start learning it? None, they all have their good side and bad side… you just have to take the time to learn and appreciate them…
Also interacting with existing C++ libraries is key, because a lot has been built in that language. I know that Julia has CxxWrap, but it does not seem easy to use. Maybe I did not try hard enough or I am too stupid to manage to make it work. And there is no way a large company would rewrite its massive code base from C++ to a young language like Julia. That is never going to happen!
I really can see the benefit of Julia when someone has a need for prototyping something which must be fast and that also run for a long time. But that is really a niche for a language that aspires to be general. Other than that I am not sure what else can it be used for…
If someone or a firm wanted to build a software it would probably be better to build it in C++/Rust/Go/Java… all these languages can create small compact GUI, exe, dll …etc which can be used by other projects or by users with various level of IT skills. Yes Julia can create an (large) exe application (with 20 dlls) with PackageCompiler but again when it comes to creating an exe, app to be distributed, proprietary libraries, software, phone app…etc C++/Rust/Go/Java are better option than Julia.
Where does that leave Julia? In the middle between Python and C++, filling a small niche… And don’t get me wrong, you can do some serious quality work if you are in this niche…
If I had only 1 wish, I would ask for Julia to be as good as C++/Rust at creating exe/dll. That would be a big selling point over Python/R. The other “issues” like TTFP, slow compile time, lack of libraries… are minors issue from my point of view, and I would probably be able to live with them…