211service.com
Toolkits für den Geist

Als der japanische Informatiker Yukihiro Matsumoto beschloss, Ruby zu entwickeln, eine Programmiersprache, die beim Aufbau von Twitter, Hulu und einem Großteil des modernen Webs geholfen hat, verfolgte er eine Idee aus einem Science-Fiction-Roman von 1966 namens Babel-17 von Samuel R. Delany. Das Herzstück des Buches ist eine erfundene Sprache mit dem gleichen Namen, die den Verstand aller, die sie sprechen, verbessert. Babel-17 ist eine so genaue analytische Sprache, dass es einem fast die technische Beherrschung jeder betrachteten Situation zusichert, sagt der Protagonist an einer Stelle. Mit Ruby wollte Matsumoto dasselbe: die Denkweise von Programmierern neu programmieren und verbessern.
Es klingt grandios, aber Matsumotos Ansicht ist keine Randerscheinung. Softwareentwickler als Spezies neigen dazu, davon überzeugt zu sein, dass Programmiersprachen den Geist stark genug im Griff haben, um die Art und Weise zu ändern, wie Sie Probleme angehen – sogar zu ändern, welche Probleme Sie zu lösen glauben. So bewerten sie Unternehmen, Produkte und ihre Mitbewerber: Welche Sprache verwenden Sie?
Diese Geschichte war Teil unserer Ausgabe vom Mai 2015
- Siehe den Rest des Problems
- Abonnieren
Das kann Außenstehenden helfen, die Softwareunternehmen zu verstehen, die so mächtig und wertvoll geworden sind, sowie die Produkte und Dienstleistungen, die unser Leben durchdringen. Eine Entscheidung, die wie die Insider-Insider-Baseball-Entscheidung erscheint – ob jemand ein neues Ding mit, sagen wir, Ruby, PHP oder C baut – kann uns alle plötzlich betreffen. Wenn Sie wissen wollen, warum Facebook so aussieht und funktioniert, wie es aussieht und was es als nächstes für und für uns tun kann, müssen Sie etwas über PHP wissen, die Programmiersprache, mit der Mark Zuckerberg es erstellt hat.
Unter Programmierern ist PHP vielleicht die am wenigsten respektierte aller Programmiersprachen. Ein jetzt kanonischer Blog-Beitrag zu seinen Mängeln beschrieb es als ein Fraktal von schlechtem Design , und diejenigen, die es freiwillig benutzen, werden als Amateure angesehen. Es gibt diesen Mythos der brillanten Technik, die in Facebook eingeflossen ist, sagt Jeff Atwood , Mitbegründer der beliebten Programmier-Frage-und-Antwort-Website Paketüberfluss . Aber sie haben PHP-Code in Windows XP erstellt. Sie waren Hacker im fast abwertenden Sinne des Wortes. Innerhalb von 10 Minuten nannte Atwood PHP ein schlurfendes Monster, eine Pandemie und ein Spukhaus, dessen Bewohner die Geister lieben gelernt haben.
Dinge überprüft
Babel-17
Von Samuel R. Delany
1966
Real World OCaml Von Yaron Minsky et al.
O'Reilly, 2013PHPHackScala
Die meisten erfolgreichen Programmiersprachen haben eine Gesamtphilosophie oder eine Reihe von Leitprinzipien, die ihr Vokabular und ihre Grammatik – die Menge möglicher Anweisungen, die sie dem Programmierer zur Verfügung stellen – zu einem logischen Ganzen organisieren. PHP nicht. Sein Schöpfer, Rasmus Lerdorf, gibt offen zu, dass er es gerade zusammengeschustert hat. Ich weiß nicht, wie ich es stoppen soll, sagte er in einem Interview von 2003 . Ich habe absolut keine Ahnung, wie man eine Programmiersprache schreibt – ich fügte einfach immer wieder den nächsten logischen Schritt hinzu.
Das beliebteste Beispiel für Programmierer ist eine PHP-Funktion namens mysql_escape_string, die eine Abfrage von schädlichen Eingaben befreit, bevor sie an eine Datenbank gesendet werden. (Als Beispiel für eine böswillige Eingabe denken Sie an ein Formular auf einer Website, das nach Ihrer E-Mail-Adresse fragt; ein Hacker kann Code in diesen Slot eingeben, um die Website zu zwingen, Passwörter auszuspionieren.) Wenn ein Fehler in der Funktion wurde eine neue Version namens mysql_ hinzugefügt Real _escape_string, aber das Original wurde nicht ersetzt. Das Ergebnis ist ein bisschen so, als hätte man in einem Airline-Cockpit zwei ähnlich aussehende Knöpfe direkt nebeneinander: einen zum Ausfahren des Fahrwerks und einen zum Ausfahren sicher . Es ist nicht nur ein Affront gegen den gesunden Menschenverstand – es ist ein Rezept für eine Katastrophe.
Doch trotz der weit verbreiteten Verachtung für PHP wurde ein Großteil des Webs auf seinem Rücken aufgebaut. PHP versorgt 39 Prozent aller Domains , nach einer Schätzung. Facebook, Wikipedia und die führende Veröffentlichungsplattform WordPress sind allesamt PHP-Projekte. Das liegt daran, dass PHP trotz all seiner Mängel perfekt für den Einstieg ist. Der Name stand ursprünglich für persönliche Homepage. Es machte es einfach, dynamische Inhalte wie das Datum oder den Namen eines Benutzers zu statischen HTML-Seiten hinzuzufügen. PHP ermöglichte den Sprung vom Basteln mit einem Web Seite? ˅ ein Web zu schreiben Anwendung so klein sein, dass man es nicht wahrnimmt. Sie mussten kein Profi sein.
Die Schnelligkeit von PHP war entscheidend für den Erfolg von Wikipedia, sagt Ori Livneh, Principal Software Engineer bei der Wikimedia Foundation, die das Projekt betreibt. Ich habe PHP immer gehasst, sagt er mir. Das Projekt leidet aufgrund seiner Abhängigkeit von der Sprache unter großen Designfehlern. (Sie sind zum Teil der Grund dafür, dass die Stiftung Wikipedia-Seiten nicht bis 2008 in einer für mobile Geräte angepassten Version zur Verfügung gestellt hat und warum die Seite bis 2013 keine benutzerfreundliche Bearbeitungsoberfläche bekam.) Aber PHP ließ Leute zu, die es nicht waren – oder waren kaum – Softwareentwickler, um neue Funktionen beizusteuern. So kamen beispielsweise Wikipedia-Einträge dazu, Hieroglyphen auf Ägyptologie-Seiten anzuzeigen und Noten zu handhaben.
Die Programmiersprache PHP hat die schnelle, hackerorientierte Unternehmenskultur von Facebook geschaffen und erhält sie aufrecht.
Sie hätten Google nicht in PHP gebaut, weil Google, um Google zu werden, genau eine Sache sehr gut machen musste – die Suche musste sparsam und schnell und akribisch ausgereift sein. Es wurde mit raffinierteren und leistungsfähigeren Sprachen wie Java und C++ erstellt. Im Gegensatz dazu ist Facebook ein Basar kleiner Experimente, ein Sammelsurium von Schaltflächen, Feeds und Gizmos, die versuchen, Ihre Aufmerksamkeit zu erregen. PHP ist dafür gemacht Herstellung – zum schnellen Kochen von Funktionen.
Man kann sich fast vorstellen, wie Zuckerberg an dem schicksalhaften Tag, an dem Facebook geboren wurde, in seinem Studentenwohnheim in Harvard sein Bestes tat, um seine Website online zu bringen. Das Web bewegt sich so schnell und die Benutzer sind so unbeständig, dass Sie den Moment nur festhalten können, indem Sie der Erste sind. Es spielte keine Rolle, ob er einen großen Schlammball, einen Teller Spaghetti oder einen schrecklichen Schlauchschrank machte (um dem reichen Lexikon der Programmierer zur Beschreibung von chaotischem Code zu entlehnen). Er hat die Sache erledigt. Die Leute könnten es gebrauchen. Er dachte nicht an schönen Code; er dachte an seine Freunde, die sich einloggen Das Facebook sich Bilder von Mädchen anzusehen, die sie kannten.
Heute ist Facebook mehr als 200 Milliarden Dollar wert und in seinen Büros hängen überall Schilder: Fertig ist besser als perfekt; Bewegen Sie sich schnell und brechen Sie Dinge. Diese kühnen Botschaften sollen die Mitarbeiter mit der Hackerkultur des Unternehmens auf dem Laufenden halten. Aber das sind genau diese PHPs Werte. Sich schnell zu bewegen und Dinge kaputt zu machen, ist in der Tat so sehr die Essenz von PHP, dass jeder, der die Sprache spricht, unauslöschlich so denkt. Man könnte sagen, dass die Sprache selbst die Kultur von Facebook geschaffen hat und aufrechterhält.
Die Geheimwaffe
Wenn Sie das genaue Gegenteil von PHP finden wollten, eine Art natürliches Experiment, um Ihnen zu zeigen, wie das andere Extrem aussah, könnten Sie nichts Besseres tun als die selbsternste Lower Manhattan-Zentrale der Finanzhandelsfirma Jane Street Capital. Das 400-Personen-Unternehmen behauptet, für etwa 2 Prozent des täglichen Aktienhandelsvolumens in den Vereinigten Staaten verantwortlich zu sein.
Als ich Yaron Minsky, den technischen Leiter von Jane Street, treffe, sitzt er an einem Schreibtisch, neben sich eine funktionierende Enigma-Maschine, eines von nur noch wenigen Dutzend Codegeräten aus dem Zweiten Weltkrieg, die es auf der Welt gibt. Ich würde es für den klaren Gewinner des Wettbewerbs für die coolste Geheimwaffe im Raum halten, wenn er nicht ständig über eine obskure Programmiersprache namens OCaml sprechen würde. Minsky, ein promovierter Informatiker, überzeugte seinen Arbeitgeber vor 10 Jahren, das gesamte Handelssystem des Unternehmens in OCaml neu zu schreiben. Davor benutzte fast niemand die Sprache für die eigentliche Arbeit; es war an einem französischen Forschungsinstitut entwickelt von Akademikern, die versuchen, ein Computersystem zu verbessern, das automatisch mathematische Theoreme beweist. Aber Minsky dachte, dass OCaml, das er in der Graduiertenschule kennengelernt hatte, die komplexen Excel-Tabellen ersetzen könnte, die die Handelssysteme von Jane Street antrieben.
Das große Verkaufsargument von OCaml ist sein Typsystem, das so etwas wie die Grammatikprüfung von Microsoft Word ist, außer dass Sie es nicht ausführen können, anstatt nur eine verschnörkelte grüne Linie unter den Code zu setzen, den es für falsch hält. Programme, die mit einem Typensystem geschrieben wurden, sind in der Regel viel zuverlässiger als solche, die ohne eines geschrieben wurden – nützlich, wenn ein Programm an einem großen Tag 30 Milliarden Dollar handeln könnte.
Minsky sagt, dass das Typsystem von OCaml es den Programmierern von Jane Street ermöglicht, sich auf höherwertige Probleme zu konzentrieren, indem es Fehler abfängt. Man fragt sich, ob sie das ständige Nörgeln des Systems im Laufe der Zeit verinnerlicht haben, sodass OCaml zu einer Art Neusprech geworden ist, der es unmöglich macht, schlechte Gedanken zu denken.
Der Haken an der Sache ist, dass die Programmierer ihrem Code komplexe Anmerkungen hinzufügen müssen, um den vollen Nutzen aus der Typprüfung zu ziehen. Es ist, als ob die Grammatikprüfung von Word verlangt, dass Sie alle Ihre Sätze grafisch darstellen. Das Schreiben von Code mit Typbeschränkungen kann lästig und sogar demoralisierend sein. Um es noch schlimmer zu machen, handelt OCaml mehr als die meisten anderen Programmiersprachen mit einer Art tiefer abstrakter Mathematik, die weit über die meisten Programmierer hinausgeht. Die Strenge der Sprache ist für manche Leute jedoch wie Katzenminze und verschafft Jane Street einen ungewöhnlichen Vorteil auf dem engen Stellenmarkt für Programmierer. Softwareentwickler schließen sich trotz PHP meist Facebook und Wikipedia an. Minsky sagt, dass OCaml – zusammen mit seinem Buch Real World OCaml – trägt dazu bei, ein stetiges Angebot an qualitativ hochwertigen Kandidaten anzulocken. Die Anziehungskraft liegt nicht nur in der Sprache, sondern in der Art der Menschen, die sie verwenden. Jane Street ist ein Unternehmen, in dem im Pausenraum Schach für vier Personen gespielt wird. Die Kultur der Wettbewerbsintelligenz und die Verwendung einer ausgefallenen Programmiersprache scheinen Hand in Hand zu gehen.
Google scheint einen ähnlichen Trick mit Go zu versuchen, einer von ihm entwickelten Hochleistungs-Programmiersprache. Es soll die Funktionsweise des Webs eleganter und effizienter machen und eignet sich gut für die Entwicklung der Art von High-Stakes-Software, die zum Ausführen der Serversammlungen hinter großen Webdiensten erforderlich ist. Es fungiert auch als eine Art Hundepfeife für Programmierer, die sich für das Neue und das Schwierige interessieren.
Aufwachsen
Ende 2010 hatte Facebook eine Krise. PHP wurde nicht für Leistung gebaut, aber es wurde aufgefordert, Leistung zu erbringen. Die Seite wuchs so schnell, dass es den Anschein hatte, als würde sie zusammenbrechen, wenn sich etwas nicht drastisch änderte.
Die Sprache komplett zu wechseln, war keine Option. Facebook hatte Millionen von Zeilen PHP-Code, Tausende von Ingenieuren, die Experten darin waren, ihn zu schreiben, und mehr als eine halbe Milliarde Nutzer. Stattdessen wurde ein kleines Team leitender Ingenieure mit einem speziellen Projekt beauftragt, um einen Weg zu finden, wie Facebook weiter funktionieren kann, ohne seine abgehackte Muttersprache aufzugeben.
Ein Teil der Lösung bestand darin, eine Software – einen Compiler – zu entwickeln, der den PHP-Code von Facebook in viel schnelleren C++-Code übersetzte. Die andere war eine Meisterleistung der Computerlinguistik, die es den Programmierern von Facebook ermöglichte, ihre PHP-ian-Kultur beizubehalten, aber zuverlässigeren Code zu schreiben.
Startups können die Macht von Programmiersprachen geschickt nutzen, um ihre Organisationspsychologie zu manipulieren.
Das Rettungsteam tat dies, indem es einen PHP-Dialekt namens Hack erfand. Hack ist PHP mit einem Optional Typensystem; Das heißt, Sie können einfaches, altes, schnelles und schmutziges PHP schreiben – oder, wenn Sie möchten, können Sie sich an den Mast binden und Anmerkungen hinzufügen, damit das Typsystem die Korrektheit Ihres Codes überprüft. Dass dieser Typprüfer vollständig in OCaml geschrieben ist, ist kein Zufall. Facebook wollte, dass seine Programmierer sich in ihrer Muttersprache schnell bewegen, aber es wollte nicht, dass sie dabei Dinge kaputt machen mussten. (Letztes Jahr kündigte Zuckerberg einen neuen technischen Slogan an: Bewegen Sie sich schnell mit stabiler Infrastruktur und verwenden Sie die Hacker-Kurzschrift für die Infrastruktur, die die Site am Laufen hält.)
Etwa zur gleichen Zeit durchlief Twitter eine ähnliche Transformation. Der Dienst wurde ursprünglich mit Ruby on Rails erstellt – einem beliebten Web-Programmier-Framework, das mit Matsumotos Ruby erstellt und größtenteils von PHP inspiriert wurde. Dann kam die Flut von Benutzern. Wenn jemand mit Hunderttausenden von Followern twitterte, mussten die Timelines von Hunderttausenden anderer Personen sofort aktualisiert werden. Große Tweets wie diese überwältigten häufig das System und zwangen die Ingenieure, die Website herunterzufahren, damit sie aufholen konnte. Sie taten es so oft, dass der Fehlerwal auf der Wartungsseite des Unternehmens selbst berühmt wurde. Twitter stoppte die Blutung, indem es große Teile der Rohrleitungen des Dienstes durch eine Sprache namens Scala ersetzte. Es sollte nicht überraschen, dass Scala, wie OCaml, von Akademikern entwickelt wurde, ein mächtiges Typensystem hat und Korrektheit und Leistung schätzt, selbst wenn die Freiheit und Freude des einzelnen Programmierers an seinem Handwerk zu Lasten geht.
So wie Startups reifen, indem sie endlich herausfinden, woher ihre Einnahmen kommen werden, können sie die Macht von Programmiersprachen geschickt nutzen, um ihre Organisationspsychologie zu manipulieren. Programmiersprachen-Designer Guido van Rossum , der sieben Jahre bei Google verbracht hat und jetzt bei Dropbox arbeitet, sagt, dass ab einer bestimmten Größe eines Softwareunternehmens Chaos nur noch durch die Verwendung einer Sprache verhindert werden kann, die vom Programmierer im Vorfeld mehr verlangt. Es fühlt sich an, als würde es dich ausbremsen, weil du alles dreimal sagen musst, sagt van Rossum. Deshalb warten viele Startups so lange sie können, bevor sie umsteigen. Sie verlieren einige der prahlerischen Hacker, die Ihnen den Einstieg ermöglicht haben, und die Möglichkeit, dass kleine Teams neue Funktionen herausbringen können. Aber eine anspruchsvollere Sprache hilft den Menschen im gesamten Unternehmen, den Code des anderen zu verstehen, und verleiht Ihrem Produkt die nötige Stabilität, um Teil der Einrichtung des täglichen Lebens zu werden.
Dass Software-Startups solche Manöver durchführen können, könnte sogar erklären, warum sie so mächtig sein können. Die wachsende Reichweite von Computern ist ein Teil davon. Aber diese Unternehmen haben auch die einzigartige Fähigkeit, sich neu zu erfinden. Wenn sie sich verändern und wachsen, können sie mehr tun, als nur das Organigramm neu zu zeichnen. Da sie in Code eingebaut sind, können sie etwas viel drastischeres tun. Sie können sich selbst, ihre Kultur, ihre Denkweise neu vernetzen.
James Somers ist Autor und Programmierer in New York. Er arbeitet bei genius.com .