Toolkit per la mente





Quando l'informatico giapponese Yukihiro Matsumoto ha deciso di creare Ruby, un linguaggio di programmazione che ha aiutato a costruire Twitter, Hulu e gran parte del Web moderno, stava inseguendo un'idea da un romanzo di fantascienza del 1966 intitolato Babele-17 di Samuel R. Delany. Al centro del libro c'è un linguaggio inventato con lo stesso nome che migliora le menti di tutti coloro che lo parlano. Babel-17 è un linguaggio analitico così preciso, che ti assicura quasi la padronanza tecnica di qualsiasi situazione tu guardi, dice il protagonista a un certo punto. Con Ruby, Matsumoto voleva la stessa cosa: riprogrammare e migliorare il modo di pensare dei programmatori.

Sembra grandioso, ma quella di Matsumoto non è una visione marginale. Gli sviluppatori di software come specie tendono a essere convinti che i linguaggi di programmazione abbiano una presa sulla mente abbastanza forte da cambiare il modo in cui affronti i problemi, persino da cambiare i problemi che pensi di risolvere. È così che valutano le aziende, i prodotti, i loro colleghi: che lingua usi?

Progettare il bambino perfetto

Questa storia faceva parte del nostro numero di maggio 2015



  • Vedi il resto del problema
  • sottoscrivi

Ciò può aiutare gli estranei a comprendere le società di software che sono diventate così potenti e preziose e i prodotti e i servizi che infondono le nostre vite. Una decisione che sembra il tipo più interno di baseball interno - se qualcuno costruisce una nuova cosa usando, diciamo, Ruby o PHP o C - può improvvisamente influenzare tutti noi. Se vuoi sapere perché Facebook sembra e funziona in quel modo e che tipo di cose può fare per noi e per noi, devi sapere qualcosa su PHP, il linguaggio di programmazione con cui Mark Zuckerberg l'ha costruito.

Tra i programmatori, PHP è forse il meno rispettato di tutti i linguaggi di programmazione. Un post sul blog ormai canonico sui suoi difetti lo ha descritto come un frattale di cattivo design , e coloro che lo usano volentieri sono visti come dilettanti. C'è questo mito della geniale ingegneria che è entrata in Facebook, dice Jeff Atwood , co-creatore del popolare sito di domande e risposte di programmazione Stack Overflow . Ma stavano costruendo codice PHP in Windows XP. Erano hacker nel senso quasi dispregiativo della parola. Nello spazio di 10 minuti, Atwood ha definito PHP un mostro disordinato, una pandemia e una casa infestata i cui residenti hanno imparato ad amare i fantasmi.

Cose recensite

  • Babele-17

    Di Samuel R. Delany
    1966



  • Real World OCaml di Yaron Minsky et al.

    O'Reilly, 2013PHFackScala

La maggior parte dei linguaggi di programmazione di successo hanno una filosofia generale o una serie di principi guida che organizzano il loro vocabolario e la grammatica, l'insieme di possibili istruzioni che mettono a disposizione del programmatore, in un insieme logico. PHP no. Il suo creatore, Rasmus Lerdorf, ammette liberamente di averlo appena messo insieme. non so come fermarlo, ha detto in un'intervista del 2003 . Non ho assolutamente idea di come scrivere un linguaggio di programmazione: ho continuato ad aggiungere il passaggio logico successivo lungo il percorso.

L'esempio preferito dai programmatori è una funzione PHP chiamata mysql_escape_string, che elimina una query dall'input dannoso prima di inviarla a un database. (Per un esempio di input dannoso, pensa a un modulo su un sito Web che richiede il tuo indirizzo e-mail; un hacker può inserire il codice in quello slot per costringere il sito a espellere password.) Quando è stato scoperto un bug nel funzione, è stata aggiunta una nuova versione, chiamata mysql_ vero _escape_string, ma l'originale non è stato sostituito. Il risultato è un po' come avere due pulsanti dall'aspetto simile uno accanto all'altro nella cabina di pilotaggio di una compagnia aerea: uno che abbassa il carrello di atterraggio e uno che lo abbassa in sicurezza . Non è solo un affronto al buon senso, è una ricetta per il disastro.



