Terminals statt Fernschreiber

Ich fasse noch einmal zusammen: Durch Fernschreiber, die mit Computern im Time-Sharing-Betrieb verbunden wurden, war die interaktive Nutzung von Computern bei gleichzeitiger Erfüllung der hohen Anforderungen an Durchsatz und Rechenleistung möglich. Turnaround-Zeiten sanken von Tagen und Stunden auf Minuten und Sekunden und mittels Editoren konnten die Computer als Werkzeug zum Schreiben der Programme verwendet werden, die dann später auf dem Computer auch gleich gestartet werden konnten. Der Fernschreiber oder die elektrische Schreibmaschine als Ein- und Ausgabegerät hatten aber ihre Nachteile, denn Fernschreiber und Schreibmaschinen erzeugten ein analoges Medium durch Einschreibung von Schriftzeichen auf ein Endlospapier. Innerhalb des Computers wurden durch die interaktive Software virtuelle Objekte erzeugt, die durch den Nutzer sehr dynamisch änderbar waren, doch nach außen hin ließen sich diese Objekte nicht mit den gleichen dynamischen, manipulierbaren Eigenschaften darstellen. Man konnte zum Beispiel einen im Computer gespeicherten Text ändern, aber man konnte mit dem Fernschreiber eben nicht den schon ausgegebenen Text auf dem Papier ändern. Die Konsequenz aus dieser Lücke zwischen der flexiblen Welt im Computer und der statisch eingeschriebenen Welt der Nutzungsschnittstelle war, dass Änderungen der virtuellen Objekte im Computer nur dadurch vorgenommen werden konnten, dass die Änderungen sprachlich beschrieben wurden. Sich dabei ergebende Änderungen konnten nicht direkt, sondern nur vermittelt über eine Anforderung des Nutzers und eine Antwort in Form eines Ausdrucks des Systems wahrgenommen werden.

Die geschilderte kommandoorientierte Arbeitsweise lässt sich ein bisschen mit dem Bestellen von Pizza vergleichen. Stellen Sie sich vor, Sie rufen bei einer Pizzeria an, von der Sie keine dieser praktischen, faltbaren Papierkarten bei sich zu Hause haben. Sie wollen dort Pizza bestellen. Wir denken uns nun einen sehr fantasielosen Angestellten der Pizzeria, der immer nur genau das tut, was Sie ihm sagen. Vor seiner Nase hat dieser Angestellte der Pizzeria die komplette Speisekarte, einen Zettel und einen Stift, um aufzuschreiben, was Sie gerne haben möchten. Sie sehen von all dem natürlich nichts, denn Sie haben ihn ja am Telefon. Wie kommen Sie nun zu Ihrem Essen?

  • Zunächst einmal müssen Sie fragen, was Sie überhaupt bestellen können, also vielleicht erst einmal, welche grundsätzlichen Gruppen an Gerichten es gibt, also Nudeln, Pizza, Fischgerichte und so weiter. Letztlich können Sie durch mehrfaches Nachfragen so hinter die Inhalte der Speisekarte kommen und etwas auswählen.
  • Nun geben Sie einige Bestellungen auf. Natürlich wissen Sie für viele der Gerichte nicht genau, welche Zutaten sie haben, welche Pizza etwa welchen Belag hat. Sie müssen also wieder einmal – und wahrscheinlich öfter – nachfragen.
  • Die Antwort zu einem Gericht Ihrer Wahl gefällt Ihnen vielleicht nicht. Brokkoli? Kann man das nicht durch Paprika ersetzen? Wieder müssen Sie nachfragen und gegebenenfalls eine entsprechende Anweisung geben.
  • Was hatten Sie jetzt gleich alles bestellt? Haben Sie vielleicht etwas vergessen? Hat Ihr Gegenüber Sie immer richtig verstanden? Haben Sie sich vielleicht versprochen? Da Sie den Zettel Ihres Gegenübers auf der anderen Seite nicht sehen können, bleibt Ihnen nur, sich die Bestellung nochmal vorlesen zu lassen.
  • Wo Sie sich das jetzt nochmal so anhören, fällt Ihnen auf, dass die überbackenen Nudeln vielleicht doch etwas mächtig sein könnten. Sie bitten darum, diese zu streichen und bestellen lieber eine Pizza Margherita. Wurde das richtige Gericht entfernt? Sie ahnen es schon – Sie müssen wieder nachfragen.

