Kurz: - docs.julialang.org (Handbuch), Think Julia, Julia Data Science (kostenlos online) - JuliaAcademy, Exercism (Julia-Track), Discourse (discourse.julialang.org) - Pluto.jl für interaktives Lernen.
Teil des Kurses Julia
Syntax im Überblick
x = 5 Variable const PI2 = 2π Konstante
function f(a, b = 1; k = 2) ... end f(x) = x^2 Funktionen
if ... elseif ... else ... end cond ? a : b a && b a || b
for i in 1:10 ... end while ... end break continue
[x^2 for x in 1:5 if isodd(x)] Dict(k => v for ...) (x for x in 1:5)
struct P; x::Int end mutable struct abstract type T end
module M ... end using Statistics import Base: +
try ... catch e ... finally ... end throw(ArgumentError("..."))Wichtige Funktionen
| Gebiet | Funktionen |
|---|---|
| Zahlen | abs sqrt round floor ceil div rem mod gcd lcm exp log sin cos clamp |
| Collections | length push! pop! append! sort sort! unique reverse findall findfirst filter map reduce sum prod minimum maximum extrema cumsum zip enumerate |
| Strings | uppercase lowercase split join replace occursin startswith strip parse string repeat match |
| Dicts/Sets | Dict get haskey keys values delete! Set union intersect setdiff |
| Matrizen | size reshape transpose * \ det inv eigvals zeros ones rand hcat vcat |
| Typen | typeof isa <: Int Float64 convert promote supertype |
| I/O | println print open read readlines write readdir isfile |
| Zeit | time() now() @time @elapsed sleep |
Besonderheiten gegenüber Python/MATLAB
| Thema | Julia |
|---|---|
| Indizes | beginnen bei 1, end für das letzte Element |
| Strings | "..." für Strings, 'c' für Zeichen, * zum Verketten |
| Blöcke | enden mit end, keine Einrückungspflicht |
| Broadcasting | f.(x), x .+ y |
| Matrizen | spaltenweise gespeichert, [1 2; 3 4] |
| Operator-Namen | ! = verändert Argumente, ? für Hilfe |
| Globale Variablen | in Funktionen vermeiden (Leistung); im Skript-Scope global bei Zuweisung in Schleifen |
Häufige Fehler
| Meldung | Ursache |
|---|---|
MethodError: no method matching f(::String) | keine Methode für diese Typen: Typen prüfen, Methode ergänzen |
BoundsError | Index außerhalb (1-basiert!) |
UndefVarError: x not defined | Variable nicht definiert / falscher Scope (global/local) |
InexactError: Int64(3.5) | Float nicht verlustfrei in Int umwandelbar: round(Int, x) |
ArgumentError: invalid base 10 digit | parse(Int, "x"): tryparse nutzen |
DimensionMismatch | Matrixgrößen passen nicht |
StackOverflowError | Rekursion ohne Abbruch |
| Erster Aufruf langsam | JIT-Kompilierung (Normalfall); danach schnell |
$name! interpoliert name! | schreibe $(name)! |
Weiterlernen
- docs.julialang.org (Handbuch), Think Julia, Julia Data Science (kostenlos online)
- JuliaAcademy, Exercism (Julia-Track), Discourse (discourse.julialang.org)
- Pluto.jl für interaktives Lernen; JuliaHub für Pakete
- Wiki dieser Seite: Artikel zu Numerik und wissenschaftlichem Rechnen
Merke
- Julia kombiniert einfache Syntax mit C-ähnlicher Geschwindigkeit
- Mehrfachverteilung und Typen sind die zentralen Konzepte
- Broadcasting, Comprehensions und Pakete decken Numerik und Datenanalyse ab
- Auf Typstabilität und lokale Variablen achten
Quiz zur Selbstkontrolle
Wie lautet der Operator für Ganzzahldivision?
- ÷ (oder div) (richtig)
- //
- %
- \
Wofür wird Julia vor allem genutzt?
- Wissenschaftliches Rechnen und Datenanalyse (richtig)
- Mobile Apps
- Betriebssysteme
- Webdesign
Wo beginnen Indizes?
- Bei 1 (richtig)
- Bei 0
- Bei -1
- Frei wählbar
Weiter im Kurs
Zurück: Projekte, Pakete und Ökosystem
Alle Kapitel: Julia im Überblick