[an error occurred while processing this directive]

Eine Einführung in die Bedeutung der Begriffe „Programmieren“ und „Programm“ [] (Programm, Programmierung, programmieren), Lektion, Seite 720018
https://www.purl.org/stefan_ram/pub/programmieren_programmieren_de ist die kanonische URI dieser Seite.
Stefan Ram

Programme

Steuerung

Die Programmierung ist eine Form der Steuerung  von Diensten  durch Anweisungen.

Anweisung Der Auftrag, etwas zu erledigen.

Dienst Etwas, das Aufträge erledigt.

Nutzer Jemand, der einen Dienst nutzt.

Der Nutzer eines Dienstes kann diesen durch Anweisungen steuern.

Beispiele Ein Fahrer (Nutzer) steuert sein Auto (Dienst) durch Bewegen der Steuerelemente (Anweisungen). Ein Meisterkoch (Nutzer) steuert seinen Lehrling (Dienst) durch mündliche Kommandos (Anweisungen).

Einen maschinellen Nutzer nennt man auch einen Klienten.

Elementaranweisung

Eine einfache Anweisung, die ein Dienst direkt erledigen kann und die nicht aus weiteren Anweisungen aufgebaut ist, nennen wir Elementaranweisung. Ein komplexe Anweisung kann aus Elementaranweisungen aufgebaut werden.

Beispiel Ein Meisterkoch der seinen Lehrling anweisen will, ein kompliziertes Gericht X zu kochen, kann zu diesem nicht einfach sagen „Nun koche bitte das Gericht Mussaka!“. Der Lehrling kann diese Anweisung nicht ausführen, weil sie für ihn keine „Elementaranweisung“ ist, denn er weiß nicht, welche einzelnen Schritte zu erledigen sind, um das komplizierte Gericht zu kochen. Die Anweisung „Jetzt schneide die Kartoffeln in kleine Würfel!“ ist für den Lehrling hingegen ohne weiteres verständlich und daher eine Elementaranweisung. Der Meister kann den Lehrling dazu bringen, das komplizierte Gericht zu kochen, indem er dem Lehrling mehrere für ihn verständliche Elementaranweisungen gibt.

Direkte Steuerung durch Menschen

Im synchronen, interaktiven Direktmodus erhält ein Dienst eine einzelne Elementaranweisung von einem Nutzer. Der Nutzer wartet die Erledigung der Elementaranweisung ab, bevor er eventuell eine weitere Anweisung gibt.

Interaktive Dienststeuerung [sequence diagram]
  .-------------.        .-------------.  
| Nutzer | | Dienst | 
| ------ | | ------ | 
'-------------' '-------------' 
' ' 
' ' 
' Elementaranweisung 'Warten 
'--------------------->' 
Warten ' ' 
' Erledigungsmeldung 'Ausführen 
'<---------------------' 
' 'Warten 
' ' 
' Elementaranweisung ' 
'--------------------->' 
Warten ' ' 
' Erledigungsmeldung 'Ausführen 
'<---------------------' 
' 'Warten 
' u.s.w. '

Wartezeiten Durch diese Art der Steuerung entstehen Wartezeiten sowohl für den Nutzer als auch für den Dienst. Der Nutzer muß die Erledigung einer Elementaranweisung abwarten, bevor er die nächste Anweisung geben kann. Der Dienst muß nach der Erledigung einer Anweisung auf die nächste Anweisung des Nutzer warten.

Beispiel Ein Koch (Nutzer) weist seinen Lehrling (Dienst) an, Kartoffeln zu schälen (Anweisung). Ist der Lehrling fertig, fragt er seinen Meister nach dem nächsten Auftrag. Die beteiligten Personen müssen jeweils den nächsten Schritt des Gegenübers abwarten, bevor sie weiterarbeiten können: Der Lehrling muß nach der Erledigung einer Aufgabe auf die nächste Elementaranweisung des Meisters warten. Der Meister muß nach der Erteilung einer Elementaranweisung die Erledigung durch den Lehrling abwarten, bevor er die nächste Elementaranweisung erteilen kann.

Beispiel Ein Auto (Dienst) wird heute oft von einem menschlichen Fahrer (Nutzer) interaktiv gesteuert, der während der Fahrt kaum andere Aufgaben erledigen kann. Die Arbeitszeit des Fahrers ist also mindestens so groß wie die Fahrzeit.

Programmsteuerung

Programm Ein Programm  ist eine Anweisung zur Steuerung von Diensten. Im Gegensatz zur Elementaranweisung ist das Programm eine Struktur, die mehrere Elementaranweisungen enthalten kann. Oft besteht ein Programm aus vielen Elementaranweisungen, die in komplizierter Weise zusammengefügt sind.

Bei der Programmierung  schreibt ein Programmierer  ein Programm. Es kann dann ohne weitere Beteiligung des Programmierers von einem Ausführer  (Prozessor) verarbeitet werden, der die Elementaranweisungen schließlich an die Dienste weiterleitet oder auch selber erledigt.

Beispiel Ein Meisterkoch verreist und gibt im Sekretariat eine Notiz ab, die beschreibt, was der Lehrling in dieser Zeit tun soll. Das Sekretariat entnimmt dieser Notiz die einzelnen Elementaranweisungen und gibt immer eine Elementaranweisung an den Lehrling weiter. Hat der Lehrling eine Elementaranweisung erledigt, so erhält er die nächste Elementaranweisung. Die Notiz des Kochs ist dann also ein Programm, das vom Sekretariat interpretiert wird. Das Sekretariat ist bei der Abarbeitung des Programmes die Steuereinheit  und der Lehrling die Ausführungseinheit. Hier ist die Steuereinheit von der Ausführungseinheit unterschieden. Es kann auch sein, daß der Lehrling die Notiz selber liest und abarbeitet, in diesem Fall ist die Steuereinheit und die Ausführungseinheit in einer Person vereint.

