Discussion on "Why I no longer recommend Julia" by Yuri Vishnevsky

I think that having a “one-stop-shop” for most common tasks in numerical computing is really import in order to advance the adoption of Julia. Having a unified SciML ecosystem will greatly improve this! So thank you for your efforts @ChrisRackauckas !

I have been facing a problem when trying to convince students to use Julia.

First of all, I think Julia is a fantastic language! I love the simple syntax (much simpler than python’s which becomes a mess as soon you start using array). Types + multiple dispatch just immediately made sense to me (while python objects are hermetic, arcane nonsense to me).

But All of the students I interact with already know python+numpy+scipy (and many also know about numba).

How can I convince them to use Julia?

Well for-loops are horribly slow in python, while in Julia they are as fast as they can be. So that must be it! Except that there is numba, which solves that problem. (actually, it were the limitations of numba 6 years ago that made me move to Julia, but it seems that numba has greatly improved since then).

What about multithreading? Numba now also supports multithreading.

GPU programming? Again Numba + CuPy.

Now all of these things can be achieved in Julia. But at present, there is too much friction.

In my area of research the most common tasks are: 1) solving eigenproblems, 2) solving linear problems, 3) quadrature, 4) sometimes a fft or 6) an interpolation. If a student has to tackle those in Python, the student just has to write:

import numpy, scipy, numba, matplotlib

and that’s it.

In Julia? The student has to import one package for each task and I have to educate them on the differences between packages.

Should the student use ARPACK.jl, ArnoldiMethod.jl or KrylovKit.jl? What if we want inner eigenvalues? Well ARPACK.jl has shift-and-inverse but ARPACK.jl is also very fragile and prone to throw cryptic error messages. So ArnoldiMethod.jl or KrylovKit.jl it is. Except those have no shift-and-inverse implemented. So the student as to role its own. So what was a very simple task (calculating a few eigenvalues) becomes a lesson in numerical linear algebra. While I am going through this, the student has probably lost interest in this wonderful language and already solved the problem in python.

Plotting? Should the student use Plots.jl, PyPlot.jl, Makie.jl, VegaLite.jl, Gadfly.jl? Again in python, the student already knows there is matplotlib.

All of this is to say, that I really think that having a default, unified package for most numerical tasks will greatly improve this aspect and I believe it will make convincing students to adopt Julia much easier.

(sorry if this was a bit ranty)

32 Likes