Files
JuliaKurs23/index.qmd

134 lines
4.2 KiB
Plaintext

---
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: <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
*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/)