powered by TEMPTON

Helden der IT

Ken Thompson: Ich Chef, UNIX!

gepostet von am

Unser heutiger Held der IT, Ken Thompson, hatte seine Finger IT-historisch bei so mancher Entwicklung mit Nachwirkungen bis in die Gegenwart im Spiel. Wir dringen nadelstichartig in seine Bio vor: Wie Thompson auf Unix kam, wie er das Schachcomputing revolutionierte, was sein Go anderen Programmiersprachen voraus hat und was er von der Konkurrenz hält.

Alternativtext

Ken Thompson und Dennis Ritchards: Die beiden Unix-OGs an Ihrem PDP-11. (Bild: Wikimedia)

Die Stadt des Jazz, die Zeit des Krieges: Kenneth Lane Thompson wurde am 4. Februar 1943 in New Orleans geboren. So viel hatte er allerdings von The Big Easy und auch Louisiana generell nicht. Da seine Eltern beide bei der Navy arbeiteten und oft umstationiert wurden, gehörten Umzüge zum Alltag in seiner Kindheit. Was noch zu seinem Alltag gehörte: Schon im Grundschulalter zeigte sich seine stetige Faszination für die Arithmetik. Kein mathematisches Problem, das ihm über den Weg lief, ließ er links liegen – auch zum Binär-System entwickelte er hier eine gewisse Bindung. Als Ken schließlich bereits zum 17. Mal mit 110.000 Stundenkilometern die Sonne umrundete, wurden seine Eltern sesshaft und gaben ihm so die Chance, sich voll auf seine Laufbahn zu konzentrieren. Mit Erfolg: Bis 1965 hatte er den Bachelor als E-Techniker und Informatiker an der UC Berkeley in der Tasche, 1966 folgte direkt der Master im gleichen Fach.

Space Travel Screenshot

Die unendlichen Weiten des Weltraums, effektvoll und detailverliebt eingefangen in Space Travel. (Bild: Wikimedia)

Man graduiert nicht einfach an der UC Berkeley, ohne später etwas Bedeutsames für Menschheit, Technologie oder Computertechnik zu erforschen, erfinden oder erdenken – Hubble-Forscher, Apple-Gründer, Word-Erfinder, HID-Pioniere und viele weitere winken von der Seitenlinie. Das ging auch an der Industrie nicht vorbei. Direkt nach seinem Master, 1966 AD, gelang es den Bell Labs, Thompson unter Vertrag zu nehmen. Dort ging es direkt zur Sache: Zusammen mit Dennis Ritchie machte sich Thompson an die Entwicklung von Multics, einem neuartigen Betriebssystem. Und wenn man schon einmal dabei ist, kann man die dafür nötige Programmiersprache, Bon, und ein frühes Weltraum-Simulationsspiel (Space Travel) doch einfach gleich mit aus dem Boden stampfen.

Vom Toolset zum OS

Überraschenderweise war letzteres der Funke, den es brauchte, um Thompson auf das Radar unserer Reihe “Helden der IT” zu befördern. Die Bell Labs sahen in MULTICS keine Zukunft und zogen monetär den Stecker, auch weil die Rechenzeit begrenzt und teuer war. Ein Slot für eine Runde Space Travel kostete so schon etwa zwischen 50 und 75 USD. Und einen neuen PDP-10 Rechner für die Entwicklung eines Nachfolge-OS wollte man Thompson so kurz nach der Terminierung des letzten Projektes auch nicht billigen. Apropos “billig”: Genau das war dieser mit 120.000 USD Anschaffungskosten nämlich nicht (inflationsbereinigt heute etwa das siebenfache), die Entscheidung der Bell Labs verwundert also kaum. Thompson ließ das nicht auf sich sitzen: Der Anekdote nach erstand er aus seiner näheren Umgebung einen alten PDP-7 “Mini”-Computer, um weiter Space Travel spielen zu können, und machte sich an die Arbeit. Um das Programm voll auf die neue Umgebung zu übertragen, war einiges nötig. Und Thompson und seine Freunde setzten es um: ein hierarchisches Dateisystem, Prozesse und Gerätedateien, ein eigenes CLI, Pipelines, diverse kleinere Tools – you name it.

Nachtragende Namenswahl

