Was ist Programmieren?

Was werden wir behandeln?
Eine Einführung in die Terminologie des Computers, einiges Historisches und ein kurzer Blick auf die Struktur von Computerprogrammen.

Zurück zur BASI(C)S

Computer-Programmierung ist die Kunst, dass ein Computer das macht, was du willst.

Auf der einfachsten Ebene besteht dies darin, eine Abfolge von Befehlen einem Computer zu übergeben,damit er Dinge tut. In der Microsoft-Welt MS DOS erzeugte der Benutzer eine Textdatei mit einer Liste von Kommandos, die BAT-Datei genannt wurde. Diese Kommandofolge wurde dann ganz einfach als Stapel (engl.:batch) ausgeführt - daher auch der Name. Du kannst dies auch noch heute in der Windows-Umgebung durchführen, aber in der Praxis ist das nur noch sehr selten zu sehen.

Du möchtest beispielsweise ein Dokument erstellen (so wie diesen Lehrgang), das aus mehreren getrennten Dateien besteht. Dein Textbearbeitungsprogramm erzeugt von jeder Datei, sobald du eine neue Version abspeicherst, eine Sicherheitskopie (backup) von der Vorgängerversion. Am Ende des Tages möchtest du die momentane Version deines Dokumentes (also alle zuletzt erstellten Dateien) in einem 'Backup'-Verzeichnis unterbringen. Zum Abschluss, um alles zu säubern, löschst du alle Backup-Dateien, um am nächsten Tag ordentlich deine Arbeit fortsetzen zu können. Eine einfache BAT-Datei würde das für dich erledigen:

COPY *.HTM BACKUP
DEL *.BAK

Wenn diese Datei SAVE.BAT heißen würde, dann würdest du einfach am Ende des Tages SAVE in die DOS-Eingabezeile ( DOS Prompt) eintippen und die Dateien würden abgespeichert und die Backups gelöscht werden. Das ist ein Programm.

Anmerkung: Benutzer von Linux oder anderen Betriebssystemen haben ihre eigenen Versionen von solchen Dateien, die oft mit dem Namen Shell-Skript bezeichnet werden. Unix Shell-Skripts sind viel leistungsfähiger als DOS BAT-Dateien, und sie unterstützen die meisten Programmiertechniken, die wir in diesem Kurs diskutieren werden.

Lasst mich das wiederholen

Wenn du jetzt durch das alles etwas abgeschreckt bist, bitte sei es nicht. Ein Computerprogramm ist eine einfache Ansammlung von Anweisungen, um dem Computer zu sagen, wie er eine bestimmte Aufgabe erledigen soll. Es ist genauso wie ein Kochrezept: eine Ansammlung von Anweisungen, die dem Koch sagen, wie er die Speise zubereiten soll. Es beschreibt die erforderlichen Zutaten (die Daten) und die Abfolge der Verfahrensschritte (der Prozess), der benötigt wird, um die Zutaten in einen Kuchen oder was anderes umzuwandeln. Programme sind vom Konzept her ganz ähnlich.

Einiges Historisches

Genau wie du zu einem Freund in einer Sprache redest, 'sprichst' du auch zu einem Computer in einer Sprache. Die einzige Sprache, die der Computer versteht, wird Binärcode genannt und davon gibt es mehrere unterschiedliche Dialekte - das ist der Grund, warum irgendein cooles iMac-Programm nicht auf deinem PC läuft und umgekehrt. Der Binärcode ist unglücklicherweise für Menschen sehr schwer zu lesen und zu schreiben, so daß wir eine vermittelnde Sprache verwenden müssen, die dann in Binärcode übersetzt wird. Genauso geschieht das bei einem Gipfeltreffen zwischen dem amerikanischen Präsidenten und dem russischen Präsidenten - der Amerikaner redet, dann wiederholt ein Dolmetscher das Gesagte auf Russisch. Der Russe antwortet und der Übersetzer wiederholt den Satz, diesmal auf Englisch.

Und erstaunlicherweise heißt das Ding, das unsere vermittelnde Sprache in Binärcode übersetzt, auch Übersetzer (Interpreter). Und gewöhnlicherweise benötigt man einen Dolmetscher zum Übersetzen von Englisch in Russisch und einen anderen von Arabisch nach Russisch.Genauso benötigt man unterschiedliche Computer-Interpreter zum Übersetzen von Python in Binärcode und zum Übersetzen von BASIC in die Binärsprache.

Die allerersten Programmierer mussten tatsächlich selbst den Binärcode eintippen, das als Maschinencode-Programmierung bekannt und unglaublich schwierig ist. Die nächste Stufe war die Entwicklung eines Übersetzers, der einfach englischsprächige Entsprechungen des Binärcodes in Binärcode umwandeln konnte, so dass man anstelle sich erinnern zu müssen, dass der Code 001273 05 04 entsprechend add 5 to 4 (addiere 5 zu 4), der Programmierer jetzt schreiben konnte: ADD 5 4. Diese einfache Verbesserung machte das Leben viel leichter und diese Code-Systeme waren tatsächlich die ersten Programmiersprachen, jeweils eine andere für jeden Computer-Typ. Diese wurden bekannt als Assembler - Sprachen und Assembler-Programmierunng wird noch heute für ganz spezielle Programmieraufgaben eingesetzt.

Dennoch war das sehr primitiv und dadurch wurde dem Computer mitgeteilt, was er auf der Hardware-Ebene tun soll - das Transportieren von Bytes von einem Speicherort zum anderen, diese Byte zu jenem zu addieren usw. Es war immer noch sehr schwierig und erforderte einen großen Programmieraufwand, damit der Computer einfachste Aufgaben erledigen konnte.

