Kapitel 1
Grundlagen
30
Sie beschreiben die Problemlösung meist nicht wirklich vollständig, sondern setzen vo-
raus, dass der Leser, d.h. die den Algorithmus ausführende Instanz, über ein gewisses
Allgemeinwissen verfügt und in der Lage ist, »Beschreibungslücken« selbstständig zu
füllen. So steht in dem Kochrezept nichts davon, dass man die Backofentür öffnen und
schließen muss. Das versteht sich von selbst und wird deshalb weggelassen.
Sie enthalten ungenaue Formulierungen, die man unterschiedlich interpretieren kann.
Was heißt z.B. »goldbraun«?
Auch ein Computerprogramm kann man als Algorithmus auffassen. Denn es »sagt« dem
Computer, was er zu tun hat. Damit ein Algorithmus von einem Computer ausgeführt wer-
den kann, muss er in einer Sprache formuliert sein, die der Computer »versteht« – einer
Programmiersprache. Im Unterschied zu »natürlichen« Sprachen, wie Deutsch oder Eng-
lisch, die sich in einer Art evolutionärem Prozess im Laufe von Jahrhunderten entwickelt
haben, sind Programmiersprachen »künstliche« Sprachen. Sie wurden von Fachleuten ent-
wickelt und sind speziell auf die Formulierung von Algorithmen zugeschnitten.
1.4 Syntax und Semantik
Eine Programmiersprache ist – wie jede Sprache – durch Syntax und Semantik definiert.
Die Syntax legt fest, welche Folgen von Zeichen ein Programmtext in der jeweiligen Sprache
ist. Zum Beispiel ist
kein gültiger Python-Programmtext, weil die Python-Syntax vorschreibt, dass in einem
arithmetischen Ausdruck zwischen zwei Zahlen ein Operator (z.B.
+, -, *, /) stehen muss.
Das Ausrufungszeichen
! ist aber nach der Python-Syntax kein Operator.
Dagegen ist die Zeichenfolge
ein syntaktisch korrektes Python-Programm. Die Syntax sagt aber nichts darüber aus, wel-
che Wirkung dieses Mini-Programm hat. Die Bedeutung eines Python-Programmtextes
wird in der Semantik definiert. Bei diesem Beispiel besagt die Semantik, dass auf dem Bild-
schirm die Zeichenkette
Schweinebraten mit Klößen ausgegeben wird.
1.5 Interpreter und Compiler
Python ist eine höhere Programmiersprache. Es ist eine künstliche Sprache für Menschen,
die Algorithmen formulieren wollen. Mit einer höheren Programmiersprache lässt sich auf
bequeme Weise Programmtext notieren, der leicht durchschaubar und gut verständlich ist.
Syntax und Semantik einer höheren Programmiersprache sind auf die Bedürfnisse von
Menschen zugeschnitten und nicht auf die technischen Spezifika der Maschine, die das Pro-
gramm ausführen soll.
a = 1 ! 2
print("Schweinebraten mit Klößen")
31
1.5
Interpreter und Compiler
Damit ein Programmtext – man spricht auch von Quelltext (source code) – vom Computer
»verstanden« wird und abgearbeitet werden kann, muss er in ein ausführbares Programm
übersetzt werden.
Dazu gibt es zwei unterschiedliche Methoden.
Ein Compiler übersetzt einen kompletten Programmtext und erzeugt ein direkt ausführba-
res (executable) Programm, das vom Betriebssystem geladen und gestartet werden kann. Bei
der Übersetzung müssen natürlich die Besonderheiten des Rechners, auf dem das Pro-
gramm laufen soll, berücksichtigt werden. Es gibt dann z.B. unterschiedliche Fassungen für
MS-Windows- und Unix-Systeme. Programmiersprachen, bei denen kompiliert wird, sind
z.B. Pascal, C, C++.
Abb. 1.3: Arbeitsweise eines Compilers
Ein Interpreter liest einen Programmtext Zeile für Zeile und führt (über das Betriebssystem)
jede Anweisung direkt aus. Wenn ein Programm gestartet werden soll, muss zuerst der Inter-
preter aufgerufen werden. Für jedes Betriebssystem gibt es zu der Programmiersprache
einen eigenen Interpreter. Wer ein Programm in einer interpretativen Sprache verwenden
möchte, benötigt also zusätzlich zu dem Anwendungsprogramm noch einen Interpreter.
Python ist eine interpretative Programmiersprache. Dies hat den Vorteil, dass ein und das-
selbe Programm auf allen Rechnerplattformen läuft. Als nachteilig könnte man aus Ent-
wicklersicht empfinden, dass der Quelltext einer Software, die man verkaufen möchte,
immer offen gelegt ist (open source). Damit besteht das Risiko, dass jemand illegalerweise
den Programmtext leicht verändert und ihn unter seinem Namen weiterverkauft. Das geis-
tige Eigentum des Programmentwicklers ist also schlecht geschützt. Auf der anderen Seite
gibt es einen gewissen Trend, nur solche Software einzusetzen, deren Quelltext bekannt ist.
Denn nur dann ist es möglich, etwaige Fehler, die erst im Lauf des Betriebes sichtbar wer-
den, zu finden und zu beseitigen. Wer Software verwendet, deren Quelltext geheim gehalten
ist, macht sich vom Software-Hersteller abhängig, und ist im Störungsfall »auf Gedeih und
Verderb« auf ihn angewiesen.
Programmtext in
höherer Programmier-
sprache
ausführbares
Programm
Betriebssystem
Compiler
Hardware
a = int(input())
b = a*a
print(b)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.