--- engine: julia --- # What is Julia? {.unnumbered} Julia is a relatively young, modern programming language designed for *scientific computing*. A small code example: ```{julia} #| error: false #| echo: false #| output: false using CairoMakie CairoMakie.activate!(type = "svg") set_theme!(size=(1600, 360)) ``` ```{julia} using CairoMakie a = [3, 7, 5, 3] b = [1, 3, 7, 4] δ = π/2 t = LinRange(-π, π, 300) f = Figure(size=(1600, 360)) for i in 1:4 x = sin.( a[i] .* t .+ δ ) y = sin.( b[i] .* t ) lines(f[1, i], x, y, axis=(; aspect = 1)) end f ``` ## History {.unnumbered} - 2009 Start of development at the *Computer Science and Artificial Intelligence Laboratory* of MIT - 2012 first release v0.1 - 2018 Version v1.0 - current: v1.11.4 from March 10, 2025 For the first release in 2012, the creators of Julia summarized their goals and motivation in a blog post [Why we created Julia](https://julialang.org/blog/2012/02/why-we-created-julia) interestingly. For a picture of *Stefan Karpinski, Viral Shah, Jeff Bezanson*, and *Alan Edelman*, please click here: . :::{.content-hidden unless-format="xxx"} Short summary: > We want a language that is > > - open source > - with the speed of C > - obvious, familiar mathematical notation like Matlab > - as usable for general programming as Python > - as easy for statistics as R > - as natural for string processing as Perl > - as powerful for linear algebra as Matlab > - as good at gluing programs together as the shell > - dirt simple to learn, yet keeps the most serious hackers happy Formal syntax : - Algorithmic thinking - Intuition for the efficiency and complexity of algorithms - Special features of computer arithmetic, particularly floating-point numbers - The "ecosystem" of the language - The art of debugging. ::: ## Why Julia? {.unnumbered} :::{.callout-tip .titlenormal icon=false} ## from [The fast track to Julia](https://cheatsheet.juliadocs.org/) "Julia is an open-source, multi-platform, high-level, high-performance programming language for technical computing. Julia has an LLVM-based JIT compiler that allows it to match the performance of languages such as C and FORTRAN without the hassle of low-level code. Because the code is compiled on the fly you can run (bits of) code in a shell or REPL, which is part of the recommended workflow. Julia is dynamically typed, provides multiple dispatch, and is designed for parallelism and distributed computation. Julia has a built-in package manager." ::: *open source* : - open development on [GitHub](https://github.com/JuliaLang/julia) - implementations for all common operating systems *high-performance programming language for technical computing* : - many functions for *scientific computing* built-in, - (intentional) similarity to Python, R and Matlab, - complex calculations in a few lines - simple interface to other languages like C or Python *a JIT compiler* : - interactive work possible: `read-eval-print loop (REPL)` with - just-in-time (JIT) compilation - thereby runtimes comparable to static languages like C/C++, Fortran or Rust *a built-in package manager* : - huge *ecosystem* of easily installable packages, e.g. - [Mathematical Optimization](https://jump.dev/) - [Machine Learning](https://fluxml.ai/) - [Data Visualization](https://docs.makie.org/stable/) - [Differential Equations](https://docs.sciml.ai/DiffEqDocs/stable/) - [Mathematical Modeling](https://sciml.ai/) ## A Small Selection of Online Materials on Julia {.unnumbered} - [Documentation](https://docs.julialang.org/en/v1/) - the official documentation - [Cheat Sheet](https://cheatsheet.juliadocs.org/) - "a quick & dirty overview" - [Introducing Julia](https://en.wikibooks.org/wiki/Introducing_Julia)-- a WikiBook - [The Julia Express](http://bogumilkaminski.pl/files/julia_express.pdf) - short version, Julia in 16 pages - [Think Julia](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html) - introduction to programming with Julia as a language - The [Julia Forum](https://discourse.julialang.org/) - For the eyes: [Examples for the Julia graphics package `Makie`](https://beautiful.makie.org/)