EMZETT.
Login

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

Kapitel 8 von 8 im Kurs Julia (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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

GebietFunktionen
Zahlenabs sqrt round floor ceil div rem mod gcd lcm exp log sin cos clamp
Collectionslength push! pop! append! sort sort! unique reverse findall findfirst filter map reduce sum prod minimum maximum extrema cumsum zip enumerate
Stringsuppercase lowercase split join replace occursin startswith strip parse string repeat match
Dicts/SetsDict get haskey keys values delete! Set union intersect setdiff
Matrizensize reshape transpose * \ det inv eigvals zeros ones rand hcat vcat
Typentypeof isa <: Int Float64 convert promote supertype
I/Oprintln print open read readlines write readdir isfile
Zeittime() now() @time @elapsed sleep

Besonderheiten gegenüber Python/MATLAB

ThemaJulia
Indizesbeginnen bei 1, end für das letzte Element
Strings"..." für Strings, 'c' für Zeichen, * zum Verketten
Blöckeenden mit end, keine Einrückungspflicht
Broadcastingf.(x), x .+ y
Matrizenspaltenweise gespeichert, [1 2; 3 4]
Operator-Namen! = verändert Argumente, ? für Hilfe
Globale Variablenin Funktionen vermeiden (Leistung); im Skript-Scope global bei Zuweisung in Schleifen

Häufige Fehler

MeldungUrsache
MethodError: no method matching f(::String)keine Methode für diese Typen: Typen prüfen, Methode ergänzen
BoundsErrorIndex außerhalb (1-basiert!)
UndefVarError: x not definedVariable nicht definiert / falscher Scope (global/local)
InexactError: Int64(3.5)Float nicht verlustfrei in Int umwandelbar: round(Int, x)
ArgumentError: invalid base 10 digitparse(Int, "x"): tryparse nutzen
DimensionMismatchMatrixgrößen passen nicht
StackOverflowErrorRekursion ohne Abbruch
Erster Aufruf langsamJIT-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

Weiter im Kurs

Zurück: Projekte, Pakete und Ökosystem

Alle Kapitel: Julia im Überblick