Julia from the perspective of a pythonista
I will start this post with a brief description of myself. I have been writing code in the Python programming language for about 3 years. My main interest is in artificial intelligence and in addition I am also interested in data science. As someone with a background in engineering, I am no stranger to scientific programming and I enjoy it. I am generally interested in programming languages and would like to know more about them.
Recently, after testing popular programming languages such as Java and C, I came across the Julia programming language. At first glance, this language seemed very promising, and the more I read about it, the more I became interested in it. First I want to describe the features of Julia that I like and then I will explain the things that I think prevent the full utilization of this beautiful programming language.
What I Like About Julia
In my opinion, the most attractive feature of Julia is its multiple dispatch idea. This feature makes me think differently about the problem when I write code in Julia, because I have not seen a similar feature in Python.
Another interesting feature of Julia is the ability to specify the type of variables optionally. This feature allows the programmer to specify the type of variables if he likes and in return enjoy high speed execution.
The next feature that makes Julia a promising programming language is its jit compiler. This compiler potentially allows the programmer to expect a fast code if the Julia features are used properly.
And last but not least, the Julia language has an active community around it. Although the size of its community is not as large as older languages, it can be expected to attract more people if Julia continues to address it’s problems.
What I Wish was Different about Julia
What motivated me to write this text was saying the problems I encountered in my first encounter with Julia. Hopefully, maybe people like me who have had these problems can help me.
The first problem was the lack of an efficient programming environment for Julia. For example, the only Julia IDE I found was Juno, which is actually an extension for the atom code editor. The disadvantage of juno is the long initial start time.
After my frustrating encounter with Juno, I decided to try the Julia extension for VS code. Unfortunately, this extention takes so long to start, so that the initial start of the extension takes about two minutes. The initial launch of the Python extension for VS code takes about 30 seconds.
As someone who spends most of coding time in the Jupyter notebook environment, I was very happy to have an official Julia kernel for Jupyter. But after installing this kernel, I realized that there is the problem of a very long initial start in this environment too. The start time for the Python kernel for Jupyter is almost instantaneous, while the Julia kernel takes about 30 seconds to start.
After watching computational thinking course in youtube, I became familiar with Pluto’s environment and told myself to try it as well. Surprisingly, I saw that in 2021 a coding environment does not have Dark Mode.
After searching for solutions to these problems, I realized that the Julia community is more interested in enduring the current situation, whereas in open source culture, when there are such problems, we should try to solve them with each other, not accept them or to say that very well, we do not have this feature at the moment and we have to wait for someone to write it for us.
After unsuccessful attempts to create a comfortable environment for coding in Julia, it was time to deal with the slowness of the first plot. However, compared to matplotlib, the next plots are also very slow.
After all these steps, I realized that ironically coding and achieving a specific goal in Julia is a slow process. In my opinion, in research work, development and coding time is much more important than execution time. In addition, for everything Julia offers, you will find a fast enough alternative in languages like Java, C, C++, or Python. I mean, contrary to what the Julia community thinks, the strength of Julia’s language is not its speed, but the beauty of its design and how it makes you think differently.
the worst feature I saw in Julia’s language is the lack of proper packages and libraries. For example, I was looking for a suitable package for symbolic algebra in Julia and found that instead of using the unique features of the Julia language, they suggest calling the Python SymPy module. The point is, if I want to work with SymPy, I can easily use it in Python, and I do not need to endure the long initial start times in Julia.
Finally, I think I should point out the ambiguity of the language documentation. So to understand many of its useful features we have to use sources other than official documentations. For example, to understand meta-programming in Julia, after much effort and failure to read the official documentations, I decided to read the wiki book, and it explained this much more clearly than the official documentations. I think one of the reasons for the lack of suitable packages for Julia is due to this ambiguity in the documentation. The more people understand the language, the more likely they are to produce better quality packages.
I find Julia language very beautiful and I hope it will be used more in the future. In my opinion, language, in addition to its role in achieving a specific goal, can greatly influence the way you think about problems. In the past, this different thinking existed in languages such as Lisp and Erlang, but unfortunately these languages are not widely used now. I think Julia could be a new way of thinking in the world of programming languages.
Finally, I hope that the current problems of this beautiful language will be solved with the help of a healthy community.