Nach und nach schufen Computerwissenschaftler höherentwickelte Computersprachen, die die Arbeit leichter machten. Dies geschah gerade zu derselben Zeit, als die Anwender sich immer komplexere Aufgaben ausdachten, die die Computer lösen mussten. Dieser Wettstreit zwischen den Computerwisenschaftlern und den Anwendern dauert immer noch an und ständig erscheinen neue Programmiersprachen. Dies macht das Programmieren interessant, macht aber auch wichtig, dass du als Programmierer sowohl die Konzepte der Programmierung als auch die Anwendung dieser in der jeweiligen Programmiersprache verstehst.

Ich werde jetzt einige dieser Konzepte beleuchten, aber wir werden auch während dieses Kurses zu diesen zurückkehren.

Die allgemeinen Eigenschaften von Programmen

Schon vor langer Zeit erschien Edsgar Dijkstra mit einem Konzept, das man strukturierte Programmierung nennt. Dies besagt, dass alle Programme auf die folgende vier Arten strukturiert werden können:

Neben diesen Strukturen benötigen Programme noch einige Zusätze, damit sie sinnvoll eingesetzt werden können:

Sobald du diese Konzepte verstehst und wie eine bestimmte Prgrammiersprache diese verwendet und ausführt, dann bist du in der Lage, ein Programm zu schreiben.

Klarstellung einiger Begriffe

Wir haben schon gesagt, dass Programmierung die Kunst ist, den Computer dazu zu bringen, Dinge zu tun, die wir wollen; aber was ist ein Programm?

Tatsächlich gibt es zwei unterschiedliche Begriffe von dem, was man Programm nennt. Der erste ist derjenige, der für den Anwender sichtbar ist - eine ausführbare Datei, die installiert ist und beliebig oft ausgeführt werden kann, um eine bestimmte Aufgabe zu erfüllen. Zum Beispiel spricht der Anwender davon, dass er sein Textverarbeitungsprogramm laufen läßt. Das andere Verständnis von einem Programm ist wie es von einem Programmierer gesehen wird: das ist eine Textdatei mit Instruktionen an den Computer, geschrieben in irgeneiner Programmiersprache, die in eine ausführbare Datei übesetzt werden kann. Wenn du also über Programme redest, mache dir immer klar, was du darunter genau verstehst.

Grundsätzlich schreibt ein Programmierer ein Programm in einer hochentwickelten Sprache, das in Bytes interpretiert wird, die der Computer versteht. Im technischen Jargon generiert der Programmierer einen source code (Quellcode) und der Interpreter generiert object code (Objektcode). Manchmal hat der Objektcode auch andere Namen, wie P-Code, Binärcode oder Maschinencode.

Der Übersetzer hat meherere Namen, einer ist Interpreter and der andere ist Compiler. Diese Begriffe beziehen sich auf die beiden unterschiedlichen Techniken der Generierung von Objekcode aus Quellcode. Gewöhnlicherweise ist es so, daß der Compiler den Objektcode so produziert, dass er selbständig laufen kann (ein "executable file" - eine ausführbare Datei - ein weiterer Begriff), wohingegen ein Interpreter während des Ablaufens eines Programmes ständig mitlaufen muss. Der Unterschied zwischen diesen Begriffen wird noch verwirrender, wenn man erfährt, dass manche Compiler jetzt auch noch einen Interpreter erforderlich machen, um eine endgültige Übertragung durchführen zu können und einige Interpreter compilieren einfach ihren Sourcecode in einen temporären Objektcode und führen ihn dann aus.

Von unserem Standpunkt aus macht es keinen großen Unterschied, wir schreiben einen Sourcecode und benutzen ein Werrkzeug, das es dem Computer erlaubt, diesen zu lesen und auszuführen.

Die Struktur eines Programms

Die exakte Struktur eines Programmes hängt von der Programmiersprache und der Umgebung ab, in der du es ablaufen lässt. Wie auch immer, es gibt einige grundsätzliche Prinzipien:

Die meisten Programme entsprechen einer der beiden folgenden Strukturen:

Batch-Programme

Diese werden typischerweise von einer Kommandozeile aus gestartet (oder automatisch über ein Steuerbefehl) und weisen folgendes Muster auf:

Ereignisgesteuerte Programme

Die meisten GUI-Systeme (und eingebetteten Kontrollsysteme - genauso wie deine Mikrowelle, deine Kamera usw.) sind ereignisgesteuert. Dabei sendet das Betriebssystem Ereignisse an das Programm und das Programm reagiert entsprechend darasuf, sobald diese ankommen. Ereignise können auch Dinge sein, die der Anwender bewirkt - wie das Klicken mit der Maus oder das Drücken einer Taste - oder Dinge die das System selbst tut, wie das Erneuern der Zeitanzeige oder das Auffrischen des Bildschirmes.

Ereignisgesteuerte Programme sehen grundsätzlich folgendermaßen aus:

Zur Erinnerung
  • Programme steuern den Computer
  • Programmiersprachen erlauben uns zum Computer zu 'sprechen' und zwar auf einer Ebene, die näher an der Art ist, wie Menschen Denken als wie Computer 'denken'
  • Programme operieren mit Daten
  • Programme können entweder Batch-orientiert oder ereignisgesteuert sein

zurück  weiter  Inhalt


Solltest du Fragen oder Anmerkungen zu dieser Seite haben, schicke eine Nachricht in Englisch an den Autor alan.gauld@yahoo.co.uk oder oder auf Deutsch an den Übersetzer bup.schaefer@freenet.de