151 lines
4.3 KiB
Plaintext
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/)
|
|
|