So kompliziert ist es bei Ihnen nicht, wenn Sie etwas bestellen? Wahrscheinlich nicht, denn Sie haben eventuell eine App oder eine Speisekarte der Pizzeria zu Hause, auf der Sie sehen können, was zur Auswahl steht und auch, welche Anpassungen an den Gerichten Sie vornehmen können. Außerdem weiß Ihr Gegenüber natürlich um die Probleme der Bestellungen dieser Art und denkt mit, wiederholt etwa, was er verstanden hat und gibt gegen Ende der Bestellung von selbst eine Zusammenfassung. In dieser Situation sind Sie bei der Nutzung des Computers nicht. Sie haben keinen Einblick in die komplette Auswahl, die Ihnen das System bietet, und der Kommandozeilen-Interpreter ist leider – vielleicht auch Gott sei Dank – sehr schlecht darin, für Sie mitzudenken und zu erkennen, wenn Sie etwas versehentlich getan haben.

Terminals und räumliche Objekte

ADM-3A – Bild: FreeImages.com/Konrado Fedorczyko
ADM-3A – Bild: FreeImages.com/Konrado Fedorczyko

Die Probleme dieser sprachlich-indirekten Interaktion mit dem Computer können mit der Einführung von Terminals mit Bildschirm und Tastatur überwunden werden, denn das Terminal erlaubt Ihnen eine dauerhafte, räumliche Darstellung und Manipulation von virtuellen Objekten der Nutzungsschnittstelle.

Die Entwicklung von Terminals ist ein in der Computergeschichte tendenziell zu wenig betrachteter Bereich. Man könnte ohne Weiteres ganze Bücher nur über die Entwicklung von Terminals und ihren Einfluss auf die Entwicklung von Nutzungsschnittstellen schreiben, denn spätere Terminals wurden mit eigenen Prozessoren, einem eigenen Betriebssystem und Speichermedien ausgestattet und wurden damit quasi zu Personal Computern. Wir wollen es vorerst aber nicht so weit treiben und uns auf die einfachen Geräte wie das rechts abgebildete ADM-3A von Lear Siegler beschränken. Dieses Gerät ist kein Computer, sondern nur ein Terminal. Ein solches Gerät konnte anstelle eines Fernschreibers an einen Computer angeschlossen werden und dann zunächst einmal genau so wie dieser verwendet werden. Anstelle eines Ausdrucks wurden die Zeichen auf dem Bildschirm ausgegeben. War der Bildschirm vollgeschrieben, rutschten die Zeichen automatisch nach oben. Terminals mit zusätzlichem Speicher erlaubten sogar das Scrollen nach oben, um wie beim Papierausdruck das vorher Ausgegebene ansehen zu können. Das hier gezeigte ADM-3A konnte 24 Zeilen zu je 80 Zeichen anzeigen und unterstützte im Gegensatz zur Version ohne das A am Ende nicht nur Großbuchstaben, sondern auch Kleinbuchstaben. 80 Zeichen pro Zeile bedeutet, dass die komplette Breite des US-Letter-Formats oder auch des DIN-A4-Formats dargestellt werden konnte.

