Let me give some of the major reasons people complain about Julia and possible ways to solve them.
Perceived Problem 1: There are little to no questions on Julia' s stackoverflow tag, so if you have an issue, you'll have a hard time to solve it.
- Solution: The new users don't know Julia is currently a community project (no big tech company is currently behind it unlike other languages), and that the community is very active on https://discourse.julialang.org, official julialang slack and is actively welcoming discussions, issues and pull request on GitHub. If they knew this, they would know their questions would get responses (and answers) in at most 30mins on any of those official Julia channels.
Perceived Problem 2: Python has more libraries than Julia. In Julia, there are little libraries in the ecosystem, and they're not actively managed.
Solution: Put your expectations in check, programming languages and softwares don't work that way. Real world applications take time and they move in trends. Using python as an example, below are the most popular libraries you would mostly use if you use python a lot:
- pypy a just-in-time compiler for python to help speed up the language published an initial release in 2007, 16 after python was created.
- cython an extension of python for those who want to speed [python] up published an initial release in 2007, 16 after python was created.
- Pandas the most popular python library for dataframes published an initial release in 2008, 17 years after python was created.
- Numpy the most popular python library for numerical computing published an initial release in 2006, 15 years after python was created.
- Matplotlib the most popular python library for plotting published an initial release in 2003, 12 years after python was created.
- Tensorflow one of the most popular python library for ML and AI published an initial release in 2015, 24 years after python was created.
- Pytorch one of the most popular python library for ML and AI published an initial release in 2016, 25 years after python was created.
- Scikit-learn one of the most popular python library for ML published an initial release in 2007, 16 years after python was created.
- Selenium one of the most popular Python library for browser automation published an initial release in 2002, 11 years after python was created.
- Django one of the most popular python web framework published an initial release in 2005, 14 years after python was created.
- Flask of the most populat python web framework published an initial release in 2010, 19 years after python was created. None of the libraries were developed 10 years after python. Any genuine person would ask this: Then what were people doing with Python for the first 10+ years… I guess they were using Perl, BASIC and bashing on Python as a lot of people are currently doing to Julia. So if you claim to love python and hate julia because of libraries availability, you're just a user who loves python because its easy to use with add-ons (libraries), not necessarily the language design itself; and moreover you would have said same thing about python had you come into it exactly 10 years after the language was developed (just like you say about Julia now).
Now contrast the above with how Julia is evolving:
- DataFrames.jl one of the most popluar julia library for tabular data published an initial release in 2013, 1 year after Julia was created.
- Plots.jl one of the most popular julia library for plotting published an initial release in 2015, 3 years after julia was created.
- UnicodePlots.jl one of the most popular julia Unicode-based scientific plotting for working in the terminal published an initial release in 2015, 3 years after julia was created.
- Makie.jl one of the most popular julia high level plotting on the GPU published an initial release in 2018, 6 years after Julia was created.
- Flux.jl one of the most popular julia ML library published an initial release in 2017, 5 years after julia was created.
- Knet.jl one of the most popular julia deep learning framework published an initial release in 2016, 4 years after julia was created.
- Franklin.jl one of the most popular julia static website generator published an initial release in 2019, 7 years after julia was created.
- Genie.jl one of the most popular julia web framework published an initial release in 2018, 6 years after julia was created. There are over 8000 registered packages in the Julia ecosystem, so if you care to search well enough, you might find what you need. 10 years into a language and they're already over 8000 registered packages. This should tell you how fast the language is evolving.
The above comparisons are not given to say Julia is better than Python. The message it's trying to convey is that softwares and especialy open source softwares takes time. Since no one is getting paid for what they do, why do you think it will get out of the door just with a winkle? It takes time, so have that in mind. Anyways, if you want a library to be developed instantly for you, then talk to Julia Computing (but be ready to pay for it as its not free).
All the growth of those python libraries came as a trend of the growth in ML and AI, and python was the only simple and versatile language dominant among users to glue them to at that time - so you see the trend now. The libraries weren’t developed because of Python (most of the development were done in C++ and C, not in python as we all know), they were only glued to Python so users can easily call them. There are more libraries you know of in Python than the ones listed above, chances are they were initially released 20+ years after Python already existed. So yes Julia don’t have all the libraries you might need now, but its just 10 years old and chances are it has enough of the libraries to do most of the stuff you would need now (except in very niche cases where you either have to develop one yourself or wait for others interested in what you do to develop it as time goes on).
Perceived Problem 3: There are a lot of tutorials out there to learn other languages, Julia's tutorials on the internet is very small.
- Solution: Julia's documentation isn't the best you'll find on earth, but it does a good job of explicitly telling you what and what you need to know and master to effectively use the language. If you have a problem the docs doesn't address, then instantly ask questions on any of the channels highlighted in the solution to problem 1 (you're guaranteed of an answer in 30mins) and also pull a request for it on github and you're sure to get a review in a day (at most). Contrasting it with a language like python again, the tutorials boom on python only started gaining momentum 20 years after python already existed, as a result of the growth of ML and AI; and it didn't happened overnight to get to where it is, it took time.
Perceived Problem 4: Julia is 1-based indexing and the other languages are all 0-based indexing, so its hard to get used to this new behaviour and it will slows my productivity.
- Solution: Julia is a isn't the only language using 1-based indexing. FORTRAN, APL, MATLAB, R, Wolfram, Lua, COBOL, etc., all use 1-based indexing and they have millions of developers using these languages and great softwares out there (so you see its not much of a big deal as most people would try to make it). Within a month of development in Julia, you will probably get used to it. If you're still keen on using 0-based indexing, then JuliaArrays provides OffsetArrays.jl for you, so you can use 0-based indexing and even negative indexing as you wish to in Julia.
Perceived Problem 5: In other langauges I can quickly build standalone binaries, this is hard or not even possible in Julia.
- Solution: Honestly, there is work going underground for this and its best left to say "NO Julia can't build standalone binaries for now". Of course, there are multiple workarounds like PackageCompiler.jl if you currently wish to build one still, but it's not yet effective like other languages have.
Solution: You can do same and possibly even more in Julia. With Julia you can call most programming languages and use their code and libraries effectively.
- For Python, you can use PyCall
- For C, you can use ccall
- For C++, you can use Cxx and CxxWrap
- For R, you can use RCall
- For Java, you can use JavaCall
- For Mathematica/Wolfram, you can use MathLink
A lot more others showing you how to use other languages from Julia can be found here: JuliaInterop
To conclude, I will add this: If a language/environment is “good enough” for someone, no amount of persuasion will convince them to switch. In my experience, people who gravitate to Julia do so because it really solves the problems they had with other languages (in terms of speed, elegance, abstraction, "two-language problem"), or expect that it will, given time, so it is worth investing in.