Verktygssatser för sinnet





När den japanska datavetaren Yukihiro Matsumoto bestämde sig för att skapa Ruby, ett programmeringsspråk som har hjälpt till att bygga Twitter, Hulu och mycket av den moderna webben, jagade han en idé från en science fiction-roman från 1966 som heter Babel-17 av Samuel R. Delany. I bokens hjärta finns ett påhittat språk med samma namn som uppgraderar sinnena hos alla som talar det. Babel-17 är ett så exakt analytiskt språk, det försäkrar dig nästan tekniskt behärskning av alla situationer du tittar på, säger huvudpersonen vid ett tillfälle. Med Ruby ville Matsumoto samma sak: att programmera om och förbättra sättet som programmerare tänker.

Det låter grandiost, men Matsumotos är inte en fransvy. Mjukvaruutvecklare som art tenderar att vara övertygade om att programmeringsspråk har ett grepp om sinnet som är tillräckligt starkt för att förändra ditt sätt att närma sig problem – till och med för att ändra vilka problem du tänker lösa. Det är hur de storleksanpassar företag, produkter, deras kollegor: Vilket språk använder du?

Engineering the Perfect Baby

Den här historien var en del av vårt majnummer 2015



  • Se resten av frågan
  • Prenumerera

Det kan hjälpa utomstående att förstå mjukvaruföretagen som har blivit så kraftfulla och värdefulla, och de produkter och tjänster som genomsyrar våra liv. Ett beslut som verkar vara den mest inre typen av baseball – oavsett om någon bygger en ny sak med till exempel Ruby eller PHP eller C – kan plötsligt påverka oss alla. Om du vill veta varför Facebook ser ut och fungerar som det gör och vad det kan göra för och för oss härnäst, behöver du veta något om PHP, programmeringsspråket Mark Zuckerberg byggde det med.

Bland programmerare är PHP kanske det minst respekterade av alla programmeringsspråk. Ett nu kanoniskt blogginlägg om dess brister beskrev det som en fraktal av dålig design , och de som gärna använder det ses som amatörer. Det finns den här myten om den briljanta tekniken som gick in i Facebook, säger Jeff Atwood , medskapare av den populära fråge-och-svar-webbplatsen för programmering Stack Overflow . Men de byggde PHP-kod i Windows XP. De var hackare i nästan ordets nedsättande bemärkelse. Inom loppet av 10 minuter kallade Atwood PHP för ett förödande monster, en pandemi och ett spökhus vars invånare har kommit att älska spökena.

Saker granskade

  • Babel-17

    Av Samuel R. Delany
    1966



  • Real World OKaml av Yaron Minsky et al.

    O'Reilly, 2013PHPHackScala

De flesta framgångsrika programmeringsspråk har en övergripande filosofi eller uppsättning vägledande principer som organiserar deras ordförråd och grammatik – uppsättningen av möjliga instruktioner de gör tillgängliga för programmeraren – till en logisk helhet. PHP gör det inte. Dess skapare, Rasmus Lerdorf, erkänner fritt att han precis har snickrat ihop det. Jag vet inte hur jag ska stoppa det, sa han i en intervju 2003 . Jag har absolut ingen aning om hur man skriver ett programmeringsspråk – jag fortsatte bara att lägga till nästa logiska steg på vägen.

Programmerares favoritexempel är en PHP-funktion som heter mysql_escape_string, som tar bort en fråga från skadlig indata innan den skickas till en databas. (För ett exempel på en skadlig inmatning, tänk på ett formulär på en webbplats som frågar efter din e-postadress; en hackare kan ange kod i den luckan för att tvinga webbplatsen att hosta upp lösenord.) När en bugg upptäcktes i funktion lades en ny version till, kallad mysql_ verklig _escape_string, men originalet ersattes inte. Resultatet är lite som att ha två knappar som ser likadana ut bredvid varandra i en cockpit: en som lägger ner landningsstället och en som sätter ner den säkert . Det är inte bara en kränkning av sunt förnuft – det är ett recept på katastrof.



Men trots det utbredda föraktet för PHP byggdes mycket av webben på dess baksida. PHP driver 39 procent av alla domäner , enligt en uppskattning. Facebook, Wikipedia och den ledande publiceringsplattformen WordPress är alla PHP-projekt. Det beror på att PHP, trots alla dess brister, är perfekt för att komma igång. Namnet stod ursprungligen för personlig hemsida. Det gjorde det enkelt att lägga till dynamiskt innehåll som datum eller en användares namn till statiska HTML-sidor. PHP tillät språnget från att mixtra med en webb webbplats att skriva en webb Ansökan att vara så liten att den är omärklig. Du behövde inte vara proffs.

PHP:s kom-igång var avgörande för framgången för Wikipedia, säger Ori Livneh, en ledande mjukvaruingenjör på Wikimedia Foundation, som driver projektet. Jag har alltid avskydde PHP, säger han till mig. Projektet lider av storskaliga designbrister som ett resultat av dess beroende av språket. (De är delvis varför stiftelsen inte gjorde Wikipedia-sidor tillgängliga i en version anpassad för mobila enheter förrän 2008, och varför sajten inte fick ett användarvänligt redigeringsgränssnitt förrän 2013.) Men PHP tillät personer som inte var det. — eller var knappt — mjukvaruingenjörer för att bidra med nya funktioner. Det var så Wikipedia-inlägg kom att visa hieroglyfer på egyptologisidor, till exempel, och hantera noter.

