Toolkits voor de geest





Toen de Japanse computerwetenschapper Yukihiro Matsumoto besloot Ruby te creëren, een programmeertaal die heeft bijgedragen aan de ontwikkeling van Twitter, Hulu en een groot deel van het moderne web, jaagde hij op een idee uit een sciencefictionroman uit 1966 genaamd Babel-17 door Samuel R. Delany. De kern van het boek is een verzonnen taal met dezelfde naam die de geest van iedereen die het spreekt opwaardeert. Babel-17 is zo'n exacte analytische taal, het verzekert je bijna van technische beheersing van elke situatie waar je naar kijkt, zegt de hoofdpersoon op een gegeven moment. Met Ruby wilde Matsumoto hetzelfde: herprogrammeren en verbeteren van de manier waarop programmeurs denken.

Het klinkt grandioos, maar dat van Matsumoto is geen zijaanzicht. Softwareontwikkelaars als soort zijn er vaak van overtuigd dat programmeertalen een greep op de geest hebben die sterk genoeg is om de manier waarop je problemen benadert te veranderen, zelfs om te veranderen welke problemen je denkt op te lossen. Het is hoe ze bedrijven, producten, hun collega's beoordelen: welke taal gebruik je?

Engineering van de perfecte baby

Dit verhaal maakte deel uit van ons nummer van mei 2015



  • Zie de rest van het nummer
  • Abonneren

Dat kan buitenstaanders helpen de softwarebedrijven te begrijpen die zo machtig en waardevol zijn geworden, en de producten en diensten die ons leven bezielen. Een beslissing die de meest innerlijke vorm van honkbal lijkt - of iemand nu iets nieuws bouwt met bijvoorbeeld Ruby of PHP of C - kan ons allemaal plotseling raken. Als je wilt weten waarom Facebook eruitziet en werkt zoals het doet en wat voor soort dingen het vervolgens voor en voor ons kan doen, moet je iets weten over PHP, de programmeertaal waarmee Mark Zuckerberg het heeft gebouwd.

Onder programmeurs is PHP misschien wel de minst gerespecteerde van alle programmeertalen. Een nu canonieke blogpost over zijn gebreken beschreef het als: een fractal van slecht ontwerp , en degenen die er gewillig gebruik van maken, worden als amateurs gezien. Er is een mythe van de briljante techniek die in Facebook is terechtgekomen, zegt Jeff Atwood , mede-maker van de populaire programmeervraag-en-antwoordsite Stapeloverloop . Maar ze waren PHP-code aan het bouwen in Windows XP. Het waren hackers in bijna de denigrerende zin van het woord. In een tijdsbestek van 10 minuten noemde Atwood PHP een schuifelend monster, een pandemie en een spookhuis waarvan de bewoners van de geesten zijn gaan houden.

Dingen beoordeeld

  • Babel-17

    Door Samuel R. Delany
    1966



  • Real World OCaml door Yaron Minsky et al.

    O'Reilly, 2013PHPHackScala

De meeste succesvolle programmeertalen hebben een algemene filosofie of reeks leidende principes die hun vocabulaire en grammatica - de reeks mogelijke instructies die ze beschikbaar stellen aan de programmeur - in een logisch geheel organiseren. PHP niet. De maker, Rasmus Lerdorf, geeft vrijelijk toe dat hij het gewoon in elkaar heeft geflanst. Ik weet niet hoe ik het moet stoppen, zei hij in een interview in 2003 . Ik heb absoluut geen idee hoe ik een programmeertaal moet schrijven - ik bleef maar de volgende logische stap toevoegen.

Het favoriete voorbeeld van programmeurs is een PHP-functie genaamd mysql_escape_string, die een query ontdoet van kwaadaardige invoer voordat deze naar een database wordt verzonden. (Als voorbeeld van kwaadwillende invoer, denk aan een formulier op een website die om uw e-mailadres vraagt; een hacker kan code in dat slot invoeren om de site te dwingen wachtwoorden op te hoesten.) Toen er een bug werd ontdekt in de functie is een nieuwe versie toegevoegd, genaamd mysql_ echt _escape_string, maar het origineel is niet vervangen. Het resultaat is een beetje alsof je twee op elkaar lijkende knoppen naast elkaar hebt in de cockpit van een luchtvaartmaatschappij: een die het landingsgestel neerzet en een die het neerzet veilig . Het is niet alleen een belediging van het gezond verstand, het is een recept voor rampen.



