I’m always very surprised when I hear this…
- “Julia is not for beginners.”
- “Julia is for for people who make complex numeric calculus”
- “I have friends who use Julia, they are all very smart people”.
And ear this on a regular basis… But why the hell?
I learned both Python and Julia in parallel. I could compare. Julia is very beginner friendly. If you know about R, Matlab, and Python, you’ll even notice that Julia has sort of synthesized, selecting what they feel to be interesting and readable in each syntax.
Of course… It’s also true, Julia is “not only” a high level language. There are advanced options like macros and composite types. You don’t need to use them. You can pretty well just stay at the high level, like we do in Python, and ignore those things completely.
Does Julia makes it more complex to write code?
To be as unfair as possible, we will compare Julia to the current king of the high level languages: Python. Even tough Julia is more somewhere between C++ and Java in terms of execution speed.
Does Julia makes selecting a value in a dataframe more complex?
Well, maybe is it about coding a simple 3x3 matrix?
M = np.array([[1,2,3],[4,5,6],[7,8,9])# Julia
M = [1 2 3; 4 5 6; 7 8 9]
Does Julia makes it complicated to compute a determinant?
Does making a time serie seems more complicated either?
index = pd.DatetimeIndex(dates_array)
pd.Series(data, index=index)# Julia
So… Could it be expressions?
from sympy import symbols
x, y = symbols('x y')
expr = 2*x + y# Julia
expr = :(2*x + y)
Or is it optional typing that kills all the simplicity?
# Python > 3.5
def greeting(name: str) -> str:
return 'Hello ' + name# Julia
"Hello " * name
Or is it this “structs” thing that replace classes ? (Structs are also used by Go and, in practice, don’t bring any limitation compared to classes…)
# Pythonclass Person:
def __init__(self, name, age):
self.name = name
self.age = age
return "Hello my name is " + self.name
p1 = Person("John", 36)
"Hello my name is " * person.name
endp1 = Person("John", 36)
Julia does what Python does, way faster. Plus, in many cases, it has an even cleaner syntax.
So, what is it about?
We cannot deny it. Julia has a community of innovation lovers and, at least, most voicy people who use it seems to be pretty smart.
Yet, Julia is one of the most beginner friendly languages that exists. So, why the hell again?
As far as I can guess:
- Ok, let’s say I’m a data scientist who does predictive models for an insurance company. I learnt Python at school, know that Python is the skill asked for in job offers and my job is to manipulate data with existing libraries. As long as I have no performance issue, what is the incentive to switch to Julia?
- Now let say that I’m developing a business forecast tool were I will need some specific libraries and where the scope can evolve. Both Julia and Python “probably” provide the right librairies. However, I know that Python ones are more mature. As an example, I can build the API with Python’s Django, that reached its stable version in 2008, or with Julia’s Genie.jl, that reached it in 2020. That can be a reason to choose Python.
- However… Imagine I’m developing a new algorithm for patterns recognition in DNA and I don’t need so many specific package. Mostly linear algebra and ways to manage big amount of data. Nothing prevent me to choose Julia, as the language itself and this type of core libraries are now pretty mature and stable. Moreover, choosing Julia is a way to mitigate the risk of optimization issues that may end into the use of C++ inside the Python project...
- Saying that Julia’s syntaxe is better than Python’s can be debatable. What we can say, is that Julia’s syntax shines at mathematics: especially linear algebra and differential calculus. Julia compete with Matlab for mathematical expressiveness. There, Python is not so clean.
Overall, if you are seeking a comfortable job, if you want to do classical things smoothly, Python is the current market leader.
Julia indeed become more sexy when it come to develop new tools without relying too much on specific less mature libraries. If you also anticipate optimization issues, Julia even become a dreamed battle unicorn.
So, does it make Julia an “innovators” thing?
There is actually lots of innovators in the Julia’s community. Why? Because it provide clear advantage for innovation. Quick development, high performances, very readable…
Of course, aside material advantages, there is also probably something psychological, linked with the culture and the taste for innovative things.
I don’t want to say that innovators are “smarter” than data scientists doing regular jobs. What we can say is that, while there may be a bias, this is the feeling that you can have when you see what they do. Because there is often a “whaou” effect. Also, they are more visible in the community. This can explain why I ear such comments about Julia being used mostly by smart people.
Can Julia be a beginners’ thing?
Of course, Julia is also beginner friendly. We have seen that. I tested myself, since I learnt both as my first languages. I did not find Julia being more complex to learn that Python. I found it easier to use for beginner things actually.
Thinking that Julia is designed for innovators would be wrong. Julia is designed to be easy to use, and actually used by innovators.
Another thing I heard… In the past time, Julia evolved a lot and made it complex to maintain code in production. This was to be awaited from a language that did not reach the 1.0 version. Julia has now reached 1.x version and is stable.
And there is already tons of StackOverFlow answers as well as nice learning materials. I never struggled to find the answer to my questions so far.
So, Julia has nothing in it’s design that prevent it from being used by beginners. It is more a current context that makes it appealing to innovators.
If, at one point of time, schools start to teach Julia, we will know that Julia has penetrated in the market of “classical things” and the user base will change drastically.