Eppure, nonostante il diffuso disprezzo per PHP, gran parte del Web è stato costruito sulle sue spalle. PHP alimenta il 39 percento di tutti i domini , da una stima. Facebook, Wikipedia e la principale piattaforma di pubblicazione WordPress sono tutti progetti PHP. Questo perché PHP, nonostante tutti i suoi difetti, è perfetto per iniziare. Il nome originariamente stava per home page personale. Ha semplificato l'aggiunta di contenuti dinamici come la data o il nome di un utente a pagine HTML statiche. PHP ha consentito il salto dall'armeggiare con un web luogo a scrivere un Web applicazione essere così piccolo da essere impercettibile. Non avevi bisogno di essere un professionista.

L'avvio di PHP è stato fondamentale per il successo di Wikipedia, afferma Ori Livneh, principale ingegnere del software presso la Wikimedia Foundation, che gestisce il progetto. Ho sempre detestato PHP, mi dice. Il progetto soffre di difetti di progettazione su larga scala a causa della sua dipendenza dalla lingua. (Sono in parte il motivo per cui la fondazione non ha reso disponibili le pagine di Wikipedia in una versione adattata per dispositivi mobili fino al 2008 e il motivo per cui il sito non ha ottenuto un'interfaccia di modifica intuitiva fino al 2013.) Ma PHP ha consentito a persone che non lo erano — o erano a malapena — ingegneri del software a contribuire con nuove funzionalità. È così che le voci di Wikipedia sono arrivate a visualizzare i geroglifici sulle pagine di egittologia, ad esempio, e a gestire gli spartiti.

Il linguaggio di programmazione PHP ha creato e sostiene la cultura aziendale veloce e orientata agli hacker di Facebook.



Non avresti creato Google in PHP, perché Google, per diventare Google, doveva fare esattamente una cosa molto bene: aveva bisogno che la ricerca fosse semplice, veloce e meticolosamente ben progettata. È stato realizzato con linguaggi più raffinati e potenti, come Java e C++. Facebook, al contrario, è un bazar di piccoli esperimenti, un buffet di pulsanti, feed e aggeggi che cercano di catturare la tua attenzione. PHP è fatto per fabbricazione —per preparare rapidamente le funzioni.

Puoi quasi immaginare Zuckerberg nella sua stanza del dormitorio di Harvard il fatidico giorno in cui è nato Facebook, facendo il minimo che poteva per portare il suo sito online. Il Web si muove così velocemente e gli utenti sono così volubili che l'unico modo in cui sarai in grado di catturare il momento è essere il primo. Non importava se ha fatto una grossa palla di fango, o un piatto di spaghetti, o un orribile armadio per tubi (per prendere in prestito dal ricco lessico dei programmatori per descrivere il codice disordinato). Ha fatto la cosa. Le persone potrebbero usarlo. Non stava pensando a un codice bellissimo; stava pensando ai suoi amici che effettuavano l'accesso Facebook per guardare le foto di ragazze che conoscevano.

Oggi Facebook vale più di 200 miliardi di dollari e ci sono cartelli sui muri dei suoi uffici: Fatto è meglio che perfetto; Muoviti velocemente e rompi le cose. Questi messaggi audaci dovrebbero mantenere i dipendenti in sintonia con la cultura hacker dell'azienda. Ma questi sono precisamente PHP i valori. Muoversi velocemente e rompere le cose è in effetti così tanto l'essenza di PHP che chiunque parli la lingua in modo indelebile la pensa in questo modo. Si potrebbe dire che la lingua stessa ha creato e sostiene la cultura di Facebook.

L'arma segreta

Se volevi trovare l'esatto opposto di PHP, una sorta di esperimento naturale per mostrarti che aspetto avesse l'altro estremo, non potresti fare molto meglio del sedicente serio di Lower Manhattan della società di trading finanziario Jane Street Capital. La società di 400 persone afferma di essere responsabile di circa il 2% del volume giornaliero di scambi di azioni negli Stati Uniti.