Diese Ansammlung technologischer DIY-Workarounds schaffte es schließlich an einen Punkt, bei dem man sich entschied, dann gleich ein eigenes OS daraus zu machen. Das Baby brauchte nur noch einen Namen. Die Schmach des eingestampften MULTICS noch im Hinterkopf, schlug Brian Kernighan, einer der involvierten Devs, als Wortwitz erst UNICS und schließlich Unix vor – vom organisierten Chaos zur Einheit. Dieses von frechem Zwinkern begleitete Nachtragen hatte seinerseits langfristige Folgen. Unzählige zukünftige Projekte sollten von da an nicht nur einen derivativen technischen Kern, sondern auch den Namen Unix als Vermächtnis mit sich herum tragen. Ken Thompson derweil merkte, dass es mit der Verknüpfung der einzelnen Technologien noch nicht getan war, eine gemeinsame Programmiersprache musste her – B betrat Stage und Stack.

Unix 7 Terminal

Das Terminal von Unix 7: Home, sweet SSHome. (Bild: Wikimedia)

Thompson hatte bis zu dieser Zeit bereits reguläre Ausdrücke für sich entdeckt und mit QED einen Texteditor, der diese in Suchstrings unterstützte, entworfen. Auch davon sind noch Spuren in Unix enthalten: Das Q fiel vorne weg, das “ED” verlor seine kapitale Anmutung, und zack – ed ist noch heute Unix-Standard-Editor und war ein entscheidender Einfluss für die rapide angestiegene regex-Verbreitung in anderer Software.

Ziemlich BSD Freunde

Von da an war Unix Ritchies und Thompsons Ein und Alles. Ihr Einfluss auf die Weiterentwicklung war so groß, dass erst einmal alle nicht klar auf jemand anderen zurückführbaren Einträge im Changelog direkt den beiden attribuiert wurden. Thompson hielt später fest: Die ersten Unix-Iterationen waren gänzlich sein Produkt, Ritchie stieg etwas später in die Entwicklungen ein, mutierte aber sofort zum Evangelisten. Die Verantwortlichkeiten waren daraufhin klar: Ritchie übernahm die Weiterentwicklung der I/O-Systeme und der programmiersprachlichen Basis und widmete sich fortan dem Umschreiben des ganzen Systems – Hand in Hand mit der Entwicklung einer neuartigen High-Level-Sprache. Diese enge Abhängigkeit von Neuentwicklungen am System und Anpassungen an der Sprache an sich machte diese später prädestiniert für Systementwicklungen. Aus B wurde langsam C.

Thompson derweil widmete sich der Weiterentwicklung von Unix an sich. 1975 kam es zur Feuerprobe: In einem Sabbatical bei den Bell Labs kehrte er zur UC Berkeley zurück, um Unix V6 auf einem PDP-11/70 ans Laufen zu bringen. Die UC wartete das System schließlich auch nach Thompsons Weggang weiter und machte eine eigene Fork daraus, die Berkeley Software Distribution. BSD stellte sich als veritable Basis für eine ganze Reihe von Derivaten heraus, mittelbar ist heute etwa MacOS noch klar auf diese Distribution zurückzuführen.

Alternativtext

Mit echter Schach-Matte: Ken Thompson nimmt einen Computerschachpokal entgegen. (Bild: Museum of Computer History)

Nicht nur eine Beschachtigungstherapie

Das Jahr war 1971, womöglich hing ein Fan-Kalender der Stones über Thompsons Schreibtisch. Und falls nicht: Mit seinen Unix-Projekten hatte Ken Thompson genug Hobbies. Eins davon: Computer-Schach. Das Schachprogramm Chess, das mit Unix ausgeliefert wurde, dient als erstes Indiz dafür. Zwar war es kein Zeichen für kreative Softwarebenennung, aber doch zumindest Grundstein für das später auch hardwarebeschleunigte Belle, einen Schachcomputer nah am Weltmeister-Niveau. Das war noch nicht alles: Seine Forschungen führten ihn auch zu einer kompletten Durchdeklination aller möglichen Schach-Abschlüsse mit vier, fünf oder sechs auf dem Feld verbliebenen Figuren. Einmal als Datenbank in Schachprogrammen implementiert, konnten diese das “Endgame” dann einfach perfekt herunterspielen, sobald die dafür nötigen Spielkonditionen erst einmal erreicht waren. Unter anderem diese Forschungen waren es auch, die Thompson und seinen Computerschach-Errungenschaften anno 2001 eine Ehrenausgabe im ICGA Journal einbringen sollte.

