forked from deinprogramm/schreibe-dein-programm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
i1pre.tex
167 lines (133 loc) · 6.75 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
% Diese Datei ist Teil des Buchs "Schreibe Dein Programm!"
% Das Buch ist lizensiert 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 entwickeln kannst
\section{Vorkenntnisse}
Das Buch richtet sich an alle Leserinnen und Leser, die Programmieren
lernen möchten. Es kann außerdem als Einführung in die sogenannte
\textit{funktionale Programmierung} für Leserinnen und Leser 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. Anhang~\ref{cha:math} erläutert die im Buch
verwendeten mathematischen Notationen und Termini.
\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}
Die Programmierbeispiele dieses Buchs bauen auf der
Programmierumgebung \drscheme{}\index{\drscheme{}} auf, die speziell
für die Programmierausbildung entwickelt wurde.
\drscheme{} ist kostenlos im Internet auf der Seite
%
\begin{center}
\url{https://www.racket-lang.org/}
\end{center}
%
erhältlich und läuft auf Windows-, Mac- und Unix-/Linux-Rechnern.
\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.
Diese Lehrsprachen sind über die
\drscheme"=Entwicklungsumgebung Anfängerinnen und Anfängern besonders
gut zugänglich.
\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 fortschgeschrittenen Englisch-Kenntnisse. 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
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.
In jedem Kapitel gibt es Aufgaben am Ende: Davon kannst Du Dir die
aussuchen, die Dir gefallen. Es gibt aber auch Aufgaben mittendrin,
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, das Du diesen Stoff
verstanden hast.
\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 und sagen "<jetzt mach halt selber">, sondern Dir Schritt
für Schritt vermitteln, \emph{wie} das geht.
Die Methode, die wir dafür entwickelt haben und die erfolgreich
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 umsetzen 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{Zusatzmaterial}
Das Buch ist aus dem \textsc{DeinProgramm}-Projekt entstanden, dass
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 befindet sich weiteres Material zum Buch, insbesondere Quelltext
für alle Programmbeispiele zum Herunterladen und Publikationen mit
Hintergrundinformationen zum Projekt.
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "i1"
%%% End: