Vorlesunggskript 02
Interaktive und nichtinteraktive Programme
Ein Programm ist, grob gesagt, eine Datei auf Ihrem Computer, die eine Liste von Instruktionen enthält, die dem Computer sagen, was er tun soll. Wenn Sie das Programm starten, führt der Computer diese Instruktionen aus. Verschiedene Programme haben verschiedene Zwecke. Ein Mediaplayer zum Beispiel spielt Audio- und Videodateien ab, ein Zeichenprogramm dient dem Zeichnen von Bildern, usw. Der Grund dafür, dass Computer so vielfältige Maschinen sind, liegt darin, dass man immer neue Programme auf ihnen installieren kann. Darüber hinaus kann man sich neue Sachen ausdenken, die der Computer können sollte, und ein eigenes Programm schreiben, um ihm zu sagen, wie.
Ein wichtiger Unterschied besteht zwischen interaktiven und nichtinteraktiven Programmen. Die meisten Programme, mit denen Sie bisher gearbeitet haben, sind wahrscheinlich interaktiv. Wenn ein interaktives Programm mit einer Aufgabe fertig wird, dann läuft es weiter und wartet auf die nächste Aktion der Benutzerin. Denken Sie zum Beispiel an ein Textverarbeitungsprogramm: Wenn Sie einen Buchstaben tippen, fügt das Textverarbeitungsprogramm ihn in das Dokument ein. Wenn Sie eine Pfeiltaste drücken, bewegt das Programm den Cursor. Wenn Sie auf eine Schaltfläche klicken, führt es die zugehörige Funktion aus. Zwischen diesen Aktionen wartet das Programm mit unendlicher Geduld und hört erst dann auf zu laufen, wenn Sie es beenden. Auch Smartphone-Apps sind interaktiv: sie reagieren auf Aktionen wie Berührungen, Gesten und Sprachkommandos und warten dazwischen auf die nächste Aktion. Auch Web-Apps sind eine Art interaktiver Programme: sie laufen in Ihrem Browser und reagieren auf Klicks und Tastendrücke, bis Sie den jeweiligen Tab schließen. Ein weiteres Beispiel für ein interaktives Programm ist ein Chatbot: Der Benutzer sagt etwas, der Chatbot antwortet und wartet dann auf die nächste Äußerung des Benutzers.
Nichtinteraktive Programme dagegen warten nicht auf Benutzereingaben. Man muss ihnen daher den gesamten Input am Anfang übergeben, wenn man sie startet. Dann läuft das Programm (das kann Mikrosekunden oder Wochen dauern, je nachdem, wie komplex die Aufgabe ist), generiert seinen Output und beendet sich dann, bis man es auf einem neuen Input neu startet.
Wenn Sie ein nichtinteraktives Programm starten und ihm den Input übergeben,
machen Sie das normalerweise von einer Kommandozeile aus. Die
folgende Abbildung zeigt zum Beispiel eine Kommandozeile. Der Benutzer gibt
wc data.txt
ein und startet damit das nichtinteraktive Programm
wc
auf der Input-Datei data.txt
. wc
ist
dazu da, die Wörter, Zeilen und Zeichen in Dateien zu zählen, es gibt also
diese drei Zahlen als Output aus, gefolgt von dem Dateinamen. Damit hat
wc
seine Aufgabe erfüllt, es beendet sich, und eine neue
Kommandozeile erscheint.
Jetzt kennen Sie schon die drei grundlegenden Arten für Benutzer, mit einem Programm zu interagieren:
- Interaktiv durch ein GUI (graphical user interface, grafische Benutzerschnitstelle), wie bei dem Textverarbeitungsprogramm, bei Smartphone-Apps oder bei Web-Apps.
- Interatkiv durch ein TUI (text-based user interface, textbasierte Benutzerschnittstelle), wie beim dem Chatbot.
- Nichtinteraktiv durch ein CLI (command-line interface, Kommandozeilenschnittstelle) – die Interaktion ist hier darauf begrenzt, dem Programm am Anfang einen Input mitzugeben und auf seinen Output zu warten.
CLIs sind minimalistisch. Sie stellen den Input und den Output in den Mittelpunkt und sehen ansonsten nicht nach viel aus. Sie verwenden keine Grafiken und keine Menüs, stattdessen viele Abkürzungen, die man erst kennen und eintippen muss, um sie benutzen zu können. Sie sehen daher für Uneingeweihte oft sehr kryptisch aus. Sie haben jedoch auch große Vorteile:
Erstens sind Programme mit CLIs einfacher zu schreiben als TUIs und GUIs. Deswegen werden Sie in diesem Kurs zunächst nichtinteraktive Programme mit CLIs schreiben. Später kommen wir auch zu interaktiven Programmen mit TUIs und GUIs, was natürlich wichtig ist, um Programme zu schreiben, die durch Nicht-Programmierer benutzt werden können.
Zweitens, und das hängt eng mit dem ersten Vorteil zusammen, sind CLIs aufgrund ihrer minimalistischen Natur leichter wartbar als TUIs und GUIs. Wenn man einem bestehenden Programm eine neue Funktion hinzufügt, muss man ein CLI oft nur minimal ändern, während bei TUIs und GUIs oft umfangreichere Änderungen nötig sind, um die neue Funktion nutzen zu können.
Und drittens eignen sich CLIs sehr gut dazu, mehrere Programme schnell und einfach zu einem großen Programm zu kombinieren, um komplexe Aufgaben zu lösen. Gerade aus dem dritten Grund arbeiten erfahrene Programmiererinnen und Forscherinnen oft am liebsten mit kommandozeilenbasierten, nichtinteraktiven Programmen.
Bevor wir anfangen selbst zu programmieren, werden wir uns also erst einmal mit Kommandozeilen vertraut machen. Genauer gesagt: mit der Unix-Programmierumgebung.