-
Notifications
You must be signed in to change notification settings - Fork 24
/
i1pre.tex
207 lines (168 loc) · 8.45 KB
/
i1pre.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
% 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
\setcounter{chapter}{-1}
\chapter{Wie Du das Meiste aus diesem Buch herausholst}
Der Inhalt dieses Buchs ist über viele Jahre weiterentwickelt worden,
was dazu geführt hat, dass es sich von vielen anderen Büchern zur
Einführung in die Programmierung deutlich unterscheidet.
Bevor es mit dem eigentlichen Stoff losgeht, enthält dieses Kapitel
einige Hinweise dazu, wie Du am effektivsten damit umgehst, damit Du
möglichst schnell Deine eigenen Programme selbst schreiben kannst.
\section{Vorkenntnisse}
Das Buch richtet sich an alle, die Programmieren
lernen möchten. Es kann außerdem als Einführung in die sogenannte
\textit{funktionale Programmierung} für diejenigen dienen,
die bereits in einem anderen Paradigma (zum Beispiel objektorientierte
Programmierung) programmieren können.
Die benötigten Vorkenntnisse haben wir versucht, auf ein Minimum zu
reduzieren. Grundkenntnisse in Mathematik sind hilfreich, aber nur in
geringem Maße notwendig. Alles, was darüber hinausgeht, ist im Buch
erläutert.
\section{Anrede}
Dieses Buch benutzt in der Anrede "<Du"> und "<wir">. Mit "<Du"> bist
Du, also die Leserin, der Leser oder das Lesy gemeint. Mit "<wir"> meinen wir
uns, die Autoren. Wir benutzen oft Formulierungen wie "<Zunächst
schreiben wir eine Signatur">, wenn wir über die Beispiele im Buch
schreiben, die wir uns für Dich ausgedacht haben. Wenn das Buch Dich
mit "<Du"> anspricht, haben wir ein konkretes Anliegen für Dich.
\section{Software}
\label{sec:racket}
Die Programmierbeispiele dieses Buchs bauen auf der
Programmierumgebung DrRacket{}\index{DrRacket} auf, die speziell
für die Programmierausbildung entwickelt wurde.
DrRacket ist kostenlos im Internet auf
%
\begin{center}
\url{https://www.racket-lang.org/}
\end{center}
%
erhältlich und läuft auf Windows-, Mac- und Unix-/Linux-Rechnern.
Achte darauf, dass Du mindestens Version 8.6 bekommst. Das ist
besonders relevant, wenn Du einen anderen Installationsweg wählst, wie
zum Beispiel einen Package-Manager für eine Linux-Distribution.
\section{Programmiersprache}
Wer Programmieren lernt, muss sich mit ziemlich vielen Dingen
herumschlagen: den Konzepten einer konkreten Programmiersprache, den
dort benutzten Schreibweisen, einer Programmierumgebung und den
sonstigen Werkzeugen, die für das Programmieren benötigt werden.
Die meisten Programmiersprachen und deren Werkzeuge sind für
professionelle Entwickler entwickelt worden und setzen damit viele
Kenntnisse voraus, die Du ja erst noch lernen willst.
Aus diesem Grund verwendet der vorliegende Text eine Serie von
speziell für die Lehre entwickelten Programmiersprachen, die auf
\textit{Racket\index{Racket}} und \textit{Scheme\index{Scheme}}
basieren und beim Racket-System mitgeliefert werden. Im Lieferumfang von
Racket ist die Entwicklungsumgebung \textit{DrRacket} enthalten, die
es Dir erlaubt, einfach Programme in diesen Sprachen zu schreiben und
laufen zu lassen.
\section{Englisch}
Das Buch ist natürlich auf Deutsch, und auch die Programmierumgebung
DrRacket kann ihre Menüs und sonstigen Texte auf Deutsch darstellen.
Die Programmiersprachen benutzen allerdings englische Wörter, und wir
benutzen in Programmen englische Namen für alles mögliche. Das
erfordert keine fortgeschrittenen Englischkenntnisse. Bei
selteneren Wörtern liefern wir die Übersetzung. (Du kannst gern
deutsche Namen in Deinen Programmen benutzen.)
Außerdem haben wir noch nicht alle Fehlermeldungen ins Deutsche
übersetzt, arbeiten aber daran.
\section{Exkurse}
Generell wurde das Buch so geschrieben, dass die Kapitel und die
Abschnitte innerhalb der Kapitel aufeinander aufbauen. Ab und zu
jedoch gibt es Abschnitte (in der Regel solche mit Mathematik), die
wir interessant finden, die aber nicht notwendig sind, um das darauf
folgende Material zu verstehen. Diese Abschnitte sind mit dem Wort
"<Exkurs"> gekennzeichnet.
\section{Aufgaben}
Das Buch enthält viele Übungsaufgaben. Es ist unerlässlich, dass Du
zumindest einige davon bearbeitest, wenn Du lernen willst,
eigenständig zu programmieren.
Jedes Kapitel enthält in den Text eingebettet Aufgaben, die sich auf
den unmittelbar vorangehenden Stoff beziehen. (Das Zeichen
\(\square\) markiert jeweils, wenn die Aufgabe zu Ende ist und es mit
dem Text weitergeht.) Diese solltest Du bearbeiten, um
sicherzustellen, dass Du diesen Stoff verstanden hast. Von den
Aufgaben am Kapitelende kannst Du Dir die aussuchen, die Dir gefallen.
\section{Zusatzmaterial}
Das Buch ist aus dem \textsc{DeinProgramm}-Projekt entstanden, das
sich allgemein mit der effektiven Ausbildung im Programmieren
beschäftigt. Das Projekt hat seine Homepage hier:
%
\begin{center}
\url{https://www.deinprogramm.de/}
\end{center}
%
Dort kannst Du die aktuelle Version des Buches herunterladen und
weiteres Material, wie zum Beispiel Publikationen zum didaktischen
Konzept.
\section{Code}
In diesem Buch arbeiten wir mit vielen Beispielprogrammen, die zumeist
nach und nach entwickelt werden. Unsere langjährige Erfahrung hat
gelehrt, dass es ermüdend und vielleicht auch langweilig sein kann,
diese Programme nur zu lesen. Du wirst
wahrscheinlich mehr davon haben, wenn Du die Entwicklungen zumindest
teilweise am Rechner nachvollziehst und die Programme ausprobierst,
erweiterst oder damit experimentierst.
Du musst den Code dieser Programme dafür nicht abtippen,
sondern kannst ihn einfach herunterladen. Dafür gibt es zwei
Möglichkeiten: Auf der Webseite zum Buch gibt es den Code unter dem
Link "<Zusatzmaterialien"> zum Herunterladen. Den genauen Dateinamen
weisen wir im Text immer so aus:
\smallskip
\mentioncode{elemente/tile.rkt}
%
Falls Du eine elektronische Version des Buches liest, ist der
Dateiname außerdem ein Link: Draufklicken und Du kommst zum Code.
\section{Bürokratische Didaktik}
Wir wollen ehrlich sein: Programmieren ist eine komplexe Tätigkeit und
damit schwierig. Wir~-- die Autoren~-- verbringen bereits weit über
die Hälfte unseres Lebens damit und lernen immer noch dazu. Aber
Programmieren macht auch immens Freude, wenn man erfolgreich
eigenständig aus puren Gedanken etwas machen kann, das läuft und
kommuniziert. Der Lernaufwand lohnt sich also.
Aber niemand hat Freude daran, bei der Lösung einer Programmieraufgabe
steckenzubleiben und in einer Sackgasse zu landen. Wir wollen Dir
darum mit diesem Buch nicht einfach nur schöne Beispielprogramme
präsentieren, sondern Dir Schritt für Schritt vermitteln, \emph{wie}
sie geschrieben wurden und~-- vor allem~-- wie Du Deine eigenen schreibst.
Die Methode, die wir dafür entwickelt haben und erfolgreich
bei Hunderten von Programmieranfängerinnen und -anfängern angewendet
haben, wird Dir auf den ersten Augenblick enorm bürokratisch
erscheinen: Dieses Buch behandelt sozusagen die deutsche
Beamtenmethode des Programmierens.
Gelegentlich wirst Du Dich gegängelt fühlen und vielleicht auch etwas
genervt. Aber Du wirst (hoffentlich!) diese Techniken nach und nach
einsetzen können, um nicht nur Übungsaufgaben anderer zu lösen, sondern
auch Deine eigenen Ideen umzusetzen und Deiner eigenen Kreativität freien Lauf zu
lassen: Dafür brauchst Du die Methoden dieses Buchs, inklusive der
Bürokratie.
Zwei Elemente tragen besonders zum Lernerfolg bei:
%
\begin{itemize}
\item Die \textit{Konstruktionsanleitungen} schreiben Dir Schritte
vor, mit denen Du von einer Problemstellung zur Lösung kommst~-- die
deutschen Beamtenvorschriften sozusagen.
\item Die \textit{Mantras} sind wiederkehrende Prinzipien der
Programmierung, die es lohnt, immer parat zu haben. Zum Glück gibt
es nur eine Handvoll.
\end{itemize}
%
\section{Verbesserungen}
Ein letzter Punkt noch dazu, wie \emph{wir} das meiste aus dem Buch
herausholen: Falls Du im Buch einen Fehler bemerkst oder einen
Vorschlag hast, wie wir es besser machen könnten, freuen wir uns über
Rückmeldung. Das kannst Du entweder per E-Mail an
\href{mailto:sdp@deinprogramm.de}{\texttt{sdp@deinprogramm.de}} machen
oder~-- noch besser~-- über einen "<Issue"> oder "<Pull Request"> zum
Quelltext des Buchs. Diesen Quelltext, der derzeit über dem
Onlinedienst GitHub verwaltet wird, erreichst Du über die Webseite zum
Buch:
%
\begin{center}
\url{https://www.deinprogramm.de/sdp/}
\end{center}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "i1"
%%% End: