Coders at Work

Bedeutende Programmierer und ihre Geschichten

von Peter Seibel

1. Auflage

Coders at Work – Seibel schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Thematische Gliederung: EDV & Informatik: Geschichte – EDV & Informatik: Geschichte

mitp/bhv 2011

Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 8266 9103 4

Inhaltsverzeichnis: Coders at Work – Seibel 15 Interviews mit bedeutenden Programmierern Außerdem zum Thema bei mitp: Jamie Zawinski Peter Persönliche Erfahrungen, Werdegang und Seibel Lebensgeschichten Brad Fitzpatrick Gedanken über die Programmierung und die Douglas Crockford Zukunft der Softwarebranche Seibel Peter Brendan Eich Dieses Buch enthält eine Sammlung aufschlussreicher Interviews mit 15 verdienten und zum Teil preisgekrönten Programmierern, die sich Joshua Bloch in der Branche einen Namen gemacht, bei bedeutenden Unternehmen gearbeitet oder auch selber Programmiersprachen entwickelt haben. Joe Armstrong Sie lassen den Leser ganz offen an ihren Erfahrungen in der - branche, ihrem Programmieralltag und ihrem beruflichen Werdegang teilhaben. Neben zahlreichen Anekdoten beschreiben sie auch lehrreiche ISBN 978-3-8266-9109-6 Simon Peyton Jones sowie leidvolle Erlebnisse ihrer Laufbahn, erläutern ihre Auffassung von gutem Programmierstil und gewähren darüber hinaus viele besondere Peter Norvig Einblicke in die Gedankenwelt erfolgreicher Programmierer.

Peter Seibel stellt in den Interviews Fragen zu zahlreichen Dingen, die Guy Steele Programmierer normalerweise für sich behalten. Sie verraten der Außen- welt, welche Gedanken sie sich machen, was sie im Hinblick auf die Dan Ingalls Programmierung wichtig finden, wie sie das Programmieren – teilweise autodidaktisch – erlernt und sich im Laufe der Zeit verbessert haben, L. Peter Deutsch was andere von ihnen lernen können und wie sie die Zukunft der Soft- warebranche sehen. Ken Thompson

Über den Autor: ISBN 978-3-8266-5885-3 Fran Allen Peter Seibel war als Java-Programmierer einer der ersten Mitarbeiter von WebLogic und hat außerdem für das Mother Jones Magazine in Perl Bernie Cosell programmiert. Er ist Autor des Buches Practical und lebt in Kalifornien. Donald Knuth

Die Namen und Werke ungefähr der Hälfte der Programmierer, die in diesem großartigen Buch zu Wort kommen, sind mir schon lange ein Begriff. Es ist faszinierend, ihre Lebensgeschichten und ihre Anschau- ungen über die Programmierung kennenzulernen. Noch besser ist aber, dass ich durch dieses Buch auch vieles über den Werdegang und die Phi- losophien der anderen Hälfte der Programmierer erfahren habe, deren Coders at Work Systementwicklungen mir zwar bekannt waren, über deren Persönlich- keiten ich jedoch bislang nichts wusste. Jeder, der sich für das Thema ISBN 978-3-8266-1355-5 Programmierung interessiert und wissen will, was berühmte Program- mierer auszeichnet, wird große Freude an diesem Buch haben. Bedeutende Programmierer - Dave Walden, Gründungsmitglied des BBN ARPANET-Teams. Bedeutende Programmierer und ihre Erfolgsgeschichten und ihre Programmierer Bedeutende Coders at Work at Coders und ihre Erfolgsgeschichten ISBN 978-3-8266-9103-4 ISBN 978-3-8266-9103-4 € 29,95

www.mitp.de (D)

978-3-8266-9103-4_umschlag04.indd 1 16.03.2011 17:14:57 00___Coders.book Seite 9 Donnerstag, 17. März 2011 12:04 12

Über den Autor

eter Seibel ist ein Autor, der zum Programmierer, oder auch ein Program- mierer, der zum Autor wurde. Nachdem er seinen ersten akademischen P Grad in Englisch erworben und kurze Zeit als Journalist gearbeitet hatte, erlag er den Verlockungen des Webs. In den frühen 1990er Jahren hackte er Perl-Programme für das Mother Jones Magazine und Organic Online. Er betei- ligte sich als einer der ersten Mitarbeiter von WebLogic an der Java-Revolution und unterrichtete später Java-Programmierung an der UC Berkeley Extension. 2003 gab er seinen Job als Architekt eines Java-basierten transaktionalen Mes- saging-Systems auf, um sich ein Jahr lang der Lisp-Programmierung zuzuwen- den. Am Ende wurden daraus allerdings zwei Jahre, in denen er Practical Com- mon Lisp schrieb, wofür er den Jolt Productivity Award erhielt. Seitdem arbeitet er als »Chef-Monkey« von Gigamonkeys Consulting, lernt Küken großzuziehen, praktiziert Tai Chi und bemüht sich, ein guter Vater zu sein. Er lebt mit seiner Frau Lily, seiner Tochter Amelia und seinem Hund Mahlanie in Berkeley, Kali- fornien.

