Verktøysett for sinnet





Da den japanske informatikeren Yukihiro Matsumoto bestemte seg for å lage Ruby, et programmeringsspråk som har bidratt til å bygge Twitter, Hulu og mye av det moderne nettet, jaktet han på en idé fra en science fiction-roman fra 1966 kalt Babel-17 av Samuel R. Delany. Bokens hjerte er et oppfunnet språk med samme navn som oppgraderer sinnet til alle de som snakker det. Babel-17 er et så nøyaktig analytisk språk, det sikrer deg nesten teknisk mestring av enhver situasjon du ser på, sier hovedpersonen på et tidspunkt. Med Ruby ønsket Matsumoto det samme: å omprogrammere og forbedre måten programmerere tenker på.

Det høres grandiost ut, men Matsumotos er ikke en utkantsutsikt. Programvareutviklere som art har en tendens til å være overbevist om at programmeringsspråk har et grep om sinnet sterkt nok til å endre måten du nærmer deg problemer på – til og med for å endre hvilke problemer du tenker å løse. Det er hvordan de størrelser opp bedrifter, produkter, sine jevnaldrende: Hvilket språk bruker du?

Engineering the Perfect Baby

Denne historien var en del av mai 2015-utgaven



  • Se resten av saken
  • Abonnere

Det kan hjelpe utenforstående å forstå programvareselskapene som har blitt så kraftige og verdifulle, og produktene og tjenestene som fyller livene våre. En avgjørelse som virker som den mest innvendige typen innen baseball – om noen bygger en ny ting ved å bruke for eksempel Ruby eller PHP eller C – kan plutselig påvirke oss alle. Hvis du vil vite hvorfor Facebook ser ut og fungerer som det gjør og hva slags ting det kan gjøre for og for oss videre, må du vite noe om PHP, programmeringsspråket Mark Zuckerberg bygde det med.

Blant programmerere er PHP kanskje det minst respekterte av alle programmeringsspråk. Et nå kanonisk blogginnlegg om dens feil beskrev det som en fraktal med dårlig design , og de som villig bruker det blir sett på som amatører. Det er denne myten om den strålende ingeniørkunsten som gikk inn i Facebook, sier Jeff Atwood , medskaper av det populære spørsmål-og-svar-nettstedet for programmering Stack Overflow . Men de bygde PHP-kode i Windows XP. De var hackere i nesten nedsettende betydning av ordet. I løpet av 10 minutter kalte Atwood PHP for et uhyggelig monster, en pandemi og et hjemsøkt hus hvis beboere har begynt å elske spøkelsene.

Ting gjennomgått

  • Babel-17

    Av Samuel R. Delany
    1966



  • Real World OKaml av Yaron Minsky et al.

    O'Reilly, 2013PHPHackScala

De fleste vellykkede programmeringsspråk har en overordnet filosofi eller et sett med veiledende prinsipper som organiserer vokabularet og grammatikken deres – settet med mulige instruksjoner de gjør tilgjengelig for programmereren – til en logisk helhet. PHP gjør det ikke. Skaperen, Rasmus Lerdorf, innrømmer fritt at han nettopp har brosteinsbelagt den sammen. Jeg vet ikke hvordan jeg skal stoppe det, sa han i et intervju fra 2003 . Jeg har absolutt ingen anelse om hvordan jeg skriver et programmeringsspråk - jeg fortsatte bare å legge til det neste logiske trinnet underveis.

Programmerers favoritteksempel er en PHP-funksjon kalt mysql_escape_string, som fjerner et søk fra ondsinnet input før det sendes til en database. (For et eksempel på en ondsinnet inndata, tenk på et skjema på et nettsted som ber om e-postadressen din; en hacker kan skrive inn kode i det sporet for å tvinge nettstedet til å hoste opp passord.) Når en feil ble oppdaget i funksjon, en ny versjon ble lagt til, kalt mysql_ ekte _escape_string, men originalen ble ikke erstattet. Resultatet er litt som å ha to knapper som ser like ut rett ved siden av hverandre i en flyselskapscockpit: en som setter landingsutstyret ned og en som setter det ned trygt . Det er ikke bare en krenkelse av sunn fornuft – det er en oppskrift på katastrofe.



Til tross for den utbredte forakten for PHP, ble mye av nettet bygget på ryggen. PHP driver 39 prosent av alle domener , etter ett anslag. Facebook, Wikipedia og den ledende publiseringsplattformen WordPress er alle PHP-prosjekter. Det er fordi PHP, på tross av alle dens feil, er perfekt for å komme i gang. Navnet sto opprinnelig for personlig hjemmeside. Det gjorde det enkelt å legge til dynamisk innhold som datoen eller en brukers navn til statiske HTML-sider. PHP tillot spranget fra å fikle med et nett nettstedet å skrive en nett applikasjon å være så liten at den er umerkelig. Du trengte ikke å være en proff.

PHPs oppstart var avgjørende for suksessen til Wikipedia, sier Ori Livneh, en hovedprogramvareingeniør ved Wikimedia Foundation, som driver prosjektet. Jeg har alltid hatet PHP, forteller han meg. Prosjektet lider av store designfeil som et resultat av dets avhengighet av språket. (De er delvis grunnen til at stiftelsen ikke gjorde Wikipedia-sider tilgjengelig i en versjon tilpasset mobile enheter før i 2008, og hvorfor siden ikke fikk et brukervennlig redigeringsgrensesnitt før i 2013.) Men PHP tillot folk som ikke var det — eller var knapt — programvareingeniører for å bidra med nye funksjoner. Det er hvordan Wikipedia-oppføringer kom til å vise hieroglyfer på egyptologi-sider, for eksempel, og håndtere noter.

Programmeringsspråket PHP skapte og opprettholder Facebooks bevegelsesraske, hackerorienterte bedriftskultur.



Du ville ikke ha bygget Google i PHP, fordi Google, for å bli Google, trengte å gjøre nøyaktig én ting veldig bra – det trengte søk for å være sparsomt og raskt og omhyggelig godt konstruert. Den ble laget med mer raffinerte og kraftige språk, som Java og C++. Facebook, derimot, er en basar av små eksperimenter, et smørebord av knapper, feeder og dingser som prøver å fange oppmerksomheten din. PHP er laget for lager – for å lage funksjoner raskt.

Du kan nesten forestille deg Zuckerberg i sovesalen hans på Harvard den skjebnesvangre dagen Facebook ble født, og gjorde det minste han kunne for å få nettstedet sitt på nett. Nettet beveger seg så raskt, og brukerne er så ustadige, at den eneste måten du noen gang vil kunne fange øyeblikket er ved å være først. Det spilte ingen rolle om han lagde en stor gjørmekule, eller en tallerken spaghetti, eller et fryktelig slangeskap (for å låne fra programmerers rike leksikon for å beskrive rotete kode). Han fikk greia. Folk kunne bruke det. Han tenkte ikke på vakker kode; han tenkte på at vennene hans skulle logge på Facebooken å se på bilder av jenter de kjente.

I dag er Facebook verdt mer enn 200 milliarder dollar, og det er skilt over hele veggene på kontorene: Ferdig er bedre enn perfekt; Beveg deg fort og knekk ting. Disse dristige meldingene er ment å holde ansatte i harmoni med selskapets hackerkultur. Men disse er nøyaktig PHP sine verdier. Å bevege seg raskt og ødelegge ting er faktisk så mye essensen av PHP at alle som snakker språket uutslettelig tenker på den måten. Du kan si at språket i seg selv skapte og opprettholder Facebooks kultur.

Det hemmelige våpenet

Hvis du ønsket å finne det stikk motsatte av PHP, et slags naturlig eksperiment for å vise deg hvordan den andre ytterligheten så ut, kunne du ikke gjøre det mye bedre enn det selvseriøse Lower Manhattan-hovedkvarteret til finanshandelsfirmaet Jane Street Capital. Selskapet på 400 personer hevder å være ansvarlig for omtrent 2 prosent av det daglige aksjehandelsvolumet i USA.

Når jeg møter Yaron Minsky, Jane Streets teknologisjef, sitter han ved et skrivebord med en fungerende Enigma-maskin ved siden av seg, en av bare noen få dusin av andre verdenskrigs kodeenheter som er igjen i verden. Jeg ville tro det var den klare vinneren av konkurransen om kuleste hemmelige våpen i rommet hvis det ikke var for måten han fortsetter å snakke om et obskurt programmeringsspråk kalt OCaml. Minsky, en doktorgrad i informatikk, overbeviste sin arbeidsgiver for 10 år siden om å omskrive hele selskapets handelssystem i OCaml. Før det var det nesten ingen som brukte språket til faktisk arbeid; det var utviklet ved et fransk forskningsinstitutt ved at akademikere prøver å forbedre et datasystem som automatisk beviser matematiske teoremer. Men Minsky trodde OCaml, som han hadde blitt kjent med på grunnskolen, kunne erstatte de komplekse Excel-regnearkene som drev Jane Streets handelssystemer.

OCamls store salgsargument er typesystemet, som er noe sånt som Microsoft Words grammatikkkontroll, bortsett fra at i stedet for å bare sette en kronglete grønn linje under koden den mener er feil, lar den deg ikke kjøre den. Programmer skrevet med et typesystem har en tendens til å være langt mer pålitelige enn de som er skrevet uten et - nyttig når et program kan handle for 30 milliarder dollar på en stor dag.

Minsky sier at ved å fange feil, lar OCamls typesystem Jane Streets kodere fokusere på høyere problemer. Man spør seg om de har internalisert systemets konstante mas over tid, slik at OCaml har blitt en slags Newspeak som gjør det umulig å tenke vonde tanker.

Haken er at for å få de fulle fordelene med typekontrolleren, må programmererne legge til komplekse merknader til koden sin. Det er som om Words grammatikkkontroll krevde at du diagrammet alle setningene dine. Å skrive kode med typebegrensninger kan være en plage, til og med demoraliserende. For å gjøre det verre, trafikkerer OCaml, mer enn de fleste andre programmeringsspråk, en slags dyp abstrakt matematikk langt utover de fleste kodere. Språkets strenghet er som kattemynte for noen mennesker, men gir Jane Street en uvanlig fordel i det stramme ansettelsesmarkedet for programmerere. Programvareutviklere slutter seg stort sett til Facebook og Wikipedia til tross for PHP. Minsky sier at OCaml – sammen med boken hans Real World OKaml — bidrar til å lokke en jevn tilførsel av høykvalitetskandidater. Attraksjonen er ikke bare språket, men typen mennesker som bruker det. Jane Street er et selskap hvor de spiller firemannssjakk i pauserommet. Kulturen med konkurransedyktig intelligens og bruken av et fancy programmeringsspråk ser ut til å gå hånd i hånd.

Det ser ut til at Google prøver å få til et lignende triks med Go, et høyytelses programmeringsspråk det utviklet. Den er ment å gjøre funksjonen til nettet mer elegant og effektiv, og er bra for å utvikle den typen høyinnsatsprogramvare som trengs for å kjøre samlingene av servere bak store netttjenester. Det fungerer også som noe som en hundeplystre til programmerere som er interessert i det nye og vanskelige.

Vokse opp

På slutten av 2010 hadde Facebook en krise. PHP ble ikke bygget for ytelse, men det ble bedt om å utføre. Siden vokste så raskt at det så ut til at hvis noe ikke endret seg ganske drastisk, ville det begynne å falle.

Å bytte språk helt var ikke et alternativ. Facebook hadde millioner av linjer med PHP-kode, tusenvis av ingeniører som var eksperter på å skrive den, og mer enn en halv milliard brukere. I stedet ble et lite team av senioringeniører tildelt et spesielt prosjekt for å finne opp en måte for Facebook å fortsette å fungere uten å gi opp på sitt hacky morsmål.

En del av løsningen var å lage et stykke programvare – en kompilator – som ville oversette Facebooks PHP-kode til mye raskere C++-kode. Den andre var en bragd innen dataspråklig ingeniørkunst som lot Facebooks programmerere beholde sin PHP-ianske kultur, men skrive mer pålitelig kode.

Startups kan på en smart måte bruke kraften til programmeringsspråk for å manipulere sin organisasjonspsykologi.

Redningsgruppen gjorde det ved å finne opp en dialekt av PHP kalt Hack. Hack er PHP med en valgfri type system; det vil si at du kan skrive vanlig gammel rask og skitten PHP – eller, hvis du ønsker det, kan du binde deg til masten og legge til merknader for å la typesystemet kontrollere riktigheten av koden din. At denne typesjekkeren er skrevet helt i OCaml er ingen tilfeldighet. Facebook ønsket at kodene deres skulle fortsette å bevege seg raskt i komforten av morsmålet deres, men de ville ikke at de måtte bryte ting mens de gjorde det. (I fjor kunngjorde Zuckerberg et nytt ingeniørslagord: Beveg deg raskt med stabil infra, ved å bruke hackerstenografien for infrastrukturen som holder nettstedet i gang.)

Omtrent samtidig gjennomgikk Twitter en lignende transformasjon. Tjenesten ble opprinnelig bygget med Ruby on Rails – et populært nettprogrammeringsrammeverk laget med Matsumotos Ruby og i stor grad inspirert av PHP. Så kom syndfloden av brukere. Når noen med hundretusenvis av følgere tvitret, måtte hundretusener av andres tidslinjer oppdateres umiddelbart. Store tweets som det ville ofte overvelde systemet og tvinge ingeniører til å ta ned siden for å la den ta igjen. De gjorde det så ofte at feilhvalen på selskapets vedlikeholdsside ble berømt i seg selv. Twitter stoppet blødningen ved å erstatte store deler av rørleggerarbeidet med et språk kalt Scala. Det burde ikke være overraskende at Scala, i likhet med OCaml, ble utviklet av akademikere, har et kraftig typesystem, og premierer korrekthet og ytelse selv på bekostning av de enkelte programmerernes frihet og glede over håndverket.

På samme måte som startups modnes ved å endelig finne ut hvor inntektene deres vil komme fra, kan de på en smart måte bruke kraften til programmeringsspråk til å manipulere sin organisasjonspsykologi. Programmeringsspråkdesigner Guido van Rossum , som tilbrakte syv år hos Google og nå jobber i Dropbox, sier at når et programvareselskap blir en viss størrelse, er den eneste måten å avverge kaos på å bruke et språk som krever mer fra programmereren på forhånd. Det føles som om det bremser deg, for du må si alt tre ganger, sier van Rossum. Derfor venter mange startups så lenge de kan før de bytter. Du mister noen av de svimlende hackerne som fikk deg i gang, og muligheten for at små team kan haste ut nye funksjoner. Men et mer krevende språk hjelper folk over hele selskapet å forstå hverandres kode og gir produktet stabiliteten som trengs for å være en del av dagliglivets møbler.

At oppstart av programvare kan utføre slike manøvrer kan til og med bidra til å forklare hvorfor de kan være så kraftige. Den utvidede rekkevidden til datamaskiner er en del av det. Men disse selskapene har også en unik evne til å lage seg selv på nytt. Etter hvert som de endrer seg og vokser, kan de gjøre mer enn bare å tegne organisasjonskartet på nytt. Fordi de er bygget i kode, kan de gjøre noe langt mer drastisk. De kan omkoble seg selv, sin kultur, selve måten de tenker på.

James Somers er forfatter og programmerer i New York. Han jobber kl genius.com .

gjemme seg