Häufig wurden Terminals dieser Art zunächst als Ersatz für einen Fernschreiber, aber sonst genauso wie dieser, eingesetzt. Der Betrieb war leiser, es wurde nicht so viel Papier verbraucht und ein Terminal war auch erheblich kleiner als ein Fernschreiber. Wenn man es bei der fernschreiberartigen Betriebsart beließ, wurde das Potenzial des neuen Geräts aber gar nicht genutzt. Scherzhaft wurde dann der Begriff „Glass Teletype“ verwendet, denn das Terminal war dann funktionsidentisch mit einem Teletype, also einem Fernschreiber, nur dass das Papier eben aus Glas war. Der eigentliche innovative Vorteil von Terminals dieser Art lag aber nicht im Sparen von Papier, sondern in der Möglichkeit, Zeichen nicht nur ausgeben, sondern auch löschen und überschreiben zu können, und damit vor allem darin, den Cursor frei auf dem Bildschirm positionieren zu können. Diese Positionierungstechnik erlaubte es, die Buchstaben auf dem Bildschirm zu arrangieren und dieses Arrangement flexibel zu aktualisieren. Diese Art der Terminal-Nutzung, bei der mit Steuerzeichen der Bildschirm gelöscht werden und der Ein- und Ausgabecursor frei positioniert werden konnte, war damit die Grundlage von sich aktualisierenden Statusanzeigen, Formularmasken am Bildschirm, Menüs, Editoren, bei denen der bearbeitete Text am Bildschirm dauerhaft zu sehen und zu bearbeiten ist, und vielem Weiteren mehr, was für uns heute an den Nutzungsschnittstellen der Computer selbstverständlich erscheint.

Dumme und intelligente Terminals

Bei dem ADM-3A – ADM steht übrigens für American Dream Machine – handelte es sich um ein Gerät, das man als „Dumb Terminal“ bezeichnete. Der Hersteller Lear Siegler verwendete diesen Ausdruck sogar in der eigenen Werbung für das Gerät, allerdings mit dem Kniff, dass die Verwendung eines solchen dummen Terminals doch eine sehr intelligente Sache sei. Wenn es „dumb terminals“ gab, musste es natürlich andere Terminals gegeben haben, die weniger dumm waren. In der Tat gab es die und ganz folgerichtig wurden sie „intelligent terminals“ genannt.

Den Unterschied zwischen den beiden Terminal-Arten kann man sich an einem Beispiel gut klarmachen: Stellen Sie sich ein Programm vor, in dem Sie ein Formular ausfüllen können, sagen wir, für eine Lieferung. Beim Dumb Terminal füllte das Programm den Bildschirm des Terminals mit den Zeichen der Eingabemaske, positionierte dann den Cursor beispielsweise an die Position hinter „Nachname:“ und wartete auf Eingaben des Nutzers. Das Programm merkte sich dabei, dass nun das Eingabefeld „Nachname“ ausgefüllt wird. Tippte der Nutzer nun ein „F“ ein, verarbeitete der Computer diese Eingabe, aktualisierte die Eingabevariable und schrieb ein F auf den Bildschirm. Folgte nun ein Backspace, verarbeitete der Computer auch dies und löschte das F wieder aus dem Speicher und vom Bildschirm. So ging das für alle eingegebenen Zeichen weiter. Erst wenn irgendwann die Eingabe mit ENTER abgeschlossen wurde, speicherte das Programm die bisherige Eingabevariable in eine Programmvariable, positionierte dann den Cursor hinter „Vorname:“ und das Spiel begann von Neuem. Sie merken sicher, dass der Programmieraufwand und damit auch der Ausführungsaufwand während der Nutzung bei einem solchen Programm hoch war, denn das System musste jede einzelne Eingabe interpretieren, in Ausgaben umsetzen, den Cursor positionieren und so weiter.