Maar ondanks de wijdverbreide minachting voor PHP, is een groot deel van het web op zijn rug gebouwd. PHP beheert 39 procent van alle domeinen , met één schatting. Facebook, Wikipedia en het toonaangevende publicatieplatform WordPress zijn allemaal PHP-projecten. Dat komt omdat PHP, ondanks al zijn gebreken, perfect is om aan de slag te gaan. De naam stond oorspronkelijk voor persoonlijke homepage. Het maakte het gemakkelijk om dynamische inhoud, zoals de datum of de naam van een gebruiker, toe te voegen aan statische HTML-pagina's. PHP maakte de sprong van het sleutelen aan een web mogelijk site een web schrijven sollicitatie zo klein zijn dat het niet waarneembaar is. Je hoefde geen pro te zijn.

Het succes van PHP was cruciaal voor het succes van Wikipedia, zegt Ori Livneh, een van de belangrijkste softwareontwikkelaars bij de Wikimedia Foundation, die het project beheert. Ik heb altijd een hekel gehad aan PHP, vertelt hij me. Het project lijdt aan grootschalige ontwerpfouten als gevolg van zijn afhankelijkheid van de taal. (Dit is gedeeltelijk de reden waarom de stichting tot 2008 geen Wikipedia-pagina's beschikbaar heeft gesteld in een versie die is aangepast voor mobiele apparaten, en waarom de site pas in 2013 een gebruiksvriendelijke bewerkingsinterface kreeg.) Maar PHP stond mensen toe die dat niet waren -of waren nauwelijks-software-ingenieurs om nieuwe functies bij te dragen. Zo kwamen Wikipedia-vermeldingen ertoe om hiërogliefen op Egyptologische pagina's weer te geven en bladmuziek te verwerken.

De programmeertaal PHP heeft de snelle, hackergerichte bedrijfscultuur van Facebook gecreëerd en in stand gehouden.



Je zou Google niet in PHP hebben gebouwd, omdat Google, om Google te worden, precies één ding heel goed moest doen: zoeken moest spaarzaam en snel en zorgvuldig goed ontworpen zijn. Het is gemaakt met meer verfijnde en krachtige talen, zoals Java en C++. Facebook is daarentegen een bazaar van kleine experimenten, een mengelmoes van knoppen, feeds en gadgets die proberen je aandacht te trekken. PHP is gemaakt voor maken -voor het snel klaarmaken van functies.

Je kunt je bijna voorstellen dat Zuckerberg in zijn studentenkamer in Harvard op de noodlottige dag dat Facebook werd geboren, zijn uiterste best deed om zijn site online te krijgen. Het web beweegt zo snel en gebruikers zijn zo wispelturig dat de enige manier om het moment vast te leggen, is door de eerste te zijn. Het maakte niet uit of hij een grote bal van modder maakte, of een bord spaghetti, of een vreselijke slangenkast (te lenen van het rijke lexicon van programmeurs voor het beschrijven van rommelige code). Hij heeft het voor elkaar gekregen. Mensen zouden het kunnen gebruiken. Hij dacht niet aan mooie code; hij dacht aan zijn vrienden die inlogden op Het Facebook om naar foto's te kijken van meisjes die ze kenden.

Vandaag is Facebook meer dan $ 200 miljard waard en overal op de muren van zijn kantoren hangen borden: Klaar is beter dan perfect; Beweeg snel en breek dingen. Deze gedurfde berichten moeten werknemers in overeenstemming houden met de hackercultuur van het bedrijf. Maar dit zijn precies PHP's waarden. Snel schakelen en dingen breken is in feite zo de essentie van PHP dat iedereen die de taal spreekt onuitwisbaar op die manier denkt. Je zou kunnen zeggen dat de taal zelf de cultuur van Facebook heeft gecreëerd en in stand houdt.

Het geheime wapen

Als je precies het tegenovergestelde van PHP wilde vinden, een soort natuurlijk experiment om je te laten zien hoe het andere uiterste eruit zag, zou je niet veel beter kunnen doen dan het egoïstische hoofdkantoor in Lower Manhattan van de financiële handelsfirma Jane Street Capital. Het 400-koppige bedrijf beweert verantwoordelijk te zijn voor ongeveer 2 procent van het dagelijkse handelsvolume in aandelen in de Verenigde Staten.

Als ik Yaron Minsky, het hoofd technologie van Jane Street, ontmoet, zit hij aan een bureau met een werkende Enigma-machine naast hem, een van de slechts enkele tientallen overgebleven code-apparaten uit de Tweede Wereldoorlog in de wereld. Ik zou het de duidelijke winnaar van de wedstrijd voor Coolest Secret Weapon in the Room vinden, ware het niet dat hij blijft praten over een obscure programmeertaal genaamd OCaml. Minsky, een doctor in de computerwetenschappen, overtuigde zijn werkgever 10 jaar geleden om het volledige handelssysteem van het bedrijf in OCaml te herschrijven. Daarvoor gebruikte bijna niemand de taal voor het echte werk; het was ontwikkeld aan een Frans onderzoeksinstituut door academici die proberen een computersysteem te verbeteren dat automatisch wiskundige stellingen bewijst. Maar Minsky dacht dat OCaml, dat hij op de middelbare school had leren kennen, de complexe Excel-spreadsheets kon vervangen die de handelssystemen van Jane Street aandreven.

Het grote verkoopargument van OCaml is het typesysteem, dat zoiets is als de grammaticacontrole van Microsoft Word, behalve dat in plaats van alleen een kronkelige groene lijn onder de code te plaatsen die het denkt dat verkeerd is, het je het niet laat uitvoeren. Programma's die zijn geschreven met een typesysteem zijn over het algemeen veel betrouwbaarder dan programma's die zonder een systeem zijn geschreven - handig wanneer een programma op een grote dag $ 30 miljard kan verhandelen.

Minsky zegt dat door bugs te vangen, het typesysteem van OCaml de codeurs van Jane Street in staat stelt zich te concentreren op verhevener problemen. Je kunt je afvragen of ze het constante gezeur van het systeem in de loop van de tijd hebben geïnternaliseerd, zodat OCaml een soort Nieuwspraak is geworden die het onmogelijk maakt om slechte gedachten te denken.

Het addertje onder het gras is dat om de volledige voordelen van de typecontrole te krijgen, de programmeurs complexe annotaties aan hun code moeten toevoegen. Het is alsof de grammaticacontrole van Word je vereist om al je zinnen in een diagram te zetten. Het schrijven van code met typebeperkingen kan hinderlijk en zelfs demoraliserend zijn. Om het nog erger te maken, gebruikt OCaml, meer dan de meeste andere programmeertalen, een soort diepe abstracte wiskunde die veel verder gaat dan de meeste programmeurs. De striktheid van de taal is voor sommige mensen echter als kattenkruid, waardoor Jane Street een ongebruikelijk voordeel heeft op de krappe arbeidsmarkt voor programmeurs. Softwareontwikkelaars sluiten zich meestal aan bij Facebook en Wikipedia, ondanks PHP. Minsky zegt dat OCaml – samen met zijn boek Echte wereld OCamli —helpt bij het lokken van een constante aanvoer van kandidaten van hoge kwaliteit. De aantrekkingskracht is niet alleen de taal, maar het soort mensen dat het gebruikt. Jane Street is een bedrijf waar ze vierpersoonsschaak spelen in de kantine. De cultuur van competitieve intelligentie en het gebruik van een fraaie programmeertaal lijken hand in hand te gaan.

Google lijkt een soortgelijke truc uit te halen met Go, een krachtige programmeertaal die het heeft ontwikkeld. Bedoeld om de werking van het web eleganter en efficiënter te maken, is het goed voor het ontwikkelen van het soort high-stakes software dat nodig is om de verzamelingen servers achter grote webservices te laten draaien. Het fungeert ook als een soort hondenfluitje voor programmeurs die geïnteresseerd zijn in het nieuwe en het moeilijke.

Opgroeien

Eind 2010 zat Facebook in een crisis. PHP is niet gebouwd om te presteren, maar het werd gevraagd om te presteren. De site groeide zo snel dat het leek alsof er iets niet behoorlijk drastisch zou veranderen, het zou beginnen om te vallen.

Helemaal van taal wisselen was geen optie. Facebook had miljoenen regels PHP-code, duizenden ingenieurs die experts waren in het schrijven ervan en meer dan een half miljard gebruikers. In plaats daarvan werd een klein team van senior ingenieurs toegewezen aan een speciaal project om een ​​manier te bedenken waarop Facebook kan blijven functioneren zonder zijn hacky-moedertaal op te geven.

Een deel van de oplossing was om een ​​stukje software te maken - een compiler - die de PHP-code van Facebook zou vertalen in veel snellere C++-code. De andere was een staaltje computertaaltechnologie waarmee de programmeurs van Facebook hun PHP-iaanse cultuur konden behouden, maar betrouwbaardere code konden schrijven.

Startups kunnen de kracht van programmeertalen slim gebruiken om hun organisatiepsychologie te manipuleren.

Het reddingsteam deed het door een dialect van PHP uit te vinden, Hack genaamd. Hack is PHP met een optioneel type systeem; dat wil zeggen, je kunt gewone, snelle en vuile PHP schrijven - of, als je dat wilt, je kunt jezelf aan de mast binden en annotaties toevoegen om het typesysteem de juistheid van je code te laten controleren. Dat deze typechecker volledig in OCaml is geschreven, is geen toeval. Facebook wilde dat zijn programmeurs snel zouden blijven werken in het comfort van hun moedertaal, maar het wilde niet dat ze dingen moesten breken zoals ze het deden. (Vorig jaar kondigde Zuckerberg een nieuwe technische slogan aan: Beweeg snel met stabiele infra, waarbij de hacker-afkorting wordt gebruikt voor de infrastructuur die de site draaiende houdt.)

Rond dezelfde tijd onderging Twitter een soortgelijke transformatie. De service is oorspronkelijk gebouwd met Ruby on Rails - een populair webprogrammeerframework dat is gemaakt met Ruby van Matsumoto en grotendeels is geïnspireerd op PHP. Toen kwam de stortvloed van gebruikers. Wanneer iemand met honderdduizenden volgers tweette, moesten honderdduizenden tijdlijnen van andere mensen onmiddellijk worden bijgewerkt. Dergelijke grote tweets zouden het systeem vaak overweldigen en technici dwingen de site uit de lucht te halen om deze in te halen. Ze deden het zo vaak dat de mislukte walvis op de onderhoudspagina van het bedrijf op zichzelf al beroemd werd. Twitter stopte het bloeden door grote delen van het sanitair van de dienst te vervangen door een taal genaamd Scala. Het hoeft niet te verbazen dat Scala, net als OCaml, is ontwikkeld door academici, een krachtig typesysteem heeft en correctheid en prestaties prijst, zelfs als dit ten koste gaat van de vrijheid en het plezier van de individuele programmeurs in hun vak.

Net zoals startups volwassen worden door eindelijk uit te zoeken waar hun inkomsten vandaan komen, kunnen ze de kracht van programmeertalen slim gebruiken om hun organisatiepsychologie te manipuleren. Programmeertaal ontwerper Guido van Rossum , die zeven jaar bij Google heeft gewerkt en nu bij Dropbox werkt, zegt dat als een softwarebedrijf eenmaal een bepaalde omvang heeft, de enige manier om chaos te voorkomen is door een taal te gebruiken die vooraf meer van de programmeur vereist. Het voelt alsof het je afremt, want je moet alles drie keer zeggen, zegt Van Rossum. Daarom wachten veel startups zo lang mogelijk voordat ze de overstap maken. Je verliest een aantal van de opschepperige hackers die je op weg hebben geholpen, en de mogelijkheid dat kleine teams met nieuwe functies kunnen komen. Maar een meer veeleisende taal helpt mensen in het hele bedrijf elkaars code te begrijpen en geeft uw product de stabiliteit die nodig is om deel uit te maken van het meubilair van het dagelijks leven.

Dat software-startups dergelijke manoeuvres kunnen uitvoeren, zou zelfs kunnen verklaren waarom ze zo krachtig kunnen zijn. Het groeiende bereik van computers is daar een onderdeel van. Maar deze bedrijven hebben ook het unieke vermogen om zichzelf opnieuw te maken. Naarmate ze veranderen en groeien, kunnen ze meer doen dan alleen het organigram opnieuw tekenen. Omdat ze in code zijn ingebouwd, kunnen ze iets veel drastischer doen. Ze kunnen zichzelf, hun cultuur opnieuw bedraden, precies zoals ze denken.

James Somers is een schrijver en programmeur in New York. Hij werkt bij genius.com .

zich verstoppen