Julia
A high-level programming language geared towards scientific computing.
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.
- First steps with Julia for numerical computing - Bogumił Kamiński: some cases for using Julia over other languages.
- A simple example of modeling dynamical systems
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?
- https://docs.julialang.org/en/v1/: official documentation
- Basic Julia tutorials from official YouTube channel
- MIT class: Introduction to Computational Thinking with Julia
- Videos featuring 3Blue1Brown, and LeiosOS.
- How to learn Julia, a new programming language - this video shows how an experienced programmer approach the task of learning a new language.
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
- Gadfly
- https://github.com/JuliaGraphs/GraphPlot.jl
- https://twitter.com/Rami_Krispin/status/1490107485566345216 - “Algebra of graphics” with grammar of graphics