Beim Einsatz eines „intelligent terminals“ war der Aufwand auf dieser Ebene viel geringer. Wurde zum Beispiel ein ADM-1 oder ein Datapoint 3300 verwendet, wurde vom Programm eine komplette Bildschirmmaske übertragen, die auch Informationen darüber enthielt, welche Bereiche für den Nutzer manipulierbar waren und welche nicht. Das Terminal selbst übernahm die Eingabekontrolle innerhalb der festgelegten Felder. Wenn ein Nutzer etwas in ein mehrzeiliges „Bemerkungen“-Feld tippte, konnte er darin beliebig Korrekturen vornehmen, Zeichen oder gar ganze Zeilen einfügen, ohne dass das Computerprogramm mit dieser Bearbeitung etwas zu tun hatte. Erst beim Betätigen einer Sende-Taste, oft auch „Datenfreigabe“ genannt, wurden die Daten an das Time-Sharing-System übertragen. Intelligente Terminals sparten dadurch erheblich Aufwand bei der Anwendungsprogrammierung und „Rechenzeit“ bei der Programmausführung, da viele der Standardverarbeitungen der Texteingabe an das Terminal selbst abgegeben wurden. Sie können das etwa mit dem Programmieren eines Eingabeformulars für eine Website vergleichen. Auch hier verwenden die Nutzer eine Art intelligentes Terminal, nämlich einen Webbrowser. Sie müssen sich als Programmierer einer Website nicht mit Details wie der Eingabe des Nutzers auf der Ebene der Eingabe von Buchstaben auf der Tastatur beschäftigen, sondern können darauf bauen, dass Browser und Betriebssystem die entsprechenden Funktionen zur Verfügung stellen. Sie behandeln erst wieder die fertige Eingabe des Nutzers.

Die Verwendung von Intelligent Terminals scheint sehr sinnvoll zu sein. Dumb Terminals waren dennoch viel verbreiteter und haben die Nutzungsschnittstellen stärker weitergebracht. Warum war das so? Zum einen waren diese Terminals natürlich erheblich günstiger, was gerade dann, wenn in einer Organisation viele Terminals genutzt werden sollten, natürlich ein nicht zu unterschätzender Vorteil war. Der zweite Vorteil betraf auf der anderen Seite die Einsatzbereiche der Terminals. Intelligent Terminals entfalteten ihren größten Vorteil bei klassischen Masken, also Eingabeformularen mit vielen Datenfeldern. Dumb Terminals waren darauf hingegen nicht festgelegt, denn sie konnten alles darstellen und verarbeiten, was mit einer dynamischen Text-Ein-und-Ausgabe denkbar war, und waren nicht auf die Eingabeformate beschränkt, die ihnen das Terminal vorgab. Einen Editor, wie den im Folgenden vorgestellten „vi“, können Sie zum Beispiel kaum mit den Funktionalitäten eines intelligenten Terminals umsetzen. Natürlich konnten Sie ein intelligentes Terminal auch wie ein Dumb Terminal betreiben, doch gingen dann alle Vorteile verloren. Andersherum können Sie die Funktionalität eines Intelligent Terminals, genug Rechenleistung vorausgesetzt, gut mit Software simulieren.

Direkte Manipulation: Visuelle Editoren

Wir haben uns ein paar Seiten zuvor angesehen, wie man einen Text mit dem Unix-Editor „ed“ bearbeiten kann. Sein Nutzungsparadigma ist noch heute auf einfache Terminals und Fernschreiber ausgelegt. Wir wagen nun, ausgestattet mit einem Terminal wie dem ADM-3A, den Schritt zu einem visuellen Editor.

Von „ed“ zu „vi“

Der Unix-Editor vi im Insert-Modus
Der Unix-Editor vi im Insert-Modus

Der oben abgebildete Unix-Editor „vi“ aus dem Jahr 1976 – „vi“ steht für „visual“ – ist dem Editor „ed“ im Grunde von der Funktionsweise her gar nicht unähnlich. Im Gegensatz zu „ed“ sieht man bei „vi“ jedoch einen Ausschnitt des Textes dauerhaft am Bildschirm. „vi“ erlaubt es auch, einen Cursor im Text zu positionieren, dann in einen Einfügemodus zu wechseln und neue Textinhalte an der Stelle des Eingabecursors einzufügen. In einem Befehlsmodus erlaubt „vi“ die Eingabe von Befehlen in eine Befehlszeile am unteren Bildschirmrand. Das Resultat dieser Befehle, zum Beispiel das Ersetzen eines Wortes durch ein anderes, wird in „vi“ sofort als Änderung des dargestellten Textes angezeigt. Die Bedienung des „vi“ ist für heutige Maßstäbe kryptisch und kompliziert, doch verwirklicht der Editor, ganz seinem Namen entsprechend, die Potenziale von am Bildschirm dauerhaft sichtbaren und auch dort bearbeitbaren Zeichen. Zwar erlaubt der Editor die Eingabe von Befehlen, doch müssen diese nicht mehr für das Einfügen genutzt werden und auch für die Ausgabe ist es nicht mehr nötig, die Zeilennummer im Text zu kennen. „vi“ unterstützt weiterhin die Manipulation von Texten per Befehl. Fans von „vi“ mögen den Editor oft gerade wegen dieser Möglichkeit, Textmanipulationen per Kommando durchführen können. In der Tat kann dies gerade bei komplexen Operationen und wenn man sich gut auskennt, sehr schnell von der Hand gehen, denn „vi“ erlaubt Textumformungen per regulärer Ausdrücke. Für Unkundige sehen diese Befehle allerdings oft so aus, als sei jemand auf die Tastatur gefallen.

