Was ist Julia?
Julia (2012 am MIT entwickelt, Version 1.0 im Jahr 2018) will das "Zwei-Sprachen-Problem" lösen: Wissenschaftler prototypen in einer bequemen Sprache (Python, MATLAB, R) und schreiben für die Geschwindigkeit alles in C oder Fortran neu. Julia soll so einfach wie Python und so schnell wie C sein. Das gelingt durch einen JIT-Compiler (LLVM), der Funktionen beim ersten Aufruf für die konkreten Typen übersetzt, und durch Mehrfachverteilung (multiple dispatch) als zentrales Sprachkonzept.
Einsatzgebiete: wissenschaftliches Rechnen, numerische Simulation, Differentialgleichungen (DifferentialEquations.jl), Optimierung (JuMP), Statistik und Datenanalyse (DataFrames.jl), Machine Learning (Flux.jl), Klimamodelle, Finanzmathematik.
Installation und Ausführen
Installiere Julia über juliaup (julialang.org/downloads).
julia # interaktive Konsole (REPL), beenden mit exit()
julia hallo.jl # Datei ausführen
julia -e 'println(1 + 2)'
julia --project=. skript.jl # mit ProjektumgebungIn der REPL: ?funktion öffnet die Hilfe, ] wechselt in den Paketmodus (add Plots), ; in die Shell.
Das erste Programm
println("Hallo Julia!")
name = "Mia"
println("Hallo, $(name)!")
println("2 + 3 = ", 2 + 3)
println("Interpolation: $(2 * 21) und $(uppercase(name))")
print("ohne Zeilenumbruch")
print("\n")
@show name
@show 1 + 1Ausgabe
Hallo Julia! Hallo, Mia! 2 + 3 = 5 Interpolation: 42 und MIA ohne Zeilenumbruch name = "Mia" 1 + 1 = 2
printlngibt mit Zeilenumbruch aus,printohne$nameund$(ausdruck)setzen Werte in Strings ein (Vorsicht:$name!liest den Namenname!; schreibe$(name)!)@showist ein Makro (beginnt mit@): Es zeigt Ausdruck und Wert- Kommentare:
# bis Zeilenende,#= mehrzeilig =# - Blöcke enden mit
end, Einrückung ist Konvention, nicht Syntax
Rechnen
println(7 + 2, " ", 7 - 2, " ", 7 * 2, " ", 7 / 2) # / ergibt immer Float
println(7 ÷ 2, " ", 7 % 3, " ", div(7, 2), " ", rem(-7, 3), " ", mod(-7, 3))
println(2^10, " ", 2.0^0.5, " ", sqrt(16), " ", cbrt(27))
println(abs(-3), " ", max(3, 9), " ", min(3, 9), " ", clamp(15, 1, 10))
println(floor(3.7), " ", ceil(3.2), " ", round(2.5), " ", round(3.5), " ", trunc(-3.7))
println(round(3.14159, digits = 2), " ", round(Int, 3.7))
println(exp(1), " ", log(100), " ", log10(1000), " ", log2(8))
println(sin(π / 2), " ", cos(0), " ", π)
println(1 // 3 + 1 // 6) # exakte Brüche (Rational)
println(3 + 4im, " ", abs(3 + 4im)) # komplexe Zahlen
println(0.1 + 0.2 == 0.3, " ", isapprox(0.1 + 0.2, 0.3))
println(typemax(Int64), " ", typemin(Int8))
println(2^62 * 2, " ", big(2)^100) # Überlauf vs. BigInt
println(5 ≤ 7, " ", 5 ≠ 7, " ", 1 < 2 < 3)Ausgabe
9 5 14 3.5 3 1 3 -1 2 1024 1.4142135623730951 4.0 3.0 3 9 3 10 3.0 4.0 2.0 4.0 -3.0 3.14 4 2.718281828459045 4.605170185988092 3.0 3.0 1.0 1.0 π 1//2 3 + 4im 5.0 false true 9223372036854775807 -128 -9223372036854775808 1267650600228229401496703205376 true true true
Julia erlaubt Unicode-Zeichen als Namen und Operatoren (π, ÷, ≤, ≠, ∑). In der REPL tippst du sie als \pi + Tab. Zahlen und Variablen verknüpfen sich wie in der Mathematik: 2x bedeutet 2 * x.
So führst du den Code aus: Datei hallo.jl speichern und mit julia hallo.jl ausführen (Julia von julialang.org). Mit julia allein startest du die interaktive Konsole.
Merke
- Julia: so einfach wie Python, so schnell wie C (JIT, LLVM), für wissenschaftliches Rechnen
println,print,@show; Interpolation mit$nameund$(ausdruck)/ergibt Float,÷oderdivGanzzahldivision,^Potenz,//Brüche- Unicode-Symbole sind erlaubt (
π,≤) - REPL:
?Hilfe,]Paketmodus
Aufgabe
Berechne die Fläche eines Kreises mit Radius 2,5 und gib sie auf drei Nachkommastellen aus.