Ein Rechner kann ein komplexes Steuerprogramm entgegennehmen und zunächst in seinem Speicher ablegen. Wird das Programm dann gestartet, so kann es den Rechner und am Rechner angeschlossenen Maschinen steuern. Dazu enthält es viele Elementaranweisungen und Regelungen, die besagen wann welche Elementaranweisung auszuführen ist. Viele Maschinen, wie z.B. Fahrkartenautomaten, sind heute auf diese Weise durch einen eingebauten Computer (microcontroller) gesteuert.

Beispiel Einige Forschungsgruppen arbeiten daran, Automobile so zu programmieren, daß sie selbständig fahren. Der Fahrer könnte dann die Fahrzeit frei nutzen, ohne sich mit der Steuerung des Automobils zu beschäftigen. Ist solch ein Programm einmal geschrieben worden, dann kann es gleich mehrfach zur Steuerung vieler einzelner Automobile verwendet werden.

Übungsfrage Was ist für einen Menschen einfacher: Die direkte Steuerung oder die Programmierung der Steuerung eines Automobils?

Eigenschaften der Programmsteuerung

Wiederverwendbarkeit Ein einziges  Programm kann mehrfach  zur Steuerung verschiedener Vorgänge verwendet werden. Dadurch kann die einmal  in die Programmierung investierte Arbeit mehrfach  verwendet werden.

Übungsfrage Wie lange braucht ein moderner Prozessor für die Erledigung eines einzelnen Aufrufs (eines Arbeitsschritts, z.B. einer Addition zweier Zahlen)?

schnelle Prozessoren Als Prozessor kommt heute nicht mehr nur ein Mensch, sondern auch eine Maschine in Frage. Die maschinellen Prozessoren können eine elementare Anweisung so schnell erledigen, daß sie gebremst werden würden, wenn sie nach jeder Aktion erst auf eine weitere Anweisung von einem Menschen warten müßten. Wenn solche Prozessoren ihre Anweisungen jedoch bei Bedarf jederzeit einem Programm entnehmen können, dann ist es ihnen möglich, praktisch ungebremst zu arbeiten.

Programmiersprache

Programme, die durch einen maschinellen Prozessor ausgeführt werden sollen, werden in einer formalen Sprache  notiert (kodiert, codiert).

Die meisten Prozessoren in Computern werden durch Bits im Computerspeicher gesteuert, ein Programm in dieser Maschinensprache  ist also eine Folge von Bits. Man kann es sich vorstellen, wie in der folgenden Abbildung.

Maschinenprogramm
01001000 11100111 00000111 00000000 00101110 00101111 
00000000 00010000 00101100 00101111 00000000 00010100  
00101010 00101111 00000000 00011000 00100000 00000111  
11010000 10000110 11010000 10000101 01001100 11011111  
00000000 11100000 01001110 01110101

Die Maschinenprogramme müssen für fast jeden Prozessortyp neu geschrieben werden. Um sich diese Arbeit zu ersparen, schreibt man Programme lieber in einer prozessorunabhängigen „höheren“ Programmiersprache, so daß sie dann für jeden Prozessor automatisch in seine Maschinensprache übersetzt werden können. Das folgende Beispiel zeigt eine Anweisung, die in der Programmiersprache „C“ geschrieben wurde.

Beispiel [C]
printf( "hello\n" );

Motivation

Welche Gründe kann es geben, um das Programmieren zu erlernen, obwohl es heute schon viele fertige Programm gibt?

Erwerbstätigkeit Wegen sich ändernder Umstände müssen immer wieder neue Programme geschrieben werden oder es müssen vorhandene Programme überarbeitet werden. Daher gibt es immer wieder Arbeit für Programmierer.

Im Jahre 2002 berichtet der Verlag „heise,“ daß nach einer Studie der Information Technology Association of America  (ITAA ) Programmierer die begehrtesten IT-Fachkräfte in den USA  sein werden. (heise "anw-07.05.02-001")

Spezialgebiete Für bestimmte spezielle Gebiete gibt es keine fertigen Programme, so daß hier die Erstellung eines individuell angepaßten Programmes nötig wird. Auch jemand, der eine neuartige Idee für ein Programm hat, kann natürlich noch kein fertiges Programm finden, das diese umsetzt, denn sonst wäre seine Idee ja nicht neuartig.

Anpassung Der Programmierer kann sein Programm immer wieder selber an eigene Wünsche anpassen, während der Benutzer eines fertigen Programmes sich mit dem zufrieden geben muß, was für ihn programmiert wurde.

Unterhaltung Programmieren kann eine für sich befriedigende, schöpferische Tätigkeit sein, wie das Musizieren.

Allgemeinbildung Programmieren ist die prägende Kulturtechnik unserer Zeit. Medien, wie Telefone, Fernsehsender oder das Internet arbeiten programmgesteuert, Fahrstühle, Autos und Haushaltsgeräte enthalten Mikroprozessoren, genauso wie von der Industrie genutzte Maschinen, Kraftwerke oder Flugzeuge. Daher ist ein Verständnis der Programmierung zum Verständnis der heutigen Welt notwendig.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz