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.

LibreOffice Writer
Ein Textverarbeitungsprogramm: ein interaktives Programm mit grafischer Benutzeroberfläche.
Google Maps phone app
Smartphone-Apps sind ebenfalls interaktive Programme.
Wahlomat start page in browser
Eine Webapplikation ist ein interaktives Programm, mit dem man über den Browser interagiert.
Virtual therapy session with the ELIZA program
Ein Chatbot ist ein textbasiertes interaktives Programm. Dialog inspiriert von Cooking with Linux.

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.

Screenshot of a terminal emulator inside which the program wc is used
Benutzung des nichtinteraktiven Programms wc mit Hilfe der Kommandozeile.

Jetzt kennen Sie schon die drei grundlegenden Arten für Benutzer, mit einem Programm zu interagieren:

  1. Interaktiv durch ein GUI (graphical user interface, grafische Benutzerschnitstelle), wie bei dem Textverarbeitungsprogramm, bei Smartphone-Apps oder bei Web-Apps.
  2. Interatkiv durch ein TUI (text-based user interface, textbasierte Benutzerschnittstelle), wie beim dem Chatbot.
  3. 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.