© des Titels »Coders at Work« (ISBN 978-3-8266-9103-4) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9103 00___Coders.book Seite 10 Donnerstag, 17. März 2011 12:04 12

© des Titels »Coders at Work« (ISBN 978-3-8266-9103-4) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9103 00___Coders.book Seite 11 Donnerstag, 17. März 2011 12:04 12

Danksagungen

uerst möchte ich allen Gesprächspartnern danken, die mir großzügig ihre Zeit widmeten und ohne die dieses Buch nur ein kleines Pamphlet Z voller unbeantworteter Fragen geblieben wäre. Außerdem danke ich Joe Armstrong und Bernie Cosell sowie ihren Familien dafür, dass sie mir in Stock- holm und Virginia Unterkunft gewährten. Ein besonderer Dank geht auch an Peter Norvig und Jamie Zawinski, die sich nicht nur selbst meinem Rekorder stellten, sondern mir auch halfen, Kontakt mit meinen anderen Gesprächspart- nern aufzunehmen. Auf meinen diversen Reisen, die ich unternahm, um diese Interviews durch- zuführen, wurde ich zudem von mehreren anderen Familien willkommen geheißen: Mein Dank für ihre Gastfreundschaft geht an Dan Weinreb und Che- ryl Moreau in Boston, an Gareth und Emma McCaughan in Cambridge, Eng- land, und an meine Eltern, die mir in New York City eine hervorragende »Ope- rationsbasis« für meine Arbeit zur Verfügung stellten. Christophe Rhodes zeigte mir in meiner freien Zeit zwischen einigen Interviews die Cambridge University und rundete den Abend gemeinsam mit Dave Fox mit einem Dinner und einer Tour durch die Pubs von Cambridge ab. Dan Weinreb war nicht nur mein Gastgeber in Boston, sondern von Anfang an auch der geduldigste Kritiker hinsichtlich aller Aspekte dieses Buches, als ich noch nach potenziellen Gesprächspartnern Ausschau hielt. Zach Beane, Luke Gorrie, Dave Walden und meine Mutter lasen ebenfalls alle Kapitel und spra- chen mir zur rechten Zeit Mut zu. Wie es bei meinen Büchern inzwischen schon Tradition ist, trug Zach darüber hinaus einige Worte zur Titelei bei; dieses Mal war es der Untertitel der amerikanischen Originalausgabe des Buches, Reflections on the Craft of Programming. Alan Kay machte den hervorragenden Vorschlag, Dan Ingalls und L. Peter Deutsch zu interviewen. lie-

© des Titels »Coders at Work« (ISBN 978-3-8266-9103-4) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9103 00___Coders.book Seite 12 Donnerstag, 17. März 2011 12:04 12

12 Danksagungen

ferte nützliche Hintergrundinformationen über die Anfänge der Karriere von Zawinski und Dave Walden und schickte mir historische Dokumente über Bolt Beranek und Newman, damit ich mich besser auf mein Interview mit Bernie Cosell vorbereiten konnte. Ich möchte auch all jenen danken, die ich hier ver- gessen habe und mich gleichzeitig bei ihnen entschuldigen. Dank gebührt außerdem den Mitarbeitern von Apress, insbesondere Gary Cornell, der dieses Buch vorschlug, und meiner Korrektorin Candace English, die zahllose Fehler korrigierte. Schließlich bin ich meiner engen und weiteren Familie zu tiefstem Dank ver- pflichtet. Sowohl meine eigene Mutter als auch meine Schwiegermutter kamen zu Besuch, um unser Kind zu betreuen und mir mehr Freiraum für meine Arbeit zu verschaffen; meine Eltern gaben meiner Frau und unserem Kind für eine Woche ein Zuhause, damit ich ungestört eine weitere große Anstrengung unternehmen konnte. Und vor allem danke ich meiner Frau Lily und meiner Tochter Amelia: Auch wenn ich dann und wann Zeit für mich und meine Arbeit brauche, würde sich das alles ohne euch nicht lohnen. Ich liebe euch.

© des Titels »Coders at Work« (ISBN 978-3-8266-9103-4) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9103 00___Coders.book Seite 13 Donnerstag, 17. März 2011 12:04 12

Einführung

da Lovelace, eine Gräfin aus dem 19. Jahrhundert, entwarf Algorithmen für die niemals fertiggestellte Analytical Engine von Charles Babbage. A Lässt man ihre Arbeit außer Acht, existiert die Computerprogrammie- rung als eigenständiges menschliches Tätigkeitsfeld gerade einmal seit einem Menschenleben: Erst vor etwa 70 Jahren stellte Konrad Zuse 1941 seinen elek- tromechanischen Computer »Z3« vor, den ersten funktionsfähigen Allzweck- Computer. Und erst vor gut 60 Jahren wurden sechs Frauen – Kay Antonelli, Jean Bartik, Betty Holberton, Marlyn Meltzer, Frances Spence und Ruth Teitel- baum – aus dem »Computer Corps« der U.S. Army, wo sie von Hand ballisti- sche Tabellen berechneten, ausgewählt und zu den ersten Programmiererinnen des ENIAC, des ersten elektronischen Allzweck-Computers, ausgebildet. Noch heute leben viele Menschen – allen voran die Generation der Baby-Boomer und deren Eltern –, die in einer Welt ohne Computerprogrammierer geboren wur- den. Natürlich ist diese Welt inzwischen Vergangenheit. Heute gibt es zahllose Programmierer. Laut offizieller Arbeitsmarktstatistik war im Jahr 2008 etwa einer von 106 Berufstätigen in den USA – über 1,25 Millionen Menschen – Computerprogrammierer oder Softwareingenieur. Dabei wurden die professio- nellen Programmierer außerhalb der USA und die vielen Studenten, Hobby- Programmierer und Arbeitnehmer, die offiziell einen anderen Job ausüben, aber einen kleineren oder größeren Teil ihrer Arbeitszeit damit verbringen, Computer zu programmieren, nicht mitgezählt. Doch trotz der Millionen Menschen, die Code geschrieben haben und trotz der Milliarden oder gar Billionen Codezeilen, die seit der Entstehung dieses Berufszweiges geschrieben wurden, haben wir oftmals immer noch das Gefühl, Lösungen nicht systematisch, sondern ad hoc bei der Arbeit zu entwickeln. Ent- wickler diskutieren weiterhin, was das Programmieren an sich ist: Mathematik

© des Titels »Coders at Work« (ISBN 978-3-8266-9103-4) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9103 00___Coders.book Seite 14 Donnerstag, 17. März 2011 12:04 12

14 Einführung

oder Ingenieursdisziplin? Handwerk, Kunst oder Wissenschaft? Sicher streiten wir uns – oft leidenschaftlich – über die beste Methode der Programmierung: Das Internet quillt über von Blog-Beiträgen und Forum-Postings über diese oder jene Methode, Code zu schreiben. Und in Buchläden finden sich ganze Regale voller Bücher über neue Programmiersprachen, neue Methoden sowie neue Verfahren und Ansätze der Programmierung. Dieses Buch verfolgt einen anderen Ansatz, sich dem Begriff der Program- mierung anzunähern. Es folgt damit einer Tradition, die von der Literaturzeit- schrift The Paris Review begründet wurde, als sie zwei Professoren losschickte, um den Romancier E.M. Forster zu interviewen. Dies war das erste in einer Reihe von Frage & Antwort-Interviews, die später in dem Buch Writers at Work zusammengefasst wurden. Ich habe mich mit fünfzehn renommierten Programmierern mit einem umfangreichen beruflichen Erfahrungsschatz zusammengesetzt: gestandenen Systemhackern wie Ken Thompson, dem Erfinder von Unix, und Bernie Cosell, einem der ursprünglichen Implementierer des ARPANET; Programmierern, die ein großes akademisches Renommee mit Hackerqualitäten kombinieren, wie etwa Donald Knuth, Guy Steele und Simon Peyton Jones; Industriefor- schern, wie etwa Fran Allen von IBM, Joe Armstrong von Ericsson und Peter Norvig von Google; den Xerox-PARC-Alumni Dan Ingalls und L. Peter Deutsch; den ersten Netscape-Implementierern Jamie Zawinski und Brendan Eich; Ent- wicklern, die am Design und der Implementierung der Sprachen des gegenwär- tigen Webs beteiligt waren, wie etwa (erneut) Eich sowie Douglas Crockford und Joshua Bloch; und Brad Fitzpatrick, dem Erfinder des Live Journals und begab- ten Vertreter der Generation von Programmierern, die mit dem Web groß geworden sind. Ich befragte diese Entwickler zum Thema Programmieren: Wie sie es lern- ten, was sie dabei entdeckten und wie sie seine Zukunft einschätzen. Insbeson- dere versuchte ich, mit ihnen über Probleme zu reden, mit denen sich Program- mierer immer wieder herumschlagen: Wie sollte man Software designen? Welche Rolle spielen Programmiersprachen dabei, unsere Produktivität zu ver- bessern oder Fehler zu vermeiden? Gibt es Methoden, mit denen man schwer zu lokalisierende Fehler leichter auffinden kann? Da diese Fragen längst noch nicht geklärt sind, überrascht es wenig, dass meine Gesprächspartner manchmal recht unterschiedliche Meinungen vertre- ten. Jamie Zawinski und Dan Ingalls betonen, wie wichtig es sei, Code so schnell wie möglich zum Laufen zu bringen, während Joshua Bloch beschreibt, wie er APIs konzipiert und testet, ob sie den Code unterstützen können, den er für sie schreiben will, bevor er die Implementierung in Angriff nimmt. Donald Knuth berichtet davon, wie er eine vollständige Version seiner Typesetting-Soft- ware TeX mit Bleistift und Papier schrieb, bevor er begann, den ersten Code ein- zutippen. Und während Fran Allen einen großen Teil der Schuld für das abneh-

© des Titels »Coders at Work« (ISBN 978-3-8266-9103-4) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9103 00___Coders.book Seite 15 Donnerstag, 17. März 2011 12:04 12

Einführung 15

mende Interesse an der Informatik in den letzten Jahrzehnten auf C schiebt und Bernie Cosell diese Sprache als das »größte Sicherheitsproblem moderner Computer« bezeichnet, gibt Ken Thompson zu bedenken, Sicherheitsprobleme würden von Programmierern und nicht von ihren Programmiersprachen verur- sacht. Donald Knuth bezeichnet die Verwendung von Pointern in C als eine der »erstaunlichsten Verbesserungen der Notation«, die er je gesehen habe. Einige meiner Gesprächspartner machen sich über die Vorstellung lustig, formale Beweise könnten helfen, die Qualität von Software zu verbessern, wenngleich Guy Steele eine sehr hübsche Illustration sowohl für ihre Leistungsstärke als auch für ihre Einschränkungen liefert. Es gibt jedoch auch einige übereinstimmende Meinungen: Fast jeder betont, wie wichtig es sei, lesbaren Code zu schreiben. Die meisten meiner Gesprächs- partner konstatieren, dass sich die am schwierigsten aufzufindenden Bugs in nebenläufigem (concurrent) Code befinden. Und niemand scheint zu glauben, es gäbe eine allgemeingültige Lösung für die allgemeine Problematik des Pro- grammierens: Die meisten suchen immer noch nach einem besseren Verfah- ren, um Software zu schreiben – mithilfe neuer Methoden, Code automatisch zu analysieren, durch die Verbesserung der Zusammenarbeit von Programmie- rern oder die Erfindung (oder Konzeption) besserer Programmiersprachen. Und fast alle scheinen überzeugt zu sein, dass die Allgegenwärtigkeit von Mehr- kern-CPUs eingreifende Änderungen beim Schreiben von Software erfordert. Die wiedergegebenen Gespräche wurden zu einem bestimmten Zeitpunkt in der Geschichte unserer Branche geführt, deshalb werden zweifellos einige der Themen, die in diesem Buch diskutiert werden, von dringenden Gegenwarts- problemen zu historischen Kuriositäten verblassen. Doch selbst auf einem so jungen Arbeitsgebiet wie der Programmierung können wir aus der Geschichte lernen. Darüber hinaus bin ich sicher, dass meine Gesprächspartner einige wichtige Einsichten in das Wesen der Programmierung vermitteln, aus denen Programmierer heute und noch viele Generationen später lernen können. Schließlich noch eine Anmerkung zum Titel: Wir haben uns für Coders at Work entschieden, weil er an die bereits weiter vorne erwähnte Serie Writers at Work der Paris Review sowie an ein anderes Buch von Apress, Founders at Work, (dt. Ausgabe mitp-Verlag) erinnert, das für neu gegründete Technologie-Unter- nehmen leistet, was dieses Buch für die Computerprogrammierung zu sein ver- sucht. Mir ist klar, dass der Begriff »Coding« als Bezeichnung für einen recht beschränkten Teil der übergreifenden Aktivität der Programmierung interpre- tiert werden kann. Persönlich habe ich nie geglaubt, man könne ein guter Coder sein, ohne ein guter Programmierer zu sein oder man könne ein guter Pro- grammierer sein, ohne zugleich ein guter Designer, Kommunikator und Den- ker zu sein. Zweifellos sind alle meine Gesprächspartner in allen diesen und vie- len anderen Disziplinen versiert und ich bin überzeugt, dass dies in den Interviews, die Sie im Folgenden lesen werden, auch deutlich wird. Viel Spaß!

© des Titels »Coders at Work« (ISBN 978-3-8266-9103-4) 2011 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9103