EMZETT.
Login

Kurz: Julia (2012 am MIT entwickelt, Version 1.0 im Jahr 2018) will das “Zwei-Sprachen-Problem” lösen.

Teil des Kurses Julia

Kapitel 1 von 8 im Kurs Julia. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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 Projektumgebung

In der REPL: ?funktion öffnet die Hilfe, ] wechselt in den Paketmodus (add Plots), ; in die Shell.

Das erste Programm

hallo.jl

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 + 1

Ausgabe:

Hallo Julia!
Hallo, Mia!
2 + 3 = 5
Interpolation: 42 und MIA
ohne Zeilenumbruch
name = "Mia"
1 + 1 = 2
  • println gibt mit Zeilenumbruch aus, print ohne
  • $name und $(ausdruck) setzen Werte in Strings ein (Vorsicht: $name! liest den Namen name!; schreibe $(name)!)
  • @show ist 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.

Merke

  • Julia: so einfach wie Python, so schnell wie C (JIT, LLVM), für wissenschaftliches Rechnen
  • println, print, @show; Interpolation mit $name und $(ausdruck)
  • / ergibt Float, ÷ oder div Ganzzahldivision, ^ Potenz, // Brüche
  • Unicode-Symbole sind erlaubt (π, ≤)
  • REPL: ? Hilfe, ] Paketmodus

Übungsaufgabe

Berechne die Fläche eines Kreises mit Radius 2,5 und gib sie auf drei Nachkommastellen aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Weiter: Typen, Strings und Kontrollfluss

Alle Kapitel: Julia im Überblick