Erste Grundbegriffe der Programmierung
Formale Sprachen und Quelltexte
Eine genau definierte Sprache, wie eine Programmiersprache, wird auch formale Sprache genannt.
Ein von einem Menschen verfaßter Text einer formalen Sprache kann als Quelle für weitere Verarbeitungsschritte dienen und wird daher auch als Quelle oder Quelltext bezeichnet. Die Zeit, während der ein Quelltext geschrieben wird, nennt man manchmal auch dessen Schreibzeit. Eine Datei, die eine Quelle enthält, wird auch Quelldatei genannt.
Prozesse
Ein Prozeß ist ein Vorgang, also ein Geschehen oder ein Ablauf. Er kann summarisch durch die von ihm bewirkten Veränderungen (seiner Wirkung , seinem Verhalten ) beschrieben werden, also etwa durch eine Beschreibung des Zustandes der Welt vor dem Beginn des Prozesses (des Vorzustands, des Voraussetzung oder der Vorbedingung ) und des Zustandes der Welt nach dem Ende des Prozesses (des Nachzustands).
Ein Prozessor ist ein System, das einen bestimmten Prozeß bewirken kann. Ein Prozessor kann eine Maschine sein, also etwa ein elektronischer Schaltkreis.
Prozesse sollen meist in Abhängigkeit von Vorzustand ablaufen: Beispielsweise soll eine bestimmte Heizung nur dann eingeschaltet werden, wenn die Temperatur unter einem bestimmten Wert liegt. Eine Regel, welche einen Prozeß in Abhängigkeit von Vorbedingungen ganz oder teilweise bestimmt, wird eine Operation genannt.
- Eine Operation
Vorzustand
|
V
.---------------------.
| Operation |
| |
| |
'---------------------'
| Wirkung
V
Nachzustand
Die Wirkung einer Operation ist nicht bei jedem Prozeß, der von ihr bestimmt wird, dieselbe, sondern hängt auch von dem Zustand der Umgebung beim Start und Ablauf des Prozesses ab.
- & Beispiel einer Operation
- Bei einer Blinddarmoperation wird je nach dem Befund (also dem vorgefundenen Zustand, also dem Vorzustand) eine Zieldrainage eingebracht oder nicht eingebracht. Diese Operation hat also nicht immer denselben Ablauf (also Prozeß) und Nachzustand: Ob nach der Operation eine Zieldrainage vorhanden ist oder nicht, hängt vom Vorzustand ab.
Programme
Eine Aufzeichnung (Niederschrift), die eine Operation angibt (bestimmt, festlegt), wird ein Programm genannt.
- & Beispiele für Programme
- Eine Anleitung für eine Blinddarmoperation kann als Programm für diese Operation aufgefaßt werden.
- Die Zivilprozeßordnung (ZPO) kann als ein Programm für Zivilprozesse verstanden werden.
- Ausführung eines Programms
Vorzustand
|
V
.---------------------.
| Operation |
Programm --------> | |
| |
'---------------------'
| Wirkung
V
Nachzustand
Wenn der Prozessor ein Programm (eine Operation) umsetzt, indem er einen mit den Festlegungen dieses Programms verträglichen Prozeß bewirkt, sagt man auch der Prozessor führe das Programm (die Operation) aus oder er arbeite es (sie) ab, oder das Programm (die Operation) würde (ab-)laufen.
Will man betonen, daß ein bestimmtes Programm in diesem Sinne von einem bestimmten Prozessor ausgeführt werden kann, dann nennt man es auch ein „von diesem Prozessor ausführbares Programm “. Man spricht kurz nur von einem „ausführbaren Programm “, wenn aus dem Zusammenhang klar ist, welcher Prozessor dabei vorausgesetzt wird.
- & Beispiele für Ausführbarkeit
- Eine Anleitung für eine Blinddarmoperation kann von einem Chirurgen ausgeführt werden, aber normalerweise nicht von anderen Personen.
- Die Zivilprozeßordnung kann von Zivilrichtern in einem Zivilprozeß ausgeführt werden, aber normalerweise nicht von anderen Personen.
Ein ausführbares Programm enthält also Festlegungen für die Ausführung eines Prozesses. Den Start eines von einem ausführbaren Programm gesteuerten Prozesses nennt man auch vereinfachend den Start dieses ausführbaren Programms. Der Start eines ausführbaren Programms führt also zu einem Prozeß, der durch dieses Programm gesteuert wird. Dabei wird—soweit wie möglich—das umgesetzt, was im ausführbaren Programm verlangt wurde.
Denn von einem Programm gesteuerten Prozeß setzt man oft auch – nicht ganz korrekt – mit diesem Programm gleich; so sagt man beispielsweise „Das Programm gibt einen Text aus.“ anstatt „Der von diesem Programm gesteuerte Prozeß gibt einen Text aus.“
Einen Zeitraum, zu dem ein Programm ausgeführt wird, nennt man auch „eine Laufzeit des Programms “. Ein Programm kann mehrmals ausgeführt werden, also mehrere Laufzeiten haben. Es kann auch niemals ausgeführt werden, also keine Laufzeit haben, Trotzdem spricht man manchmal auch von „der Laufzeit“ des Programms, so als würde ein Programm immer genau einmal ausgeführt werden.
Die gesamte Welt, wie sie sich während des Ablaufs eines Programms zeigt, wird auch als die Laufzeitumgebung dieses Programms bezeichnet. (Auch hier müßte man eigentlich von einer Laufzeitumgebung sprechen.)
Ein Programm steht nicht für einen bestimmten Prozeß, sondern für eine Operation, deren Wirkungen ja von der Laufzeitumgebung des Programms abhängen können. Dementsprechend ist es eine wichtige Eigenschaft von Programmen, daß sie nicht bei jedem Ablauf dasselbe tun, sondern ihr Verhalten von der Laufzeitumgebung abhängen kann.
Programmieren
Das Schreiben eines Programms wird auch als programmieren bezeichnet. Der Autor eines Programms wird auch als „Programmierer“ bezeichnet.
Programmieren ist also die Planung von Prozessen, die auch von beim Schreiben noch gar nicht bekannten Umständen der Laufzeitumgebung abhängen können.
Damit ist es ein wichtiger Aspekt der „Kunst des Programmierens“ alle Möglichkeiten der späteren Laufzeitumgebung vorhersehen zu können, und für alle das gewünschte Verhalten festgelegt zu haben. Denn, wenn das Programm läuft, muß der Programmierer nicht anwesend sein. Das Programm kann dann also keine Rückfragen mehr an den Programmierer stellen.
Syntax und Semantik
Die Syntax einer Programmiersprache ist die Menge aller Programme, die in einer Programmiersprache formuliert werden können.
Die Semantik einer Programmiersprache legt dann die Bedeutung eines Programme dieser Programmiersprache fest. (Die Bedeutung eines Programms ist normalerweise eine bestimmte Operation.)
Die Syntax und die Semantik einer Programmiersprache wird in einem Text festgelegt, der auch als die Spezifikation (also Festlegung, Bestimmung) dieser Programmiersprache bezeichnet wird.
Übersetzer
Quelltexte können meist nicht direkt als Prozeß ausgeführt werden, sie sind also oft keine für den Prozessor eines Computers direkt ausführbare Programme. Sie können aber zu einem solchen Programm übersetzt werden.
Ein Quelltext kann von einem Übersetzer (engl.: compiler, „Kompilierer“) in ein ausführbares Programm übersetzt werden. Das Ergebnis der Übersetzung wird allgemein Kompilat (also „das Kompilierte“) genannt.
- Übersetzung und Ausführung einer Quelle
Vorzustand
|
V
.------------------. .------------------.
| Uebersetzer | ausfuehrbares | Operation (durch |
Quelle ----->| |----- Programm ----> | den Prozessor |
| | | verwirklicht) |
'------------------' '------------------'
| Wirkung
V
Nachzustand
Da eine Quelle ein ausführbares Programm beschreibt, wird die Quelle manchmal auch selber als Programm bezeichnet. Solch ein „Programm“ ist aber nicht immer sofort ausführbar, wie ein ausführbares Programm es ist. (Man kann den Übersetzer aber auch gedanklich als einen Teil eines erweiterten Prozessors ansehen, für den der Quelltext dann ausführbar ist.)
Der Quelltext wird manchmal in Teile unterteilt, die jeweils einzeln übersetzt werden können und auch als Übersetzungseinheiten bezeichnet werden. Das Kompilat ist daher nicht immer gleich ein ausführbares Programm, da die Kompilate der einzelnen Übersetzungseinheiten eines Programms nach dem Übersetzen dann in einem weiteren Verarbeitungsschritt noch zu einem ausführbaren Programm verbunden werden müssen.
Interpretierer
Eine Prozessor muß kein Gerät sein, sondern kann auch durch ein Programm gebildet werden.
Falls ein als Gerät existierender Prozessor durch ein Programm nachgebildet (simuliert) wird, spricht man von einer Emulation dieses Prozessors und nennt das Programm einen Emulator.
Wenn ein Programm Programme ausführen kann, spricht man von einer Interpretation dieser Programm und das Programm wird es dann als Interpretierer (dieser Programme) bezeichnet.
Damit kann ein zunächst nicht von einem Gerät ausführbares Programm dann ausgeführt werden, ohne daß es zuvor übersetzt wird. Ob ein Programm ausführbar ist oder nicht, hängt also immer davon ab, auf welchen Prozessor sich dieses Attribut „ausführbar“ beziehen soll.
Implementationen
Die Techniken der Übersetzung und der Interpretation werden manchmal auch kombiniert, etwa, wenn eine Quelle zuerst übersetzt wird und das Kompilat dann noch interpretiert wird.
Will man allgemein ein System bezeichnen, das es erlaubt, einen Quelltext in einer Programmiersprache auszuführen, egal ob dieses System nun ein Übersetzer, ein Interpretierer oder eine Mischung von beidem ist, so spricht man von einer Implementation (also einer „Einrichtung“, „Umsetzung“ oder „Verwirklichung“) dieser Programmiersprache.
Entwicklungssysteme
Einen Arbeitsprozeß, in dem ein neuartiges Produkt bis hin zu Plänen und Prototypen, die dann eine Massenfertigung erlauben, erfunden und konstruiert wird, nennt man auch die Entwicklung dieses Produkts. Das Wort „Entwickeln“ wird aber manchmal auch einfach wie ein Synonym für das Programmieren verwendet.
Ein System (Programm oder Gerät), das bei der Entwicklung von Quelltext hilft, nennt man auch Entwicklungssystem . Meist erlaubt ein Entwicklungssystem es, Quelltext zu bearbeiten und diesen laufen zu lassen.
Übungsfragen
- / Schreibzeit und Laufzeit
- Welche der folgenden Aussagen trifft zu
o Es gibt keine bestimmte Reihenfolge von Laufzeit und Schreibzeit.
o Die Laufzeit eines Programms liegt vor seiner Schreibzeit.
o Die Schreibzeit eines Programms liegt vor seiner Laufzeit.