134 lines
4.2 KiB
Plaintext
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/)
|