Quando incontro Yaron Minsky, il capo della tecnologia di Jane Street, è seduto a una scrivania con accanto una macchina Enigma funzionante, una delle poche decine di dispositivi di codice della seconda guerra mondiale rimasti al mondo. Lo considererei il chiaro vincitore del concorso per Coolest Secret Weapon in the Room se non fosse per il modo in cui continua a parlare di un oscuro linguaggio di programmazione chiamato OCaml. Minsky, un PhD in informatica, ha convinto il suo datore di lavoro 10 anni fa a riscrivere l'intero sistema commerciale dell'azienda in OCaml. Prima di allora, quasi nessuno usava la lingua per il lavoro vero e proprio; era sviluppato in un istituto di ricerca francese da accademici che cercano di migliorare un sistema informatico che dimostri automaticamente teoremi matematici. Ma Minsky pensava che OCaml, che aveva imparato a conoscere alla scuola di specializzazione, potesse sostituire i complessi fogli di calcolo Excel che alimentavano i sistemi di trading di Jane Street.

Il grande punto di forza di OCaml è il suo sistema di tipi, che è qualcosa come il correttore grammaticale di Microsoft Word, tranne per il fatto che invece di mettere una linea verde ondulata sotto il codice che pensa sia sbagliato, non ti permetterà di eseguirlo. I programmi scritti con un sistema di tipi tendono ad essere molto più affidabili di quelli scritti senza uno, utile quando un programma potrebbe scambiare $ 30 miliardi in un grande giorno.

Minsky afferma che, rilevando i bug, il sistema dei tipi di OCaml consente ai programmatori di Jane Street di concentrarsi su problemi più elevati. Viene da chiedersi se nel tempo abbiano interiorizzato il costante fastidio del sistema, così che OCaml sia diventato una specie di neolingua che rende impossibile pensare cattivi pensieri.

Il problema è che per ottenere tutti i vantaggi del controllo del tipo, i programmatori devono aggiungere annotazioni complesse al loro codice. È come se il correttore grammaticale di Word ti richiedesse di tracciare un diagramma di tutte le tue frasi. Scrivere codice con vincoli di tipo può essere una seccatura, persino demoralizzante. A peggiorare le cose, OCaml, più della maggior parte degli altri linguaggi di programmazione, esegue il traffico in una sorta di matematica astratta profonda ben al di là della maggior parte dei programmatori. Il rigore del linguaggio è come un'erba gatta per alcune persone, tuttavia, dando a Jane Street un vantaggio insolito nel mercato ristretto delle assunzioni per i programmatori. Gli sviluppatori di software si uniscono principalmente a Facebook e Wikipedia nonostante PHP. Minsky dice che OCaml, insieme al suo libro OCaml del mondo reale —aiuta ad attirare una fornitura costante di candidati di alta qualità. L'attrazione non è solo la lingua, ma il tipo di persone che la usano. Jane Street è una compagnia in cui giocano a scacchi in quattro persone nella sala pausa. La cultura dell'intelligenza competitiva e l'uso di un linguaggio di programmazione fantasioso sembrano andare di pari passo.

Sembra che Google stia cercando di fare un trucco simile con Go, un linguaggio di programmazione ad alte prestazioni che ha sviluppato. Destinato a rendere il funzionamento del Web più elegante ed efficiente, è utile per sviluppare il tipo di software ad alto rischio necessario per eseguire le raccolte di server dietro i servizi Web di grandi dimensioni. Agisce anche come un fischietto per cani per i programmatori interessati al nuovo e al difficile.

Crescendo

Alla fine del 2010, Facebook stava attraversando una crisi. PHP non è stato creato per le prestazioni, ma gli è stato chiesto di eseguire. Il sito stava crescendo così velocemente che sembrava che se qualcosa non fosse cambiato in modo abbastanza drastico, avrebbe iniziato a cadere.

Cambiare completamente lingua non era un'opzione. Facebook aveva milioni di righe di codice PHP, migliaia di ingegneri esperti nella sua scrittura e più di mezzo miliardo di utenti. Invece, un piccolo team di ingegneri senior è stato incaricato di un progetto speciale per inventare un modo per consentire a Facebook di continuare a funzionare senza rinunciare alla sua lingua materna.

