-
Notifications
You must be signed in to change notification settings - Fork 24
/
nachwort.tex
79 lines (71 loc) · 4.08 KB
/
nachwort.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
% Diese Datei ist Teil des Buchs "Schreibe Dein Programm!"
% Das Buch ist lizenziert unter der Creative-Commons-Lizenz
% "Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0)"
% https://creativecommons.org/licenses/by-sa/4.0/deed.de
\chapter*{Nachwort}
\addcontentsline{toc}{chapter}{Nachwort}
\label{chap:nachwort}
Das war's. Erstmal. Wir hoffen, dass dieses Buch Dir helfen konnte,
programmieren zu lernen. Natürlich gibt es über das Programmieren
noch viel mehr, was es zu wissen und zu lernen gibt, aber nicht in
dieses Buch passte. Hier sind einige Vorschläge, wie es weitergehen
könnte zusammen mit einigen Empfehlungen für Bücher dazu:
Wenn Du schonmal anderweitig programmiert hast, dann hast Du
sicher in diesem Buch das Programmieren mit \emph{Zuweisungen an Variablen}
vermisst ebenso wie Ein- und Ausgabe, grafische
Benutzerschnittstellen und andere Interaktionen mit der
"<Außenwelt">. Dies sind im Programmierjargon alles sogenannte
\textit{Effekte}\index{Effekt}, und sie gehören zum täglichen
Handwerk des Programmierens hinzu. Leider machen Effekte das
Programmieren deutlich schwieriger und komplexer, wir müssen also
sparsam und sorgfältig mit ihnen umgehen. Den Umgang mit Effekten
kannst Du direkt im Racket-System üben, dazu gibt es jede Menge
Information im Hilfezentrum und es gibt auch
Literatur~\cite{FelleisenEtAll2013}. Ein guter Ansatzpunkt für das
Programmieren mit veränderbaren Variablen ist die Programmiersprache
\textit{Rust}, auch dazu gibt es ein gutes
Buch~\cite{KlabnikNichols2018}.
Viele Programmiersprachen arbeiten mit
\textit{Typen}\index{Typ}. Typen sind etwas ähnliches wie die
Signaturen dieses Buchs, also eine Notation für die zulässigen Ein-
und Ausgaben von Funktionen. Während bei uns die Signaturen zur
Laufzeit überprüft werden, passiert dies bei Typen schon bevor das
Programm ausgeführt wird. Typen sind ein mächtiges Hilfsmittel bei
der Datenanalyse und der Entwicklung korrekter Programme sein.
Typen sind aber auch gelegentlich gewöhnungsbedürftig, weil wir
ein Programm, das nicht typkorrekt ist, nicht ausprobieren können,
was gelentlich den Programmieraufwand erhöht und es erschwert,
Fehlerursachen zu finden. Bei den getypten Sprachen sind
\textit{Scala}~\cite{ChiusanoBjarnason2014} und
\textit{Haskell}~\cite{Hutton2016} besonders spannend und
lehrreich.
In diesem Buch haben wir nur kleine Programme geschrieben, die
jeweils in eine einzelne Datei passen. Wenn aus einem einfachen
Programm ein \emph{größeres System} wird, müssen wir uns Gedanken machen,
wie wir das so organisieren, dass wir nicht ständig alles im Kopf
behalten müssen, was in dem System so passiert, wenn wir es
weiterentwickeln. Diese Gedanken gehören unter den Oberbegriff
\textit{Softwarearchitektur}\index{Softwarearchitektur}, und auch da
gibt es noch mehr zu lernen. Spannend ist da aktuell eine Sammlung
von Techniken unter der Überschrift \textit{Domain-Driven
Design}~\cite{Evans2004}.
Außerdem gibt es natürlich viele andere Programmiersprachen mit teils
anderen Ideen als die Lehrsprachen dieses Buchs wie zum Beispiel
\emph{objektorientierte Programmierung} oder \emph{Logikprogrammierung}. Am
nächstliegenden sind die anderen Programmiersprachen des
Racket-Systems, darunter die "<Hauptsprache">, die auch Racket heißt.
Information darüber findest Du im Hilfezentrum im \textit{Racket
Guide} Auch für objektoriente Programmierung ist Racket ein guter
Ausgangspunkt, schau im Hilfezentrum in den Racket Guide unter
\textit{Classes and Objects}. Bei Racket lässt sich auch die Sprache
für Logikprogrammierung \textit{MiniKanren} installieren und es gibt
dazu ein tolles Buch~\cite{FriedmanEtAl2018}. Wer sich grundsätzlich
für Programmiersprachen und ihre Konzepte interessiert, ist mit
einschlägigen Büchern von Christian Wagenknecht~\cite{Wagenknecht2016}
und Norman Ramsey~\cite{Ramsey2022} aufgehoben. Ersteres bildet die
Konzepte sogar allesamt in Racket ab.
Viel Freude dabei!
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "i1"
%%% End: