211service.com
Værktøjssæt til sindet
Da den japanske datalog Yukihiro Matsumoto besluttede at skabe Ruby, et programmeringssprog, der har hjulpet med at opbygge Twitter, Hulu og meget af det moderne web, jagtede han en idé fra en science fiction-roman fra 1966 kaldet Babel-17 af Samuel R. Delany. I bogens hjerte er et opfundet sprog af samme navn, der opgraderer sindet hos alle dem, der taler det. Babel-17 er sådan et nøjagtigt analytisk sprog, det sikrer dig næsten teknisk beherskelse af enhver situation, du ser på, siger hovedpersonen på et tidspunkt. Med Ruby ønskede Matsumoto det samme: at omprogrammere og forbedre den måde, programmører tænker på.
Det lyder grandiost, men Matsumotos er ikke en udkantsudsigt. Softwareudviklere som art er tilbøjelige til at være overbeviste om, at programmeringssprog har et greb om sindet, der er stærkt nok til at ændre den måde, du nærmer dig problemer på – endda til at ændre, hvilke problemer du mener at løse. Det er, hvordan de dimensionerer virksomheder, produkter, deres jævnaldrende: Hvilket sprog bruger du?
Denne historie var en del af vores maj 2015-udgave
- Se resten af problemet
- Abonner
Det kan hjælpe udenforstående med at forstå de softwarevirksomheder, der er blevet så magtfulde og værdifulde, og de produkter og tjenester, der fylder vores liv. En beslutning, der virker som den mest indvendige form inden for baseball – om nogen bygger en ny ting ved hjælp af f.eks. Ruby eller PHP eller C – kan pludselig påvirke os alle. Hvis du vil vide, hvorfor Facebook ser ud og fungerer, som det gør, og hvilke slags ting det kan gøre for og for os næste gang, skal du vide noget om PHP, programmeringssproget Mark Zuckerberg byggede det med.
Blandt programmører er PHP måske det mindst respekterede af alle programmeringssprog. Et nu kanonisk blogindlæg om dens fejl beskrev det som en fraktal af dårligt design , og de, der villigt bruger det, ses som amatører. Der er denne myte om den geniale teknik, der gik ind i Facebook, siger Jeff Atwood , medskaber af det populære spørgsmål-og-svar-websted for programmering Stack Overflow . Men de byggede PHP-kode i Windows XP. De var hackere i næsten den nedsættende betydning af ordet. I løbet af 10 minutter kaldte Atwood PHP for et uhyggeligt monster, en pandemi og et hjemsøgt hus, hvis beboere er kommet til at elske spøgelserne.
Ting gennemgået
Babel-17
Af Samuel R. Delany
1966
Real World OKaml af Yaron Minsky et al.
O'Reilly, 2013PHPHackScala
De fleste succesrige programmeringssprog har en overordnet filosofi eller et sæt af vejledende principper, der organiserer deres ordforråd og grammatik - det sæt af mulige instruktioner, de stiller til rådighed for programmøren - i en logisk helhed. PHP gør ikke. Dens skaber, Rasmus Lerdorf, indrømmer frit, at han lige har flettet det sammen. Jeg ved ikke hvordan jeg skal stoppe det, sagde han i et interview fra 2003 . Jeg har absolut ingen idé om, hvordan man skriver et programmeringssprog - jeg blev bare ved med at tilføje det næste logiske trin undervejs.
Programmørers foretrukne eksempel er en PHP-funktion kaldet mysql_escape_string, som fjerner en forespørgsel for ondsindet input, før den sendes til en database. (For et eksempel på et ondsindet input, tænk på en formular på et websted, der beder om din e-mail-adresse; en hacker kan indtaste kode i det slot for at tvinge webstedet til at hoste adgangskoder op.) Da en fejl blev opdaget i funktion, en ny version blev tilføjet, kaldet mysql_ ægte _escape_string, men originalen blev ikke erstattet. Resultatet er lidt som at have to knapper, der ligner hinanden lige ved siden af hinanden i et flyselskabs cockpit: en der sætter landingsstellet ned og en der sætter det ned sikkert . Det er ikke kun en krænkelse af sund fornuft - det er en opskrift på katastrofe.
Alligevel på trods af den udbredte foragt for PHP, blev meget af internettet bygget på ryggen. PHP magter 39 procent af alle domæner , efter et skøn. Facebook, Wikipedia og den førende udgivelsesplatform WordPress er alle PHP-projekter. Det er fordi PHP, på trods af alle dens fejl, er perfekt til at komme i gang. Navnet stod oprindeligt for personlig hjemmeside. Det gjorde det nemt at tilføje dynamisk indhold som datoen eller en brugers navn til statiske HTML-sider. PHP tillod springet fra at pille ved et web websted at skrive et web Ansøgning at være så lille, at den er umærkelig. Du behøvede ikke at være professionel.
PHP's gang i gang var afgørende for Wikipedias succes, siger Ori Livneh, en ledende softwareingeniør hos Wikimedia Foundation, som driver projektet. Jeg har altid afskyet PHP, fortæller han. Projektet lider af store designfejl som følge af dets afhængighed af sproget. (De er dels grunden til, at fonden ikke gjorde Wikipedia-sider tilgængelige i en version tilpasset mobile enheder før 2008, og hvorfor siden først fik en brugervenlig redigeringsgrænseflade før 2013.) Men PHP tillod folk, der ikke var — eller var knap nok — softwareingeniører til at bidrage med nye funktioner. Det er, hvordan Wikipedia-indlæg kom til at vise hieroglyfer på egyptologiske sider, for eksempel, og håndtere noder.
Programmeringssproget PHP skabte og opretholder Facebooks hurtige, hackerorienterede virksomhedskultur.
Du ville ikke have bygget Google i PHP, fordi Google, for at blive Google, skulle gøre præcis én ting meget godt – den havde brug for søgning for at være sparsom og hurtig og omhyggeligt velkonstrueret. Det blev lavet med mere raffinerede og kraftfulde sprog, såsom Java og C++. Facebook er derimod en basar af små eksperimenter, et smørebord af knapper, feeds og dimser, der forsøger at fange din opmærksomhed. PHP er lavet til fremstilling - for hurtigt at tilberede funktioner.
Du kan næsten forestille dig Zuckerberg i sit Harvard-kollegieværelse på den skæbnesvangre dag, hvor Facebook blev født, og gjorde det mindste, han kunne for at få sit websted online. Internettet bevæger sig så hurtigt, og brugerne er så omskiftelige, at den eneste måde, du nogensinde vil være i stand til at fange øjeblikket, er ved at være først. Det var lige meget, om han lavede en stor kugle af mudder, eller en tallerken spaghetti eller et forfærdeligt slangeskab (for at låne fra programmørers rige leksikon til at beskrive rodet kode). Han fik sagen gjort. Folk kunne bruge det. Han tænkte ikke på smuk kode; han tænkte på, at hans venner loggede på Facebook at se billeder af piger, de kendte.
I dag er Facebook mere end 200 milliarder dollar værd, og der er skilte over hele væggene på dets kontorer: Færdig er bedre end perfekt; Bevæg dig hurtigt og bryd tingene. Disse dristige beskeder formodes at holde medarbejderne i harmoni med virksomhedens hackerkultur. Men disse er præcis PHP'er værdier. At bevæge sig hurtigt og bryde ting er faktisk så meget essensen af PHP, at enhver, der taler sproget uudsletteligt, tænker på den måde. Man kan sige, at sproget i sig selv skabte og opretholder Facebooks kultur.
Det hemmelige våben
Hvis du ville finde det stik modsatte af PHP, en slags naturligt eksperiment for at vise dig, hvordan den anden yderlighed så ud, kunne du ikke gøre det meget bedre end det selvseriøse Lower Manhattan-hovedkvarter for det finansielle handelsfirma Jane Street Capital. Virksomheden med 400 personer hævder at være ansvarlig for omkring 2 procent af den daglige aktiehandel i USA.
Da jeg møder Yaron Minsky, Jane Streets teknologichef, sidder han ved et skrivebord med en fungerende Enigma-maskine ved siden af sig, en af kun et par dusin af Anden Verdenskrigs kodeenheder tilbage i verden. Jeg ville tro, at det var den klare vinder af konkurrencen om Coolest Secret Weapon in the Room, hvis det ikke var for den måde, han bliver ved med at tale om et obskurt programmeringssprog kaldet OCaml. Minsky, en ph.d. i datalogi, overbeviste sin arbejdsgiver for 10 år siden om at omskrive hele virksomhedens handelssystem i OCaml. Før det brugte næsten ingen sproget til egentligt arbejde; det var udviklet på et fransk forskningsinstitut ved at akademikere forsøger at forbedre et computersystem, der automatisk beviser matematiske teoremer. Men Minsky troede, at OCaml, som han havde lært at kende på grundskolen, kunne erstatte de komplekse Excel-regneark, der drev Jane Streets handelssystemer.
OCamls store salgsargument er dets typesystem, som er noget som Microsoft Words grammatikkontrol, bortset fra at i stedet for blot at sætte en snoet grøn linje under koden, den mener er forkert, vil den ikke lade dig køre den. Programmer, der er skrevet med et typesystem, har en tendens til at være langt mere pålidelige end dem, der er skrevet uden et - nyttige, når et program kan handle for 30 milliarder dollars på en stor dag.
Minsky siger, at ved at fange fejl giver OCamls typesystem Jane Streets kodere mulighed for at fokusere på højere problemer. Man spekulerer på, om de har internaliseret systemets konstante nageri over tid, så OCaml er blevet en slags Newspeak, der gør det umuligt at tænke dårlige tanker.
Fangsten er, at for at få det fulde udbytte af typekontrol, skal programmører tilføje komplekse annoteringer til deres kode. Det er, som om Words grammatikkontrol krævede, at du diagrammet alle dine sætninger. At skrive kode med typebegrænsninger kan være en plage, endda demoraliserende. For at gøre det værre, handler OCaml, mere end de fleste andre programmeringssprog, i en slags dyb abstrakt matematik langt ud over de fleste kodere. Sprogets stringens er dog som katteurt for nogle mennesker, hvilket giver Jane Street en usædvanlig fordel på det stramme ansættelsesmarked for programmører. Softwareudviklere tilslutter sig for det meste Facebook og Wikipedia på trods af PHP. Minsky siger, at OKaml – sammen med sin bog Den virkelige verden OKaml -hjælper med at lokke en stabil forsyning af højkvalitetskandidater. Attraktionen er ikke kun sproget, men den slags mennesker, der bruger det. Jane Street er et selskab, hvor de spiller fire-personers skak i pauserummet. Kulturen med konkurrencedygtig intelligens og brugen af et fancy programmeringssprog ser ud til at gå hånd i hånd.
Google ser ud til at forsøge at udføre et lignende trick med Go, et højtydende programmeringssprog, som det udviklede. Det er beregnet til at gøre internettet mere elegant og effektivt, og det er godt til at udvikle den slags high-stakes software, der er nødvendig for at køre samlingerne af servere bag store webtjenester. Det fungerer også som noget som en hundefløjte til kodere, der er interesserede i det nye og det svære.
Vokse op
I slutningen af 2010 havde Facebook en krise. PHP blev ikke bygget til ydeevne, men det blev bedt om at udføre. Siden voksede så hurtigt, at det så ud til, at hvis noget ikke ændrede sig ret drastisk, ville det begynde at vælte.
At skifte sprog helt var ikke en mulighed. Facebook havde millioner af linjer PHP-kode, tusindvis af ingeniører, der var eksperter i at skrive den, og mere end en halv milliard brugere. I stedet blev et lille team af senioringeniører tildelt et særligt projekt for at opfinde en måde, hvorpå Facebook kan fortsætte med at fungere uden at opgive sit hackede modersmål.
En del af løsningen var at skabe et stykke software - en compiler - der ville oversætte Facebooks PHP-kode til meget hurtigere C++-kode. Den anden var en bedrift inden for computer-lingvistisk teknik, der lod Facebooks programmører beholde deres PHP-ianske kultur, men skrive mere pålidelig kode.
Startups kan snildt bruge programmeringssprogs kraft til at manipulere deres organisationspsykologi.
Redningsgruppen gjorde det ved at opfinde en dialekt af PHP kaldet Hack. Hack er PHP med en valgfri type system; det vil sige, du kan skrive almindeligt gammelt, hurtigt og beskidt PHP - eller, hvis du vælger det, kan du binde dig selv til masten og tilføje anmærkninger for at lade typesystemet kontrollere rigtigheden af din kode. At denne type checker er skrevet udelukkende i OCaml er ikke tilfældigt. Facebook ønskede, at dets kodere skulle fortsætte med at bevæge sig hurtigt i deres eget modersmål, men det ønskede ikke, at de skulle bryde tingene, mens de gjorde det. (Sidste år annoncerede Zuckerberg et nyt ingeniørslogan: Bevæg dig hurtigt med stabil infra ved at bruge hacker-stenografien til den infrastruktur, der holder webstedet kørende.)
Omtrent på samme tid gennemgik Twitter en lignende transformation. Tjenesten blev oprindeligt bygget med Ruby on Rails - en populær webprogrammeringsramme skabt ved hjælp af Matsumotos Ruby og i høj grad inspireret af PHP. Så kom syndfloden af brugere. Når en person med hundredtusindvis af følgere tweetede, skulle hundredtusindvis af andres tidslinjer opdateres med det samme. Sådanne store tweets ville ofte overvælde systemet og tvinge ingeniører til at fjerne webstedet for at lade det indhente det. De gjorde det så ofte, at fejlhvalen på virksomhedens vedligeholdelsesside blev berømt i sig selv. Twitter stoppede blødningen ved at erstatte store stykker af tjenestens VVS med et sprog kaldet Scala. Det bør ikke være overraskende, at Scala, ligesom OCaml, er udviklet af akademikere, har et kraftfuldt typesystem og præmierer korrekthed og ydeevne selv på bekostning af de enkelte programmørers frihed og glæde ved deres håndværk.
Meget som startups modnes ved endelig at finde ud af, hvor deres indtægter vil komme fra, kan de smart bruge programmeringssprogenes kraft til at manipulere deres organisationspsykologi. Programmeringssprog designer Guido van Rossum , som tilbragte syv år hos Google og nu arbejder hos Dropbox, siger, at når en softwarevirksomhed bliver en vis størrelse, er den eneste måde at afværge kaos på at bruge et sprog, der kræver mere af programmøren foran. Det føles, som om det bremser dig, for du skal sige alt tre gange, siger van Rossum. Derfor venter mange startups, så længe de kan, før de skifter. Du mister nogle af de overvældende hackere, der fik dig i gang, og muligheden for, at små teams kan skynde sig ud med nye funktioner. Men et mere krævende sprog hjælper mennesker på tværs af virksomheden med at forstå hinandens kode og giver dit produkt den nødvendige stabilitet for at være en del af dagligdagens møbler.
At softwarestartups kan udføre sådanne manøvrer kan endda hjælpe med at forklare, hvorfor de kan være så kraftfulde. Den udvidede rækkevidde af computere er en del af det. Men disse virksomheder har også en unik evne til at lave sig selv om. Efterhånden som de ændrer sig og vokser, kan de mere end blot at tegne organisationsdiagrammet igen. Fordi de er indbygget i kode, kan de gøre noget langt mere drastisk. De kan omdanne sig selv, deres kultur, selve måden de tænker på.
James Somers er forfatter og programmør i New York. Han arbejder kl genius.com .
