-
Notifications
You must be signed in to change notification settings - Fork 2
/
gdi008_abstraction_de.tex
62 lines (58 loc) · 2.72 KB
/
gdi008_abstraction_de.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
\chapter{Abstraktion}
%
Die Informatik kombiniert all die genannten Grundlagen um höhere Konzepte
zu bauen. Dieser Ansatz nennt sich Abstraktion. Durch das Auslassen kleiner
Details auf der unteren Abstraktionsebene, können wir ein vereinfachtes Bild
in der aktuellen Abstraktion annehmen.
Ein Beispiel ist etwa das Schienennetz Österreichs. Möchte ein Informatiker
alle freigegebenen und besetzen Schienenblöcke visualisieren, so interessiert
ihn das spezifische Material des Gleises auf einem gewissen Streckenabschnitt
wenig. Ein wesentlich besserer Ansatz (um die Schienenblöcke auf dem
Schienennetz zu erfassen) ist es das Netz als einen Graphen darzustellen,
um die Details wegzulassen, die für ein bestimmtes Problem irrelevant sind.
Die Visualisierung des Graphen ist eine abstrakte Sichtweise auf das Netz.
\section{In der Programmierung}
%
Auch in der Programmierung benötigen wir durchgehend Methoden zur Abstraktion.
Dabei werden einzelne Instruktionssequenzen zu einem Block zusammengefasst,
welcher eine gewisse semantische Funktionalität repräsentiert. So kann etwa
eine kleine Unterfunktion (siehe \ref{algo:uppercase}) eine Konvertierung
der ASCII-Kleinbuchstaben in Großbuchstaben vornehmen. Und diese Funktionen
können mehrfach in verschiedenen Kontexten wiederverwendet werden,
um größere Konzepte zu bauen.
\begin{algorithm}[b]
\caption{Klein- in Großbuchstabenkonvertierung für ASCII in C.}
\label{algo:uppercase}
\begin{verbatim}
int uppercase(char *string)
{
int index;
for (index=0; index<strlen(string); index++) {
if (string[index] >= 97 && string[index] <= 122)
string[index] = string[index] & (~32);
}
return 0;
}
\end{verbatim}
\end{algorithm}
\section{In Bezug auf die theoretische Informatik}
%
Das selbe trifft auf Turingmaschinen zu. So sprechen wir bei universellen
Turingmaschinen davon, dass eine Turingmaschine eine andere Turingmaschine
simuliert. Wir haben dabei betont, dass wir auf die konkrete Kodierung der
simulierten Turingmaschine nicht eingehen. Dem liegt zugrunde, dass diese
Kodierungsform gewisse Details festlegen würde, die für das Verständnis
der universellen Turingmaschine unerheblich sind; äquivalent zur Abstraktion,
die Details versteckt.
Abstraktion ist ein fundamentales Konzept der Informatik. Ironisch meint
Kevlin Henney zu einem Zitat von David Wheeler,
\begin{quotation}
,,All problems in computer science can be solved by another level
of indirection except for the problem of too many layers of indirection`` \\
---Kevlin Henney
\end{quotation}
\begin{quotation}
,,Alle Probleme der Informatik können durch eine weitere Ebene von Umwegen
gelöst werden; außer das Problem von zu vielen Umwegen.`` \\
---frei ins Deutsche übersetzt
\end{quotation}