Julia

“Looks like Python, feels like Lisp, runs like Fortran.”

A high-level programming language geared towards scientific computing.

https://julialang.org

Should I learn Julia?

https://twitter.com/actualdrdoctor/status/1372628150929084416?s=20

Arguments for Julia

Speed and reactive notebook

Julia is fast and easy to write. This allows us to use pluto.jl, a reactive notebook. Because results immediately update as we change code or values, it provides an awesome experience, even more interactive than Jupyter notebook.

Comparison with other languages

Compared with Python, It’s much faster out of the box and can do real parallel computing that is not constrained by the Global Interpreter Lock. It supports many mathematical operations (e.g., vectors, matrices, etc.) out of the box and allows using symbols, which is surprisingly convenient and useful.

Compared with lower-level languages like C, C++, Rust, etc., it is still much easier to write and feels closer to Python. It is also much more strongly geared towards mathematical and scientific computation. So I’d use Julia over C, Rust, etc.

Compared with Mathematica or Matlab, it is an open-source language and a more general purpose language. So, I’d use Julia over Mathematica or Matlab.

Compared with R, it is a more general purpose language and the language itself has (arguably) a much better design. Although R modules can be fast, pure R code can be quite slow. If you run statistical models, R may be a better option. For other, especially scientific computing, contexts Julia may be a better option.

Arguments against Julia

It’s still a young language without a huge user base like Python or R. There are not as many packages as other popular languages.

Current verdict

Try it! Maybe you can start adopting it for the part of the projects where you need to implement algorithms or run simulations without using other packages.

Where should I start?

Environments

Interactive notebooks

Julia provides a nice REPL, but can also be run with Jupyter as well as a reactive notebook called Pluto (similar to Observable notebook).

VSCode

Julia plugin offers a powerful development environment.

Libraries

Graphs/Networks

Visualization

Statistics