Читать книгу Die UNIX-Story - Brian W. Kernighan - Страница 13
Meine Zeit in den Bell Labs
ОглавлениеEin großer Teil dieses Abschnitts erzählt von meiner persönlichen Geschichte. Ich möchte Ihnen damit zeigen, welchen glücklichen Zufällen ich meine Karriere in der Informatik zu verdanken habe und dass die Bell Labs unschlagbar sind, wenn es darum geht, eine solche Karriere zu verfolgen.
Ich wurde in Toronto geboren und ging auch dort zur Universität. Mein Fachgebiet war Technische Physik, praktisch ein Sammelbecken für alle, die nicht genau wussten, auf welchen Schwerpunkt sie sich konzentrieren sollten. Meinen Abschluss machte ich 1964, in der Frühzeit der EDV. Ich war in meinem dritten Studienjahr, als ich zum ersten Mal einen Computer sah, nämlich den Großrechner, der für die gesamte Uni da war. Die IBM 7094 zählte damals zu den Spitzenmodellen und verfügte über einen Magnetkernspeicher für 32K (also 32.768) 36-Bit-Wörter (heute würden wir sagen 128 KByte) sowie Sekundärspeicher in Form großer, mechanischer Plattenlaufwerke. Sie kostete drei Millionen Dollar und war in einem großen Raum mit Klimaanlage untergebracht, behütet von professionellem Bedienpersonal. Gewöhnliche Sterbliche (insbesondere Studenten) wurden nicht einmal in die Nähe gelassen.
Daher habe ich mich während meines Diplomstudiums nur wenig mit Informatik beschäftigt. Allerdings lernte ich die Programmiersprache Fortran. Deshalb kann ich mich nur zu gut in Menschen hineinversetzen, die Schwierigkeiten haben, ihr erstes Programm zu schreiben. Ich hatte zwar Daniel McCrackens hervorragendes Buch über Fortran II gelesen und alle Regeln parat, aber mir war nicht klar, wie ich überhaupt beginnen sollte, um ein Programm zu schreiben. Dieser erste Schritt scheint vielen Einsteigern Schwierigkeiten zu bereiten.
Im Sommer vor meinem letzten Collegejahr hatte ich einen Job bei Imperial Oil in Toronto als Mitglied einer Gruppe, die Optimierungssoftware für Raffinerien entwickelte. (Imperial Oil gehörte zum Teil der Firma Standard Oil of New Jersey, aus der 1972 Exxon wurde.)
Im Nachhinein muss ich zugeben, dass ich wohl ein ziemlich unterdurchschnittlicher Praktikant war. Ich verwendete den ganzen Sommer darauf, ein riesiges Cobol-Programm zur Analyse von Raffineriedaten zu schreiben. An den genauen Zweck kann ich mich nicht mehr erinnern, aber ich weiß noch genau, dass es niemals funktionierte. Mir war nicht klar, wie man überhaupt programmiert, Cobol bot wenig Unterstützung für eine gute Programmgliederung, und strukturierte Programmierung war noch nicht erfunden. Mein Code bestand aus einer endlosen Folge von IF-Anweisungen mit Verzweigungen, bei denen der Code irgendetwas tun sollte, sobald ich herausgefunden hatte, was dieses Etwas war.
Ich versuchte auch, einige Fortran-Programme auf der IBM 7010 von Imperial ans Laufen zu bekommen. Schließlich hatte ich gewisse Kenntnisse in Fortran – auf jeden Fall bessere als in Cobol –, und Fortran hätte sich auch besser für die Datenanalyse geeignet. Erst nachdem ich mich wochenlang mit JCL herumgeschlagen hatte, der »Job Control Language« von IBM, stellte ich fest, dass der 7010 keinen Fortran-Compiler hatte. Die Fehlermeldungen von JCL waren so undurchschaubar, dass es bis dahin auch niemand sonst herausgefunden hatte.
Als ich nach diesem etwas frustrierenden Sommer für mein Abschlussjahr an die Universität zurückkehrte, war ich immer noch sehr stark an Computern interessiert. Es gab keine formalen Informatikkurse, aber dennoch schrieb ich meine Diplomarbeit über künstliche Intelligenz, was damals ein gefragtes Thema war. Sogenannte »Theorembeweiser« oder Programme, die Schach und Dame spielen können, sowie die maschinelle Übersetzung menschlicher Sprachen schienen damals alle in Reichweite zu sein und nur noch ein bisschen Programmierung zu erfordern.
Nachdem ich 1964 meinen Abschluss gemacht hatte, wusste ich nicht recht, was ich als Nächstes tun sollte. Wie viele andere Studenten verschob ich die Entscheidung, indem ich mich zu einem Aufbaustudium entschloss. Ich bewarb mich bei einem Dutzend Universitäten in den USA (was damals unter Kanadiern nicht üblich war – und ich bin aus Kanada) und erhielt von mehreren eine Zusage, darunter vom MIT und von Princeton. Princeton teilte mir mit, dass normalerweise drei Jahre bis zur Promotion vergingen, während es laut Aussage des MIT wahrscheinlich sieben Jahre sein würden. Außerdem bot mir Princeton ein komplettes Stipendium an, während ich beim MIT 30 Stunden die Woche als Forschungsassistent zu arbeiten hätte. Das machte die Entscheidung ziemlich einfach. Außerdem studierte Al Aho, ein guter Freund, der in Toronto ein Jahr über mir gewesen war, bereits in Princeton. Also machte ich mich auf den Weg, was sich später als eine äußerst vorteilhafte Entscheidung herausstellte.
1966 hatte ich erneut Glück, da ich ein Sommerpraktikum beim MIT ergattern konnte. Teilweise lag das daran, dass Lee Varian, ebenfalls Princeton-Student, dort im Vorjahr hervorragende Arbeit geleistet hatte. Den Sommer über nutzte ich das CTSS (Compatible Time-Sharing System) und schrieb Programme in MAD (Michigan Algorithm Decoder, ein Dialekt von Algol 58), um Tools für das neue Betriebssystem Multics zu schreiben, auf das ich in Kapitel 2 noch zurückkommen werde. (Multics wurde ursprünglich MULTICS geschrieben, aber die Variante mit Kleinbuchstaben wirkt optisch angenehmer. Ich verwende hier die besser lesbare Version, auch wenn sie historisch nicht korrekt ist. Das gilt auch für andere komplett in Großbuchstaben geschriebene Wörter, also z. B. UNIX/Unix.)
Mein offizieller Vorgesetzter beim MIT war Prof. Fernando Corbató, von allen nur »Corby« genannt, ein wunderbarer Gentleman, der nicht nur CTSS entworfen hatte, sondern auch für Multics verantwortlich war. Für seine grundlegenden Arbeiten an Timesharing-Systemen erhielt er den Turing Award 1990. Corby starb im Juli 2019 im Alter von 93 Jahren.
Corby leitete nicht nur das Design und die Implementierung von CTSS und Multics, sondern war auch der Erfinder von Passwörtern für den Computerzugriff. Im Stapelverarbeitungsbetrieb war so etwas nicht nötig gewesen, aber bei einem Mehrbenutzercomputer mit einem gemeinsamen Dateisystem war ein Sicherheitsmechanismus zum Schutz der privaten Dateien erforderlich.
Ich kann mich noch an die beiden kurzen, aussprechbaren Passwörter erinnern, die für mich im Sommer 1966 am MIT generiert wurden. Es waren zwei, nicht nur eines, da eines Tages jemand die Datei mit den Passwörtern und die Datei mit der Login-Meldung des Tages verwechselte. Da die Passwörter unverschlüsselt gespeichert waren, konnte dadurch jeder, der sich anmeldete, sämtliche Passwörter einsehen.
Mein Büro gehörte eigentlich Prof. Joseph Weizenbaum, der den Sommer über aber nicht da war, sodass ich es nicht mit ihm teilen musste. Anfang 1966 hatte Weizenbaum eine Beschreibung von Eliza veröffentlicht, einem Programm, das ein Gespräch mit einem Psychologen der Rogers-Schule simulierte. Eliza stellte einen der ersten Versuche dar, zur Interaktion mit einem Computer auf natürliche Sprache zurückzugreifen. Die Simulation wirkte erstaunlich überzeugend, zumindest wenn man ihr zum ersten Mal ausgesetzt wurde, und ich hatte großen Spaß dabei, sie Besuchern stolz vorzuführen. Heute sind im Web viele Eliza-Simulatoren zu finden. Es ist immer noch recht vergnüglich, ein paar Minuten damit herumzuspielen, allerdings werden ihre Schwächen sehr bald deutlich.
ELIZA: | Please tell me what’s been bothering you. |
SIE: | I’m trying to write a book about Unix. |
ELIZA: | Is it because you are trying to write a book about unix that you came to me? |
SIE: | Yes. |
ELIZA: | You are sure. |
SIE: | Yes. |
ELIZA: | You seem to be quite positive. |
SIE: | Yes. |
ELIZA: | I see. |
Im Sommer 1967 zog ich dann das große Los: Ich bekam eine Praktikumsstelle bei den Bell Labs in Murray Hill, wo ich im Computing Science Research Center für Doug McIlroy (Abbildung 1.4) arbeitete. Doug schlug mir vor, ein Problem bei der Beurteilung von Speicherzuweisungsverfahren zu untersuchen, was eines seiner langfristigen Forschungsgebiete war. In typischer Praktikantenmanier wurstelte ich also so herum und machte letzten Endes etwas völlig anderes – nämlich eine Bibliothek von Funktionen zur Vereinfachung der Listenverarbeitung in Fortran-Programmen aufzustellen. Den Sommer über schrieb ich Programme in einer strengen Assemblersprache für den damals aktuellen Großrechner in Murray Hill, einen GE 635. Dabei handelte es sich im Grunde genommen um eine verbesserte IBM 7094, aber auch um eine vereinfachte Version der GE 645, die eigens für Multics entworfen worden war. Das war so ziemlich die letzte Gelegenheit, bei der ich in Assemblersprache schrieb. Die ganze Sache war zwar völlig verfehlt, machte aber einen Riesenspaß, und damit war ich der Programmierung ein für alle Mal verfallen.
Abbildung 1.4
Doug McIlroy, ca. 1984 (freundlicherweise zur Verfügung gestellt von Gerard Holzmann)