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/escfilter2.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
|
||||
@ -72,32 +72,38 @@ In einem Jupyter-Notebook sind die Modi sind als Einzeiler in einer eigenen Inpu
|
||||
|
||||
## Der Paketmanager
|
||||
|
||||
- Über 9000 Pakete, siehe [https://julialang.org/packages/](https://julialang.org/packages/)
|
||||
- Bevor sie mit `using Module` verwendet werden können, müssen sie 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:
|
||||
Wichtiger Teil des _Julia Ecosystems_ sind die zahlreichen Pakete, die Julia erweitern.
|
||||
|
||||
- Einige Pakete sind Teil jeder Julia-Installation und müssen nur mit einer `using Paketname`-Anweisung aktiviert werden.
|
||||
- Sie bilden die sogenannte _Standard Library_ und dazu gehören
|
||||
- `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
|
||||
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
|
||||
|
||||
| Funktion | `pkg` - Mode | Erklärung |
|
||||
|:------------------------|:----------------------|:----------------------------------------------------------|
|
||||
|:------------------------|:--------------------------| :-------------------------------------------------------|
|
||||
| `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.update()` | `pkg> update` | update packages in current environment |
|
||||
| `Pkg.activate("mydir")` | `pkg> activate mydir` | activate directory as current environment |
|
||||
| `Pkg.status()` | `pkg> status` | list packages |
|
||||
| `Pkg.instantiate()` | `pg> instantiate` | install all packages according to `Project.toml` |
|
||||
|
||||
|
||||
### Installierte Pakete und Environments
|
||||
@ -142,113 +148,17 @@ Danach können Sie mit `add` im Pkg-Modus auch Pakete installieren:
|
||||
|
||||
```{julia}
|
||||
#| 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.
|
||||
|
||||
|
||||
## Eingebaute Hilfe und Informationen
|
||||
Mit `?` und der `Tab`-Taste kommt man oft weiter.
|
||||
## Hilfe und praktische Tipps
|
||||
|
||||
----
|
||||
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.
|
||||
|
||||
|
||||
|
||||
### weitere Hilfe: `@which`, `fieldnames()`, `methods()`, `names()`, `pwd()`
|
||||
|
||||
|
||||
```{julia}
|
||||
# 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
|
||||
## Der Julia JIT _(just in time)_ Compiler: Introspection
|
||||
|
||||
Julia baut auf die Werkzeuge des _LLVM Compiler Infrastructure Projects_ auf.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user