Una parte della soluzione consisteva nel creare un software, un compilatore, che traducesse il codice PHP di Facebook in codice C++ molto più veloce. L'altro è stato un'impresa di ingegneria linguistica informatica che ha consentito ai programmatori di Facebook di mantenere la loro cultura PHP-iana ma di scrivere codice più affidabile.

Le startup possono usare abilmente il potere dei linguaggi di programmazione per manipolare la loro psicologia organizzativa.

La squadra di soccorso lo ha fatto inventando un dialetto di PHP chiamato Hack. Hack è PHP con un opzionale tipo di sistema; cioè, puoi scrivere un semplice PHP veloce e sporco o, se lo desideri, puoi legarti all'albero, aggiungendo annotazioni per consentire al sistema di tipi di verificare la correttezza del tuo codice. Che questo controllo del tipo sia scritto interamente in OCaml non è un caso. Facebook voleva che i suoi programmatori continuassero a muoversi velocemente nel comfort della loro lingua madre, ma non voleva che dovessero rompere le cose mentre lo facevano. (L'anno scorso Zuckerberg ha annunciato un nuovo slogan ingegneristico: Muoversi velocemente con un'infrastruttura stabile, utilizzando l'abbreviazione hacker per l'infrastruttura che mantiene il sito in funzione.)

Più o meno nello stesso periodo, Twitter ha subito una trasformazione simile. Il servizio è stato originariamente creato con Ruby on Rails, un popolare framework di programmazione Web creato utilizzando Ruby di Matsumoto e ispirato in gran parte da PHP. Poi è arrivato il diluvio di utenti. Quando qualcuno con centinaia di migliaia di follower twittava, è stato necessario aggiornare immediatamente le linee temporali di centinaia di migliaia di altre persone. Tweet di grandi dimensioni come quello spesso sopraffacerebbero il sistema e costringerebbero gli ingegneri a rimuovere il sito per consentirgli di recuperare il ritardo. Lo hanno fatto così spesso che la balena fallita sulla pagina di manutenzione dell'azienda è diventata famosa a pieno titolo. Twitter ha fermato l'emorragia sostituendo grossi pezzi dell'impianto idraulico del servizio con un linguaggio chiamato Scala. Non dovrebbe sorprendere che Scala, come OCaml, sia stato sviluppato da accademici, abbia un potente sistema di tipi e premi la correttezza e le prestazioni anche a scapito della libertà e del piacere dei singoli programmatori nel loro mestiere.

Per quanto le startup maturano scoprendo finalmente da dove arriveranno le loro entrate, possono usare abilmente il potere dei linguaggi di programmazione per manipolare la loro psicologia organizzativa. Designer di linguaggi di programmazione Guido van Rossum , che ha trascorso sette anni in Google e ora lavora in Dropbox, afferma che una volta che un'azienda di software raggiunge una certa dimensione, l'unico modo per evitare il caos è utilizzare un linguaggio che richiede di più dal programmatore in anticipo. Sembra che ti stia rallentando, perché devi dire tutto tre volte, dice van Rossum. Ecco perché molte startup aspettano il più a lungo possibile prima di effettuare il passaggio. Perdi alcuni degli hacker spavaldi che ti hanno fatto iniziare e la possibilità che i piccoli team possano lanciare nuove funzionalità. Ma un linguaggio più preciso aiuta le persone all'interno dell'azienda a capire il codice dell'altro e dà al tuo prodotto la stabilità necessaria per far parte dei mobili della vita quotidiana.

Il fatto che le startup di software possano eseguire tali manovre potrebbe anche aiutare a spiegare perché possono essere così potenti. La portata in espansione dei computer ne fa parte. Ma queste aziende hanno anche una capacità unica di rifare se stesse. Man mano che cambiano e crescono, possono fare molto di più che ridisegnare l'organigramma. Poiché sono integrati nel codice, possono fare qualcosa di molto più drastico. Possono ricablare se stessi, la loro cultura, il modo stesso in cui pensano.

James Somers è uno scrittore e programmatore a New York. Lavora presso genio.com .

nascondere