work on ch.5
This commit is contained in:
parent
70644d91bc
commit
842e43e771
6
.gitignore
vendored
6
.gitignore
vendored
@ -13,3 +13,9 @@ chapters/*.ipynb
|
|||||||
_extensions/julia/escfilter.sh
|
_extensions/julia/escfilter.sh
|
||||||
_extensions/julia/escfilter2.py
|
_extensions/julia/escfilter2.py
|
||||||
_extensions/julia/escfilter3.py
|
_extensions/julia/escfilter3.py
|
||||||
|
site_libs/
|
||||||
|
fonts/atkinson*
|
||||||
|
fonts/quicksand*
|
||||||
|
fonts/ubuntu*
|
||||||
|
|
||||||
|
/.luarc.json
|
||||||
|
2
.quartoignore
Normal file
2
.quartoignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Readme.md
|
||||||
|
makie.qmd
|
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
This 'Quarto Book'https://quarto.org/ about Julia Programming in German is online at https://www.math.uni-leipzig.de/~hellmund/juliabook/ https://www.math.uni-leipzig.de/~hellmund/juliabook/
|
||||||
|
|
||||||
|
It uses the `julia-color` Quarto extension https://gitea.math.uni-leipzig.de/hellmund/julia-color
|
@ -1,4 +1,4 @@
|
|||||||
# Arbeit mit Julia: Hilfe, REPL, Pakete, Introspection
|
# Arbeit mit Julia: REPL, Pakete, Introspection
|
||||||
|
|
||||||
|
|
||||||
@sec-tab
|
@sec-tab
|
||||||
@ -72,32 +72,38 @@ In einem Jupyter-Notebook sind die Modi sind als Einzeiler in einer eigenen Inpu
|
|||||||
|
|
||||||
## Der Paketmanager
|
## Der Paketmanager
|
||||||
|
|
||||||
- Über 9000 Pakete, siehe [https://julialang.org/packages/](https://julialang.org/packages/)
|
Wichtiger Teil des _Julia Ecosystems_ sind die zahlreichen Pakete, die Julia erweitern.
|
||||||
- Bevor sie mit `using Module` verwendet werden können, müssen sie heruntergeladen und installiert werden.
|
|
||||||
- Dazu dient der _package manager_ `Pkg`
|
- Einige Pakete sind Teil jeder Julia-Installation und müssen nur mit einer `using Paketname`-Anweisung aktiviert werden.
|
||||||
- Man kann ihn auf zwei Arten verwenden:
|
- Sie bilden die sogenannte _Standard Library_ und dazu gehören
|
||||||
- als normale Julia-Anweisungen, die auch in einer `.jl`-Programmdatei stehen können:
|
- `LinearAlgebra`, `Statistics`, `SparseArrays`, `Printf`, `Pkg` und andere.
|
||||||
|
- Über 9000 Pakete sind offiziell registriert, siehe [https://julialang.org/packages/](https://julialang.org/packages/).
|
||||||
|
- Diese können mit wenigen Tastendrücken heruntergeladen und installiert werden.
|
||||||
|
- Dazu dient der _package manager_ `Pkg`.
|
||||||
|
- Man kann ihn auf zwei Arten verwenden:
|
||||||
|
- als normale Julia-Anweisungen, die auch in einer `.jl`-Programmdatei stehen können:
|
||||||
```
|
```
|
||||||
using Pkg
|
using Pkg
|
||||||
Pkg.add("TollesPaket")
|
Pkg.add("PaketXY")
|
||||||
```
|
```
|
||||||
- im speziellen pkg-Modus des Julia-REPLs:
|
- im speziellen pkg-Modus des Julia-REPLs:
|
||||||
```
|
```
|
||||||
] add TollesPaket
|
] add PaketXY
|
||||||
```
|
```
|
||||||
|
- Anschließend kann das Paket mit `using PaketXY` verwendet werden.
|
||||||
|
- Man kann auch Pakete aus anderen Quellen und selbstgeschriebene Pakete installieren.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Einige Funktionen des Paketmanagers
|
### Einige Funktionen des Paketmanagers
|
||||||
|
|
||||||
| Funktion | `pkg` - Mode | Erklärung |
|
| Funktion | `pkg` - Mode | Erklärung |
|
||||||
|:------------------------|:----------------------|:----------------------------------------------------------|
|
|:------------------------|:--------------------------| :-------------------------------------------------------|
|
||||||
| `Pkg.add("MyPack")` | `pkg> add MyPack` | add `MyPack.jl` to current environment |
|
| `Pkg.add("MyPack")` | `pkg> add MyPack` | add `MyPack.jl` to current environment |
|
||||||
| `Pkg.rm("MyPack")` | `pkg> remove MyPack` | remove `MyPack.jl` from current environment |
|
| `Pkg.rm("MyPack")` | `pkg> remove MyPack` | remove `MyPack.jl` from current environment |
|
||||||
| `Pkg.update()` | `pkg> update` | update packages in current environment |
|
| `Pkg.update()` | `pkg> update` | update packages in current environment |
|
||||||
| `Pkg.activate("mydir")` | `pkg> activate mydir` | activate directory as current environment |
|
| `Pkg.activate("mydir")` | `pkg> activate mydir` | activate directory as current environment |
|
||||||
| `Pkg.status()` | `pkg> status` | list packages |
|
| `Pkg.status()` | `pkg> status` | list packages |
|
||||||
|
| `Pkg.instantiate()` | `pg> instantiate` | install all packages according to `Project.toml` |
|
||||||
|
|
||||||
|
|
||||||
### Installierte Pakete und Environments
|
### Installierte Pakete und Environments
|
||||||
@ -142,113 +148,17 @@ Danach können Sie mit `add` im Pkg-Modus auch Pakete installieren:
|
|||||||
|
|
||||||
```{julia}
|
```{julia}
|
||||||
#| eval: false
|
#| eval: false
|
||||||
] add TollesPaket
|
] add PaketXY
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Achtung! Das kann dauern! Viele Pakete haben komplexe Abhängigkeiten und lösen die Installation von weiteren Paketen aus. Viele Pakete werden beim Installieren vorkompiliert. Im REPL sieht man den Installationsfortschritt, im Jupyter-Notebook nicht.
|
Achtung! Das kann dauern! Viele Pakete haben komplexe Abhängigkeiten und lösen die Installation von weiteren Paketen aus. Viele Pakete werden beim Installieren vorkompiliert. Im REPL sieht man den Installationsfortschritt, im Jupyter-Notebook leider nicht.
|
||||||
|
|
||||||
|
|
||||||
## Eingebaute Hilfe und Informationen
|
|
||||||
Mit `?` und der `Tab`-Taste kommt man oft weiter.
|
|
||||||
## Hilfe und praktische Tipps
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### weitere Hilfe: `@which`, `fieldnames()`, `methods()`, `names()`, `pwd()`
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
## Der Julia JIT _(just in time)_ Compiler: Introspection
|
||||||
# Die Zuordnung zu einem Modul zeigt @which an:
|
|
||||||
@which(sqrt)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# Die Komponenten einer struct oder eines anderen zusammengesetzten Typs:
|
|
||||||
|
|
||||||
fieldnames(Rational)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
fieldnames(Complex)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# alle Methoden einer Funktion
|
|
||||||
|
|
||||||
methods(sqrt)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# alle Methoden einer Funktion bei bestimmten Argumenttypen. Die Argumenttypen müssen als Tupel angegeben werden
|
|
||||||
|
|
||||||
methods(sqrt, (Number,)) # Komma nötig für 1-elementiges Tupel
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# für einen Typ gibt methods() alle Konstruktoren aus
|
|
||||||
|
|
||||||
methods(Int64)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# names(Module) gibt alle von einem Modul exportierte Namen aus.
|
|
||||||
# genau wie auch
|
|
||||||
#
|
|
||||||
# ?Module
|
|
||||||
#
|
|
||||||
# funktioniert es erst, wenn das Modul mit 'using Module' geladen ist.
|
|
||||||
# Oft ist es besser, wenn die using-Anweisung in einer eigenen Zelle steht.
|
|
||||||
|
|
||||||
using Plots
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
names(Plots)
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# Julia kürzt den interaktiven Output.
|
|
||||||
# ein explizites print() zeigt alles:
|
|
||||||
|
|
||||||
print(names(Plots))
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# eine andere Möglichkeit der Ausgabe mit Überlänge in Jupyter
|
|
||||||
|
|
||||||
show(stdout, MIME("text/plain"), names(Plots))
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
# pwd() "print working directory" zeigt, in welchem Verzeichnis Julia gerade operiert.
|
|
||||||
#
|
|
||||||
# Wichtig für die Ein/Ausgabe mit Dateien, z.B. include()
|
|
||||||
|
|
||||||
pwd()
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
```{julia}
|
|
||||||
include("Jupyter.jl") # Datei mit Julia-Code einlesen und abarbeiten
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Der Julia JIT _(just in time)_ Compiler
|
|
||||||
|
|
||||||
Julia baut auf die Werkzeuge des _LLVM Compiler Infrastructure Projects_ auf.
|
Julia baut auf die Werkzeuge des _LLVM Compiler Infrastructure Projects_ auf.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user