Plan 9 from Cyberspace

Zurück zu Unix: In der ersten Hälfte der 1980er widmete Thompson sich dem Refinement von Unix auf BSD-Codebasis – bis Unix 10 sein Hauptprojekt. Für diese Leistung wurde er bereits 1980 in die National Academy of Engineering berufen, da er mit Unix "ein Betriebssystem [entwarf], dessen Effizienz, Breite, Leistung und Stil die Ausbeutung von Minicomputern einer Generation bestimmt haben". Das brachte ihm nebenbei auch den Turing-Award (1983) und die Mitgliedschaft in der National Academy of Sciences (1985) ein, bei deren Dankesrede er nebenbei mit der Trust-Attack (später auch als Thompson-Hack bekannt) eine mögliche Unix-Backdoor demonstrierte, die für die noch junge Disziplin der IT-Security ein starkes Vermächtnis hatte.

EXKURS: UNIX oder Unix?

Seit post-unixschem Menschengedenken spaltet die Schreibweise des Wortes die IT-Welt. Beide Formen sind verbreitet und werden synonym verwendet. Dennis Ritchie zufolge wurde das gecapslockte “UNIX” erstmals 1974 in der Fachzeitschrift CACM in einem Artikel mit dem Titel “The Unix Time-Sharing System” benutzt. Überraschenderweise, schrieb man es dort doch vorher auch noch “normal”. Der Grund war simpel: Ein neuer Setzer, der das gerade frisch entwickelte Unix-Zeichensetzungsprogramm troff mit seiner Fähigkeit für Kapitälchen voll ausnutzen wollte. Zwar versuchte Dennis Ritchie später, diese Schreibweise in einigen Bell Labs-Papieren auf "Unix" zu ändern (ihm missfiel der Gedanke, dass UNIX als Akronym missinterpretiert werden konnte), schließlich ließ er sich aber doch für die separatistische Schreibweise erweichen. Während das Markenzeichen heute also "UNIX" ist, sind in der Sprachpraxis beide Formen legitim. In der Unix-Jargon-Datei selbst wird aus Respekt vor Ritchies Wünschen jedoch nur "Unix" benutzt. So that’s what we do.

Mitte des Jahrzehnts stand dann Plan 9 auf dem… Plan, ein anderes OS-Projekt der Bell Labs. Das Ziel: Unix zu ersetzen. Dafür baute Thompson zwar auf viele Prinzipien des alteingesessenen Herrschers auf, wandte sie aber im breiten Maßstab auf alle wichtigen Systemkomponenten an. Auf die Frage “Was will Unix eigentlich wirklich erreichen?” sollte Plan 9 die Antwort sein. Der Ansatz dazu war, wirklich alle Ressourcen, ob lokal oder remote, ob Hardware- oder Softwarekomponente, wie Dateien eines gemeinsamen Standardprotokolls (9P) anzusprechen. Egal, was angesprochen werden soll – wenn es digital ist, kocht es auch nur mit Byteströmen. Everything is a file war geboren. Das Paradigma ist noch heute bei unixoiden OS implementiert und zumindest einige seiner Implikationen sind auch in vielen anderen Betriebssystem längst Standard.

Alternativtext

Könnte auch Thompsons Bruder sein – ist aber sein Klaas Clever: Bjarne Stroustrup, Erfinder von C++. (Bild: Wikimedia)

Auch an den frühen Versionen von C++ hatte Thompson seine Finger im Spiel. Dessen Erfinder, Bjarne Stroustrup, wollte er mit eigenen Programmen beim Testing unterstützen – entschied sich kurze Zeit später aber prompt dagegen. Ihn nervten die starken Inkompatibilitäten zwischen den Versionssprüngen einfach zu sehr, noch 2009 unterstrich er seine Abneigung in einem Interview.

Es [C++] macht viele Dinge halbwegs gut und es ist nur ein Müllhaufen von Ideen, die sich gegenseitig ausschließen.
Ken Thompson

