--- engine: julia julia: exeflags: ["--color=yes"] --- # What is Julia? {.unnumbered} ```{=typst} #set math.equation(numbering: none) // Some things need to be here to counter the Typst style ``` Julia is a relatively new, modern programming language designed for *scientific computing*. A 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: Development started at MIT's *Computer Science and Artificial Intelligence Laboratory* - 2012: First release (v0.1) - 2018: Version 1.0 released - February 2026: Version 1.12.5 In their 2012 inaugural blog post [Why we created Julia](https://julialang.org/blog/2012/02/why-we-created-julia), the developers provide an insightful and humorous overview of their objectives and motivations for creating Julia. A photo of *Stefan Karpinski, Viral Shah, Jeff Bezanson*, and *Alan Edelman* can be found 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 ***JIT compilation*** - supports interactive workflow via the `read-eval-print loop (REPL)` - just-in-time (JIT) compilation - resulting in 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/) ## Selected Links {.unnumbered} - [Documentation](https://docs.julialang.org/en/v1/) -- the official documentation - [Cheat Sheet](https://cheatsheet.juliadocs.org/) -- "a quick overview" - [Introducing Julia](https://en.wikibooks.org/wiki/Introducing_Julia) -- a WikiBook - [The Julia Express](http://bogumilkaminski.pl/files/julia_express.pdf) -- Julia in 16 pages - [Think Julia](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html) -- introduction to programming using Julia as first language - The [Julia Forum](https://discourse.julialang.org/) - For the eyes: [Examples for the Julia graphics package `Makie`](https://beautiful.makie.org/)