Introduction to Julia

Julia is a high-level, high-performance, dynamic programming language designed for technical and scientific computing.

1.1 What is Julia?

Julia is a high-level, high-performance, dynamic programming language designed for technical and scientific computing. It aims to solve the "two-language problem": prototype in an easy language (Python/R/MATLAB) and rewrite in a fast one (C/Fortran). Julia is both.

Fast: JIT-compiled via LLVM to native code; performance comparable to C/Fortran.

Dynamic with optional type annotations.

Multiple dispatch as the core programming paradigm.

Composable packages: generic code works with types its authors never imagined (e.g., differential equations with GPU arrays, units, and dual numbers).

Metaprogramming: Lisp-like macros; code is data.

Built-in parallelism: tasks, threads, distributed processes, GPUs.

Excellent interop: call C/Fortran directly, Python and R via packages.

Unicode-friendly math notation: α, ∑, √, ∈.

Free & open source (MIT).

1.2 History

Jeff Bezanson, Stefan Karpinski, Viral Shah, Alan Edelman start Julia at MIT

"Why We Created Julia" blog post; public release Julia Computing founded (now JuliaHub) Julia 1.0 — stability guarantee

Julia team receives the Wilkinson Prize; multi-threading in 1.3

1.6: faster precompilation, parallel package loading 1.9: native code caching in package images (big latency improvement)

1.10 LTS; 1.11: Memory type, public keyword 1.12: juliac static compilation (experimental), further latency work

1.3 Who uses Julia?

NASA, the FAA (aircraft collision avoidance ACAS X), the Federal Reserve Bank of New York (economic models), Pfizer & Moderna (pharmacometrics via Pumas), AstraZeneca, BlackRock, CliMA (climate modeling), MIT, Celeste project (petascale astronomy), energy grid modeling, quantitative finance.

1.4 Why learn Julia?

Write readable math-like code that runs fast.

Best-in-class ecosystems for differential equations (SciML), optimization (JuMP), and scientific ML.

Learn multiple dispatch — a powerful way to structure programs.