WTF ist UTF?

Im Zuge von Plan 9 setzte Thompson in den frühen 90ern schließlich ein weiteres Zeichen. Respektive buchstäblich gleich mehrere: Zusammen mit Rob Pike stellte er für das Betriebssystem mit UTF-8 einen eigenen Zeichensatz auf die Beine – und damit die mal eben auch heute noch am weitesten verbreitete Kodierung für Unicode-Zeichen. Glücklicherweise, möchte man sagen, sonst würde auch die Darstellung dieser Textzeilen schwer fallen – basieren doch mehr als 90 % der Seiten im WWW auf eben diesem Zeichensatz. Der Grund ist ein funktionaler: Mit nur einem Byte Größe pro Zeichen lässt sich die ganze englische Sprache abbilden, mit zwei Bytes kommen bereits deutsche Umlaute, Griechisch und Kyrillisch dazu. Qualifizieren muss man diese Errungenschaft trotzdem: Bei variabler Bytezahl pro Zeichen ist die erforderliche Rechenleistung für die Erkennung der richtigen Darstellung deutlich höher. Windows etwa setzt daher nativ auf einen Wechsel zwischen UTF-8 und UTF-32, um diesen in den Griff zu bekommen.

Alternativtext

ASCIIs ascend ist vorbei, bei einem internationalen Internet ist UTF-8 angesagt. (Bild: Wikimedia)

Go for Google

Für Thompson hatten damit 2000 die Abschiedsglocken bei den Bell Labs geschlagen. Bis 2006 sprang er bei einem amerikanischen Glasfaser-Netzprovider als Teilhaber ein, das ein Jahr später durch die Übernahme von Ericsson zerfasern sollte. Mittlerweile engagiert sich der Unix-Vater in einem kleinen Städtchen namens Mountain View, CA für ein wieder etwas bekannteres Unternehmen: Google. Als Co-Lead im Software-Engineering brachte er Go mit auf den Weg, die erste finale Version präsentierte man 2009. Die Ratio hinter Go: Man war mit C++ oder Java im Hinblick auf moderne Computing-Strömungen wie skalierbare Netzwerkdienste, Cluster und Cloud Computing unzufrieden. Die Compiler von C und C++ waren Thompson, Griesemer und Pike zu ineffizient, die neue Sprache sollte die Nebenläufigkeit mit nativen Sprachelementen ermöglichen und großen Dev-Teams die gemeinsame Arbeit an umfangreichen Codebases erleichtern. Weitere wichtige Elemente sind ein eigener Garbage Collector, die Verwendung von Zeigern ohne Zeigerarithmetik und eine hohe Geschwindigkeit beim Compiling.

Als wir drei [Thompson, Rob Pike und Robert Griesemer] anfingen, war es reine Forschung. Wir trafen uns und beschlossen, dass wir C++ hassen. (Lachen).... Wir begannen mit der Idee, dass wir alle drei in jedes Feature der Sprache überredet werden mussten, so dass aus irgendeinem Grund kein fremder Müll in die Sprache gebracht wurde.
Ken Thompson

Go hat noch keine Riesencommunity, diese ist dafür aber umso eingeschworener. Und auch einige der richtig Großen aus dem Silicon Valley und andere Big Player setzen schon voll auf Golang – um nur einige zu nennen: Docker, Bit.ly, Baidu, CloudFlare, Disqus, Dropbox, Github, New York Times, Twitch, Tumblr, Twitter und so weiter und so fort. Hehre Ziele und namhafte Adopter in allen Ehren, die Verbreitung von Go ist laut TIOBE-Index rückläufig. Aktuell steht Go auf Platz 17, ein Rückgang von Platz 12 im Vorjahresvergleich, die Traktion lässt anscheinend nach. Ob Thompson und seine tech-kühne Crew damit also langfristig Erfolg haben werden oder sich die Dev-Bauernweisheit “There are only two kinds of languages: the ones people complain about and the ones nobody uses” wieder bewahrheitet – keine Ahnung. Den Regalplatz für ein paar weitere Preise als Ausrufezeichen hinter seinen (digital-)gesellschaftlichen Geniestreichen hat er aber sicher noch.

Ken Thompson ist eben ein echtes Uni(x)kat.