Programmeringsspråket PHP skapade och upprätthåller Facebooks snabba, hackerorienterade företagskultur.



Du skulle inte ha byggt Google i PHP, eftersom Google, för att bli Google, behövde göra exakt en sak väldigt bra – det behövde sökning för att vara sparsam och snabb och noggrant välkonstruerad. Den gjordes med mer raffinerade och kraftfulla språk, som Java och C++. Facebook, däremot, är en basar av små experiment, ett smörgåsbord av knappar, flöden och prylar som försöker fånga din uppmärksamhet. PHP är gjord för tillverkning — för att snabbt laga funktioner.

Du kan nästan föreställa dig Zuckerberg i sitt studentrum på Harvard den ödesdigra dagen då Facebook föddes, och han gjorde det minsta han kunde för att få sin sida online. Webben rör sig så snabbt och användarna är så ombytliga att det enda sättet du någonsin kommer att kunna fånga ögonblicket är genom att vara först. Det spelade ingen roll om han gjorde en stor boll av lera, eller en tallrik spagetti eller ett hemskt slangskåp (för att låna från programmerares rika lexikon för att beskriva rörig kod). Han fick saken klar. Folk kunde använda det. Han tänkte inte på vacker kod; han tänkte på att hans vänner loggar in på Ansiktsboken att titta på bilder på tjejer de kände.

Idag är Facebook värt mer än 200 miljarder dollar och det finns skyltar över hela väggarna på dess kontor: Klart är bättre än perfekt; Rör dig snabbt och slå sönder saker. Dessa djärva meddelanden är tänkta att hålla anställda i samklang med företagets hackerkultur. Men dessa är precis PHP värden. Att röra sig snabbt och bryta saker är faktiskt så mycket essensen av PHP att alla som talar språket outplånligt tänker på det sättet. Man kan säga att språket i sig skapade och upprätthåller Facebooks kultur.

Det hemliga vapnet

Om du ville hitta raka motsatsen till PHP, ett slags naturligt experiment för att visa dig hur den andra ytterligheten såg ut, kunde du inte göra mycket bättre än det självseriösa Lower Manhattan-huvudkontoret för finanshandelsföretaget Jane Street Capital. Företaget med 400 personer påstår sig vara ansvarigt för ungefär 2 procent av den dagliga aktiehandelsvolymen i USA.

När jag träffar Yaron Minsky, Jane Streets teknikchef, sitter han vid ett skrivbord med en fungerande Enigma-maskin bredvid sig, en av bara några dussin av andra världskrigets kodenheter som finns kvar i världen. Jag skulle tro att det var den klara vinnaren av tävlingen om Coolest Secret Weapon in the Room om det inte vore för hur han fortsätter att prata om ett obskyrt programmeringsspråk som heter OCaml. Minsky, en doktor i datavetenskap, övertygade sin arbetsgivare för 10 år sedan att skriva om hela företagets handelssystem i OCaml. Innan dess använde nästan ingen språket för verkligt arbete; det var utvecklad vid ett franskt forskningsinstitut genom att akademiker försöker förbättra ett datorsystem som automatiskt bevisar matematiska teorem. Men Minsky trodde att OCaml, som han hade lärt känna i gymnasiet, kunde ersätta de komplexa Excel-kalkylblad som drev Jane Streets handelssystem.

OCamls stora försäljningsargument är dess typsystem, som är ungefär som Microsoft Words grammatikkontroll, förutom att istället för att bara sätta en snirklig grön linje under koden som den tror är fel, låter den dig inte köra den. Program skrivna med ett typsystem tenderar att vara mycket mer tillförlitliga än de som skrivs utan ett - användbart när ett program kan handla 30 miljarder dollar på en stor dag.

Minsky säger att genom att fånga buggar, tillåter OCamls typsystem Jane Streets kodare att fokusera på högre problem. Man undrar om de har internaliserat systemets ständiga tjat över tid, så att OCaml har blivit ett slags Newspeak som gör det omöjligt att tänka dåliga tankar.

Haken är att för att få full nytta av typkontrollen måste programmerarna lägga till komplexa anteckningar till sin kod. Det är som om Words grammatikkontroll krävde att du ritade alla dina meningar. Att skriva kod med typbegränsningar kan vara en olägenhet, till och med demoraliserande. För att göra det värre trafikerar OCaml, mer än de flesta andra programmeringsspråk, en sorts djup abstrakt matematik långt bortom de flesta kodare. Språkets stränghet är dock som kattmynta för vissa människor, vilket ger Jane Street en ovanlig fördel på den trånga anställningsmarknaden för programmerare. Mjukvaruutvecklare ansluter sig mest till Facebook och Wikipedia trots PHP. Minsky säger att OKaml — tillsammans med sin bok Real World OKaml —hjälper till att locka en jämn tillgång på högkvalitativa kandidater. Attraktionen är inte bara språket utan den typ av människor som använder det. Jane Street är ett företag där de spelar fyrmannaschack i pausrummet. Kulturen av konkurrenskraftig intelligens och användningen av ett snyggt programmeringsspråk verkar gå hand i hand.