Vergleicht man die Ur-Version von „vi“ mit der Funktionalität heutiger Text-Editoren, bemerkt man, dass eine heute ganz grundlegende Eigenschaft noch fehlt: Der große Vorteil der Textbearbeitung an Terminals war ja, dass der ausgegebene Text selbst direkt an Ort und Stelle bearbeitet werden konnte. Statt eines Befehls der Art „Füge in Zeile 20 nach dem 4. Wort ein Komma ein“, konnte mit dem Cursor an diese Stelle navigiert und das Komma eingefügt werden. Jeder moderne Editor unterstützt diese Arbeitsweise – auch „vi“. Was bei „vi“ aber nicht ging, war die räumliche Markierung eines Textausschnitts und das Anwenden eines Manipulationsbefehls auf diesen Bereich. Wenn Sie heute auf einem Linux- oder Unix-basierten System „vi“ eingeben, öffnet sich ein Editor, den Sie genau wie zuvor beschrieben verwenden können. Es handelt sich aber in der Regel nicht mehr um den „vi“ aus den 1970er Jahren, sondern um eine erweiterte Version mit Namen „vim“ (für „vi improved“). Ende der 1980er Jahre wurde der klassische Editor in vielerlei Hinsicht erweitert. Unter anderem gibt es nun einen Modus, der eine räumliche Selektion von Textteilen erlaubt. Die selektierten Textteile werden invertiert dargestellt. Dieses Selektieren unter „vim“ funktioniert folgendermaßen:

  • Sicherstellen, dass Sie sich im Befehlsmodus befinden. Den Einfügemodus gegebenenfalls durch ESC verlassen,
  • den Cursor am Beginn des Blocks positionieren,
  • durch Eingabe von SHIFT+v die komplette Zeile, durch STRG+v den kompletten Block markieren oder
    • v eingeben, um den Blockanfang festzulegen,
    • mit dem Cursor zum Blockende navigieren,
  • d (delete) eingeben, um den Block auszuschneiden oder y (yank), um ihn zu kopieren,
  • mit dem Cursor zur Zielposition navigieren,
  • p (paste) eingeben, um den Block hier einzufügen.

Die Möglichkeit der räumlichen Selektion der auf dem Bildschirm angezeigten Elemente ermöglicht hier die direkte Manipulation. Klassischerweise wird dieser Begriff „direkte Manipulation“ mit Maus-Interaktion und grafischen Darstellungen verbunden17. Im Prinzip reicht aber ein Text-Terminal aus, insofern Objekte räumlich dargestellt und auch räumlich selektiert und manipuliert werden können. Das ist bei „vi“ der Fall. „Direkte Manipulation“ bedeutet, dass der Handlungs- und der Wahrnehmungsraum gekoppelt sind. Objekte werden bei „vi“ an einem Ort am Bildschirm angezeigt, werden an ebendiesem Ort selektiert und an Ort und Stelle manipuliert. Wenn „vi“ allerdings im Befehlsmodus verwendet wird, ist das nicht so, denn dann werden die Manipulationen in einer Befehlszeile eingegeben, wirken sich aber auf Objekte an anderer Stelle aus.