Die Kommandozeile1 erscheint wie eine andere Welt. Eine Reise in die Vergangenheit in Anbetracht moderner, grafischer Oberflächen2. Dabei sind die Übergänge zwischen den Welten fließend. Grafische Tiled-Fenstermanager wie beispielsweise i33 gibt es genauso wie Mausbedienung und (Text-)Fenster aus ASCII-Zeichen4.
Mit dieser Artikelserie stelle ich einige von mir häufig eingesetzten Programme vor. Von kleinen aber feinen Helferlein bis zur mächtigen Tabellenkalkulation. Dabei geht es nicht um ideologische Grabenkämpfe, welches Konzept das bessere ist. Eine Welt ohne GUI ist für mich genauso unvorstellbar wie eine Welt ohne CLI. Manche Aufgaben erfordern einfach nur die richtigen Tools und oft führt erst die Kombination aus beiden Welten zur Lösung.
Disclaimer vorab: Alles ohne Anspruch auf Richtigkeit und Allgemeingültigkeit. Feedbacks sind erwünscht und “Your milage may vary”.
Kraft der frühen Geburt schätze ich es, den Übergang von textorientierten zu grafischen Betriebssystemen in den 80er und 90er Jahren miterlebt zu haben. Die Entwicklungen und Konzepte von damals wirken bis heute. Sie stehen aber nicht isoliert für sich im Raum sondern sind Bestandteil größer Entwicklungslinien.
Konzepte lassen sich meiner Meinung nach ohne die Kenntnis ihrer Entstehung schlecht verstehen. Wie kann ich jemanden etwas zum Piping erklären, wenn das Wissen, wie einst Daten von Terminals zu Mainframes übermittelt wurden, gänzlich fehlt?
Zugleich muss ich mich entschuldigen. Der erste Teil dieser Serie wird sich in Gänze der Computergeschichte und Kontextualisierung widmen. Wer schnell zu den Tools will, möge bitte auf den zweiten Teil warten. Soviel als Teaser vorab: Neben Klassiker wie mc, htop oder tmux gehören auch die eher weniger bekannten Tools wie beispielsweise bat, fzf, csvkit oder das relativ neue libloc dazu.
Kontextualisierung
Keine Computer ohne Alan Turing5 und John von Neumann6 mit den geheimen Projekten Colossus7 und Manhattan8 im zweiten Weltkrieg. Kein IBM ohne das Semi-Automatic Ground Environment (SAGE) Projekt9, das mit dem AN/FSQ-710 den weltgrößten Computer erschuf11 und IBM 80% seiner Umsätze.12 Kein Echtzeit-Computing und keine Speichersysteme ohne die Flugsimulatoren und Kernspeicher13 des Whirlwind-Projektes14. Kein Intel, AMD oder ARM ohne das Unternehmen Fairchild15, das den ersten Transistor 2N69616 für B-70 Bomber17 und ballistische Raketensysteme produzierte. Keine künstliche Intelligenz ohne Norbert Wiener18, dessen nach ihm benannten Filter19 zur Signal- und Mustererkennung für die Flugabwehr entwickelt wurden. Keine Betriebssysteme20, kein Multitasking21, kein Internet22 ohne die Ideen und angestoßenen Projekte von Joseph Carl Robnett Licklider23, erster Information Processing Techniques Officer24 bei der ARPA.25 Keine Venture-Kapitalfirmen und Bigtechs im Silicon-Valley26 ohne die RAND Corporation27, Bindeglied zwischen Forschung, Wirtschaft und Militär.
Alle Konzepte in der IT kommen aus Rüstungsprojekten. Informationsverarbeitung ist Macht. Es ist die Fähigkeit, die Gegenwart zu beschreiben und die Zukunft zu prognostizieren.
Kilogirls und Konsolen
Die ersten Konsolen und zugleich Bildschirmarbeitsplätze entstanden an den englischen Chain-Home28 Radarstationen im Zweiten Weltkrieg29 Elektro-mechanische Computer30 plotteten gegnerischen Flugzeuge mit Ihren Signaldaten auf einen CRT-Bildschirm.31 Die Bedienung erfolgte in einem “front-panel”32 direkt an den Anlagen mit Funktionstasten, Statusanzeigen und Drehreglern. Die von den meist weiblichen Operatoren ausgesuchten Daten wurden vom Computer berechnet und an das entfernte Hauptquartier bzw. die Abfangstaffeln übermittelt.
Der hohe Frauenanteil in der Informatik vor und während des Weltkrieges (Stichwort “Kilogirls”, Rechenleistung von 1000 Frauen)33 und der Umstand, dass die ersten elektrisch-programmierbaren Computer von der Forschungsabteilung der britischen Post34 kamen, waren Gründe für die Wahl von Fernschreibern35 mit Ihren bekannten Schreibmaschinentastaturen und integrierten Druckern als Interfaces für Ein- und Ausgaben. Die bis heute gebräuchliche Abkürzung TTY36 kommt vom englischen Wort “TeleTYpewriter”. Woher das leider häufig anzutreffende Machogehabe in der IT kommt, bleibt unerklärlich. Frauen stellten vor 70-80 Jahren die Mehrheit dar.
Mainframes der 50er und 60er
Aus den direkt an der Hardware angebrachten Konsolen der ersten Rechnergenerationen wurden räumlich abgetrennte Terminal-Arbeitsplätze, die mit den weitläufigen Anlagen verbunden blieben. Programmspeicher ersetzten später das händische “patchen” von Programmen in den “front-panels”. Ergebnisse wurden auf Druckern (Hardcopy)37 oder Display Devices (Softcopy)38 ausgegeben. Die IBM 70439 steht stellvertretend für die vielen unterschiedlichen Mainframes der 50er Jahre, die zusammenfassend als zweite Computergeneration bezeichnet werden.
Leistungsstarke Rechner mit Transistoren40 und den ersten integrierten Schaltkreisen41 ermöglichten den Wechsel von sequenziellen (Batch)42 zum parallelen Ausführen (Time-Sharing)43 von Programmen. Den Übergang markiert 1956 der “Transistorized Experimental Computer Zero” TX-0, ein mit Transistoren nachgebauter Whirlwind-Computer. Was zuvor gebäudefüllend war, passte nun in ein Zimmer.44 Entwickelt von den Ingenieuren Ken Olsen45 und Harlan Anderson46 führte diese Entwicklung zur Gründung des Unternehmens Digital Equipment DEC.47 Die PDP-148 aus dem Jahr 1959 galt als zum Produkt weiterentwickelte TX-0 und begründete die erfolgreiche PDP-Serie, die DEC auf den zweiten Platz der Computerhersteller nach IBM katapultierte.
IBM ist die Leistung zuzuschreiben ab 1964 die unterschiedliche Aufgabenstellungen an Computer unter einer Architektur als System/360 etabliert zu haben.49 Von allgemeinen Aufgabenstellungen der Wirtschaft bis zu speziellen des Militärs und Wissenschaft wie beispielsweise die Avionik einer F-15 oder des Space-Shuttles,50 konnte alles mit einem Standard programmiert, getestet und betrieben werden. Stellvertretend für diese dritte Rechnergeneration steht die IBM System/360 Rechnerfamilie.
Immer schnellere Computer ermöglichten die parallele Ausführung von Programme und immer mehr verbundene Terminal-Arbeitsplätzen. Das erforderte besondere Vorkehrungen zur Koordination und Schutz z.B. vor Schreibzugriffen eines Programms im Speicherbereich eines anderen. Das Konzept eines Betriebssystems als zentrale Instanz zur Koordination und Steuerung wurde notwendig.
Projekt MAC
Keimzelle aller heutigen Betriebssysteme ist das ARPA finanzierte Gemeinschaftsprojekt “Mathematics and Computation” MAC51 am MIT52, das zusammen mit den Unternehmen Bell und General Electric (später Honeywell) betrieben wurde. Die ersten Multiuser- und Multitasking Systeme53 entwickelten sich hier genauso wie das heutige noch gängige Konzept von Clients und Servern54.
Diese Konzepte brechen mit der bisherigen Einheit aus Computer und Bedienterminals. Auf den Ideen und Papers von J.C.R. Licklider basierend sollte via Modem/Telefon oder über das paketorientierte55 ARPANET56 verbundene Terminal sich mit beliebigen Computern verbinden können und dort interaktiv Programme starten können. Umgekehrt muss ein Computer mit vielen Terminals umgehen können, die auf unterschiedlichste Weise simultan zugreifen. Aus Perspektive eines Betriebssystems wird daher mit virtuellen Pseudo-Terminals PTY57 kommuniziert. Aus Sicht eines verbundenen Teleprinters oder späteren (Video-)Terminals, eine Terminalemulation58 gestartet.
1961 erschien das “Compatible-Time-Sharing-System” CTSS59 auf einer IBM 70960 mit drei gleichzeitig verbundenen Terminals. Die RUNCOM61 Befehlszeile von Louis Pouzin62 konnte zwar Skripte in Gestalt von .rc Dateien ausführen, war selbst jedoch nicht anpassbar.
1964 folgte “MULTiplexed Information and Computing Service” MULTICS63 auf einer GE-64564. Befehle wurden zum ersten Mal in einer Shell65 interpretiert und ausgeführt und konnten angepasst werden. Die Autorin der Multics-Shell Glenda Schroeder66 entwickelte mit Pouzin das Konzept hierarchischer Verzeichnisbäume, das Konzept “Everything is a file”67, erstmals mit virtuellen Dateien und Verzeichnissen, sowie das Konzept von Emails (zuerst nur zwischen den Benutzern eines Systems).68
Bis heute gibt es eine kleine, aber aktive Schar an Enthusiasten, die einen DPS-8 Mainframe Simulator69 und Multics “am Leben” halten.70 Zumindest bis zum Jahr 2043. Ab dann besteht die Gefahr einer Kollision von einmaligen erstellten UIDs.71
Von Multics über Unics zu Unix
Das Unternehmen Bell (später AT&T) zog sich aus dem MAC-Projekt aufgrund Frustration über die Komplexität und hohen Hardware-Anforderungen von Multics zurück. Auf eigene Faust entwickelten 1969 die Bell Labs72 Mitarbeiter Ken Thompson73 und Dennis Ritchie74 einen Multics-Klon, den “UNiplexed Information and Computing Service” UNICS75. Die Philosophie76 und Antithese von Unics: Alles muss so minimal und modular wie nur möglich sein.
Write programs that do one thing and do it well.
Diese Philosophie drückt sich am besten im Konzept von Pipelines aus.77 Anwender an einem Terminal starten auf einem entfernten Server ein Programm, das seine Ausgabe (stdout) einem weiteren Programm als Eingabe (stdin) weiterreicht bis am Ende einer solchen Programmkette, der Pipeline, das Ergebnis dem Anwender zurück zum Terminal übertragen wird.
In der Zwischenzeit beginnen in den frühen 70er Jahren Videoterminals zunehmend die Teleprinter zu verdrängen. Standardisierungen der ANSI Escape-Zeichensätze78 verbessern die Interaktion und Darstellung auf den schwarz-weiß, grün- oder bernsteinfarbenen Bildschirmen. Aus schlichten, meist nummerierten Menüs werden zunehmend komplexe Interfaces mit Arbeitsbereichen, Rahmen, Menüleisten und Cursorsteuerung.
Mehrere Versionen und eine komplette Neuprogrammierung in C machten aus Unics ein “Research Unix”.79 Der modulare Aufbau der Unixarchitektur aus vielen kleinen Programmen (Toolbox) ermöglichten eine flexible Anpassung auf die eigenen Bedürfnisse und führten zur raschen Verbreitung.
Zwischen 1971 und 1984 entstehen so mehrere Unix-Versionen auf verschiedenen Universitäten von denen die Berkley Software Distribution (BSD)80 die bekannteste wird. Diese bot ein freies BSD-Lizenzmodell81, was dem Umstand geschuldet ist, dass der Verkauf von Software-Lizenzen außerhalb der von Regulierungsbehörden erlaubten Geschäftsbereichen des Bell-Konzerns82 war. Es stand kostenfrei mit relativ vielen Freiheiten für jeden zur Verfügung.
BSD-Unix wurde ab 1977 Grundlage vieler freier und kommerzieller Unix-Derivate, einschließlich der heutigen, proprietären Systeme von Apple und Microsoft. Microsoft beispielsweise nutzte bis Windows Server 2012 Teile davon im Posix/Unix-Subsystem.83
Das erfolgte parallel zur Kommerzialisierung von Unix durch den Bell-Nachfolgekonzern AT&T, das die freien Unixe seitdem zum juristischen Ziel84 in den sogenannten “Unix Wars”85 der 1980er Jahre machte.
Von MAC zum Mac
Einen interessanten Handlungsstrang der Geschichte kann ich nicht vorenthalten. Die Ideen und Konzepte des MAC-Projektes am MIT an der US-Ostküste führten zu einer Innovationsexplosion an der US-Westküste. Unter Leitung von Douglas Engelbart86 am Stanfort Research Institute SRI87 entstand das NLS88 System auf einer SDS-94089. In der “Mother of all Demos”90 zeige er 1968 erstmals ein grafisches Betriebssystem mit frei am Bildschirm bewegbaren Inhalten, Cursor-91 und Maussteuerung92. Er wählte sich von seinem Terminal aus in einen 40km entfernten Computer ein und arbeitete live per Audio- und Videoübertragung kollaborativ mit anderen.
Ein Jahr später kaufte Xerox den Computerhersteller SDS93 und viele Mitarbeiter von Engelbart wechselten zu der neu gegründeten Forschungsabteilung Xerox PARC94. Sie führten die Ideen und Konzepte des NLS-Systems bei der Entwicklung des Xerox Alto95 fort und ergänzten es um neue Konzepte wie dem Bitmapping96 oder WYSIWYG97. Fundamentale Bedienkonzepte wie Buttons oder zwei horizontal angeordnete Verzeichnisbäume in Datei-Managern gelten bis heute.
Im Nebel der Geschichte bleibt unklar, ob das Xerox-Management das Potential für Desktop Publishing98 nicht verstand oder Kannibalisierungseffekte99 zu den eigenen Fotokopierern fürchtete. Im Ergebnis wurden die Innovationen eher halbherzig zu Produkten weiterentwickelt. 1979 kam es zu einem folgenreichen Besuch100 und Know-How Transfer zu einem jungen Mann aus der Nachbarschaft und wenig später 1983 zu Apple Lisa101 und 1984 zum Apple Macintosh.102
Wer einen Blick auf Bedienung und User-Interfaces des Xerox Alto werfen mag, findet im Web Archive einen im Webbrowser lauffähigen Simulator.103 Die Oberfläche des frühen Apple MacOS (in Version 6) kann ebenfalls im Webbrowser auf Emulatoren betrachtet werden.104
PC-Desktops
Die vierte Computergeneration begann im Verlauf der 70er Jahre mit für damalige Verhältnisse leistungsarmen Micro- oder Personalcomputern.105 Zum Vergleich: Ein IBM System/360 Model 91 hatte im Jahr 1966 die gleiche Rechenleistung wie ein PC mit Intel 486SX aus dem Jahr 1990.106 Auch die “single-user, single-tasking” Systeme wie CP/M107, KERNAL108, AppleDOS109, TRSDOS110 oder MS-DOS111 spielten im Vergleich zu Unix bestenfalls in der Amateurliga. Der Vorteil des PCs: Er passte sprichwörtlich auf jeden Schreibtisch und war massenkompatibel und konnte sich per Terminalemulation mit den Mainframes verbinden.
Der erste Personal Computer dieser Klasse als fertiges Produkt und nicht als Bausatz wie beispielsweise der MITS Altair112 war 1975 der Olivetti P6060.113 Einem klassischen Teleprinter-Terminal optisch noch ähnlich, war es jedoch ein vollständiger Computer.
1977 erschienen mit dem Apple II114, dem Commodore PET115 und TRS-80116 gleich drei Systeme, die unser heutiges Bild von einem PC-Desktop aus Bildschirm, Tastatur und lokalen Laufwerken prägten. Als die Anwendung Visicalc117 Einzug in immer Büros und Unternehmen hielt, entstand bei IBM die Sorge, in diesem Marktsegment “keinen Fuß” zu haben.
1981 baute IBM einen möglichst günstigen Personal Computer118 aus Standard-Komponenten und begründete zusammen mit dem auf diesem befindlichen System MS-DOS einen de-facto Industriestandard, auf den auch andere Hardware-Hersteller aufspringen konnten. Bereits 1984 überstieg der Umsatz dieser jungen PC-Branche den von Mainframe-Computern.119
Treppenwitz der Geschichte: Microsoft war zu der Zeit größter Unix-Lizenznehmer für sein eigenes Unix-Derivat Xenix120, das in Unterlizenz an große Unternehmenskunden wie z.B. Siemens mit seinem SINIX121 weiter verkauft wurde. Unix sollte die “Notlösung” MS-DOS beerben sobald die PC-Hardware der “IBM-Kompatiblen”122 leistungsstärker wird.
Die Geschichte verlief bekanntlich anders. Und obwohl zu Beginn der 1990er Unix mit X123 und IBM OS/2124 als technologisch vollwertige Systeme zur Auswahl standen, drückte Microsoft mit allen legalen und illegalen125 Mitteln sein neu entwickeltes Windows NT126 im Markt durch, um nicht abhängig von Lizenzzahlungen an AT&T oder einer Zusammenarbeit mit IBM zu werden.
GNU/Linux
Das Jahr 1983 markiert den Beginn freier Software als Richard Stallmann127 das GNU-Projekt128 startete. Es sollte dem Akronym folgend “GNU is not Unix” gemeinschaftlich ein neues, unix-artiges Betriebssystem erstellt werden, ohne lizenzrechtliche Beschränkungen und ohne Gefahr, durch einzelne Akteure vereinnahmt zu werden. Diese Freiheit ist der GNU Public License GPL129 zu verdanken, die vier elementare Freiheiten gewährt.130
- Die Freiheit, ein Programm auszuführen wie man möchte, für jeden Zweck
- Die Freiheit, die Funktionsweise zu untersuchen und eigenen Bedürfnissen anzupassen. Der Zugang zum Quellcode ist dafür Voraussetzung.
- Die Freiheit, ein Programm zu redistribuieren und damit Mitmenschen zu helfen
- Die Freiheit, ein Programm zu verbessern und diese Verbesserungen der Öffentlichkeit freizugeben, damit die gesamte Gesellschaft davon profitiert. Der Zugang zum Quellcode ist dafür Voraussetzung.
Beginn der 1990er Jahre war das Projekt weit fortgeschritten und zahlreiche Unix-Befehle portiert bzw. neu geschrieben. Es fehlte lediglich der GNU Betriebssystem-Kernel131 da der GNU Kernel132 nicht fertig werden wollte.
Zur gleichen Zeit entwickelte 1991 an einer finnischen Universität Linus Torvalds133 sein eigenes Betriebssystem Linux.134 Anders als Stallmann begann er bei der Entwicklung mit dem Kernel. Es fehlten diesem jedoch die vielen notwendigen Tools, damit es ein vollständiges System werden konnte.
Auf der einen Seite suchte ein freies, unix-artiges Betriebssystem GNU nach einem Kernel. Auf der anderen Seite gab es einen freien Linux-Kernel, das mit Unix Systembefehlen umgehen konnte und nur nach einem Betriebssystem suchte: GNU/Linux war geboren.
Seit den ausgehenden 2000er Jahren sollte GNU/Linux nicht nur Unix von Hochleistungsrechnern verdrängen, sondern es begann seinen Siegeszug auf immer mehr Geräten. Heute ist es auf fast allen Internet-Servern, Netzwerkgeräten, Smartphones und Tablets verbreitet.135
(Fortsetzung folgt)
https://en.wikipedia.org/wiki/Semi-Automatic_Ground_Environment ↩︎
https://en.wikipedia.org/wiki/AN/FSQ-7_Combat_Direction_Central ↩︎
https://en.wikipedia.org/wiki/North_American_XB-70_Valkyrie ↩︎
https://en.wikipedia.org/wiki/MIT_Computer_Science_and_Artificial_Intelligence_Laboratory#Project_MAC ↩︎
https://en.wikipedia.org/wiki/Intergalactic_Computer_Network ↩︎
https://en.wikipedia.org/wiki/Post_Office_Research_Station ↩︎
https://en.wikipedia.org/wiki/Digital_Equipment_Corporation ↩︎
https://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology ↩︎
https://en.wikipedia.org/wiki/Client%E2%80%93server_model ↩︎
https://en.wikipedia.org/wiki/Compatible_Time-Sharing_System ↩︎
https://multics-wiki.swenson.org/index.php/Design_Limitations:_How_Long_can_Multics_Run%3F ↩︎
https://en.wikipedia.org/wiki/Berkeley_Software_Distribution ↩︎
https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc._v._Berkeley_Software_Design,_Inc. ↩︎
https://en.wikipedia.org/wiki/Cannibalization_(marketing) ↩︎
https://newsweek.com/silicon-valley-apple-steve-jobs-xerox-437972 ↩︎
https://www.howtogeek.com/732546/macintosh-system-1-what-was-apples-mac-os-1.0-like/ ↩︎
https://nytimes.com/1984/02/05/business/bailing-out-of-the-mainframe-industry.html ↩︎
https://en.wikipedia.org/wiki/United_States_v._Microsoft_Corp. ↩︎
https://en.wikipedia.org/wiki/Free_software#Definition_and_the_Four_Essential_Freedoms_of_Free_Software ↩︎
https://en.wikipedia.org/wiki/Usage_share_of_operating_systems ↩︎