Written for someone who already writes Go, Elixir, Python, Java and Node, and is starting Julia in 2026 (Julia 1.12 era). It assumes you know what a loop is; it does not assume you know what a Vector{<:Real} is or why A[:, 1] is faster than A[1, :].
Section 01 gets a working environment. Read 02 and 03 back to back, then write something. Come back to the rest as needed.
Conventions used here
julia>prompts are omitted; code blocks are things you can paste.#comments after a line show the result where useful.- Anything marked trap is a mistake most people make exactly once.
The one-paragraph orientation
Julia is a dynamically typed language with an aggressive JIT, whose organising abstraction is multiple dispatch rather than objects or modules. Types exist mainly to select methods and to let the compiler generate specialised machine code; you can ignore them and the program still runs, but you’ll leave a factor of 50 on the table. There is no class, no inheritance of data, no interface keyword, no null, and no BEAM. The standard library is large and numerics-heavy. Packages are just modules with a Project.toml, and the package manager is genuinely good.