Files
JuliaKurs23/index.qmd
2026-03-05 20:09:16 +01:00

151 lines
4.3 KiB
Plaintext

---
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: <https://news.mit.edu/2018/julia-language-co-creators-win-james-wilkinson-prize-numerical-software-1226>.
:::{.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/)