Google verkar försöka få till ett liknande trick med Go, ett högpresterande programmeringsspråk som det utvecklat. Avsedd att göra webben mer elegant och effektiv, är den bra för att utveckla den typ av höginsatsprogramvara som behövs för att köra samlingar av servrar bakom stora webbtjänster. Den fungerar också som en hundvissling till kodare som är intresserade av det nya och det svåra.

Växa upp

I slutet av 2010 hade Facebook en kris. PHP byggdes inte för prestanda, men det ombads att utföra. Webbplatsen växte så snabbt att det verkade som om något inte förändrades ganska drastiskt skulle det börja falla omkull.

Att byta språk helt och hållet var inte ett alternativ. Facebook hade miljontals rader PHP-kod, tusentals ingenjörer som var experter på att skriva den och mer än en halv miljard användare. Istället tilldelades ett litet team av seniora ingenjörer ett speciellt projekt för att uppfinna ett sätt för Facebook att fortsätta fungera utan att ge upp sitt hackiga modersmål.

En del av lösningen var att skapa en mjukvara - en kompilator - som skulle översätta Facebooks PHP-kod till mycket snabbare C++-kod. Den andra var en bedrift av datorlingvistisk ingenjörskonst som lät Facebooks programmerare behålla sin PHP-kultur men skriva mer tillförlitlig kod.

Nystartade företag kan på ett smart sätt använda kraften hos programmeringsspråk för att manipulera sin organisationspsykologi.

Räddningsgruppen gjorde det genom att uppfinna en dialekt av PHP som heter Hack. Hack är PHP med en frivillig typsystem; det vill säga, du kan skriva vanlig gammal snabb och smutsig PHP – eller, om du så vill, kan du binda dig till masten och lägga till anteckningar för att låta typsystemet kontrollera att din kod är korrekt. Att denna typkontroll är skriven helt i OCaml är ingen slump. Facebook ville att dess kodare skulle fortsätta röra sig snabbt i bekvämligheten av deras modersmål, men de ville inte att de skulle behöva bryta saker när de gjorde det. (Förra året tillkännagav Zuckerberg en ny ingenjörsslogan: Rör dig snabbt med stabil infra, använd hackerstenografin för infrastrukturen som håller webbplatsen igång.)

Ungefär samtidigt genomgick Twitter en liknande förvandling. Tjänsten byggdes ursprungligen med Ruby on Rails – ett populärt webbprogrammeringsramverk skapat med Matsumotos Ruby och till stor del inspirerat av PHP. Sedan kom syndafloden av användare. När någon med hundratusentals följare twittrade måste hundratusentals andra människors tidslinjer uppdateras omedelbart. Sådana stora tweets skulle ofta överväldiga systemet och tvinga ingenjörer att ta ner sidan för att den ska hinna ikapp. De gjorde det så ofta att felvalen på företagets underhållssida blev känd i sin egen rätt. Twitter stoppade blödningen genom att ersätta stora delar av tjänstens rörsystem med ett språk som heter Scala. Det borde inte vara förvånande att Scala, liksom OCaml, utvecklades av akademiker, har ett kraftfullt typsystem och prisar korrekthet och prestanda även på bekostnad av de individuella programmerarnas frihet och glädje i sitt hantverk.

Mycket som startups mognar genom att äntligen ta reda på var deras intäkter kommer ifrån, kan de på ett smart sätt använda kraften hos programmeringsspråk för att manipulera sin organisationspsykologi. Programmeringsspråkdesigner Guido van Rossum , som tillbringade sju år på Google och nu arbetar på Dropbox, säger att när ett mjukvaruföretag väl blir en viss storlek är det enda sättet att undvika kaos att använda ett språk som kräver mer av programmeraren i förväg. Det känns som att det saktar ner dig, för du måste säga allt tre gånger, säger van Rossum. Det är därför många startups väntar så länge de kan innan de byter. Du förlorar några av de häpnadsväckande hackarna som fick dig igång, och möjligheten att små team kan skynda på nya funktioner. Men ett mer krävande språk hjälper människor i hela företaget att förstå varandras kod och ger din produkt den stabilitet som behövs för att vara en del av det dagliga livets möbler.

Att mjukvarustarter kan utföra sådana manövrar kan till och med hjälpa till att förklara varför de kan vara så kraftfulla. Datorernas växande räckvidd är en del av det. Men dessa företag har också en unik förmåga att göra om sig själva. När de förändras och växer kan de göra mer än att bara rita om organisationsdiagrammet. Eftersom de är inbyggda i kod kan de göra något mycket mer drastiskt. De kan koppla om sig själva, sin kultur, själva sättet de tänker.

James Somers är författare och programmerare i New York. Han jobbar på genius.com .

Dölj