Is Julia the Next Python or Matlab?
Will Julia remain a niche like Matlab and Fortran or can it have broad appeal like Python?
In a recent discussion William Heymann raised what I think is an interesting issue. He remarked that much like MATLAB and Fortran Julia exists as a separate little island within computing. What do we mean by that? All sorts of people use Python. For web servers, data science, machine learning, scripting and many other things. While nobody in the right mind would write a web service in Fortran.
Analogies are of course hard to get right. In terms of what Julia is to the computing world today, this analogy is not too far fetched.
But when thinking about technology it is not enough to think about how things are today, one must also contemplate what the future brings. I am old enough to remember well that when I personally picked up Python for the first time, it was also a little island disconnected from the rest of computing. I have met plenty of Java and C/C++ people who would have disparaged languages such as Python or Ruby over the years using much the same arguments that are today leveled against Julia.
It was clear to me when I picked up Python some 20 years ago that it was a language that would go places. It had a compelling feature-set, flexible, powerful and easy to use. What Python lacked back then it was obvious could be changed in time, as the user base and popularity grew.
This is worth keeping in mind when trying to place Julia in the computing landscape. Matlab was released back in 1984 and Fortran was first released in 1957. The first stable release of Julia came in 2018, a mere 2 years ago. That suggests it is a bit too early to judge what part of the computing landscape Julia will occupy.
Both Fortran and Matlab have had numerous years to go mainstream. We are not going to see a radical change in usage in the coming years.
The story for Julia is a very different one. Matlab and Fortran exists today in large part to complement each other. Fortran is not a very productive, and Matlab isn’t very fast. Julia is a far more expressive language than Matlab, while at the same time frequently outperforming Fortran. One of the crown jewels of Fortran, BLAS, which has been optimized for decades is in several instances being outperformed by Julia. In HPCWire there is this funny story:
a group of researchers decided to scrap their legacy climate code in Fortran and write it from scratch in Julia. There was some discussion around performance tradeoffs they might encounter in the move to a high level programming language. The group was willing to accept a 3x slowdown for the flexibility of the language. Instead, said Edelman, the switch produced 3x speedup.
For the time being momentum is on the side of Matlab and Fortran. People are not going to rewrite working code just for fun. But at every juncture where you are given a choice, who in their right mind will choose a language which is less productive and slower or something which is significantly less productive and only marginally faster?
So while anyone building a product today has to consider the current state of art, it would be foolish to assume that the current order of things will remain indefinitely. Julia isn’t the new Fortran or Matlab. Hell, Julia isn’t even the new Python. Why? While Python was a great general purpose programming language it was never fast, even compared to the competition.
Julia in many ways is the new C and Python all packaged into one language. Just as those language began by chipping away at the competition in the corners before gaining momentum, Julia will do the same. Many problems simply have no good alternative to Julia. Things like new large climate models and economic simulators are being built in Julia. These are things that require super computers to run, and where Fortran and C/C++ just isn’t delivering the performance and flexibility needed anymore.
Fortran, Matlab and Julia may all exists as computing islands today, but the key difference between the three is that that Julia will eventually leave its island status. Julia isn’t locked like Matlab by being a commercial product. It isn’t limited by the low level of Fortran. As Python and Ruby before it, it is a flexible glue language which can be used for anything. Web developers may not be falling over each other to use Julia at the moment, but quality web frameworks do exist for Julia. How many quality web frameworks exist for Fortran and Matlab?
In short, Julia’s island status is a temporary condition, but a permanent condition for Fortran and Matlab. No, in fact it is worse. They are islands experiencing a rising tide brought on by Julia, which will eventually submerge them under water.