Utilizzo intenso di Python su Google [chiuso]


185

L'uso pesante di Google di Python, è solo una questione di gusti o dà loro un vantaggio competitivo?


21
Questo deve essere wiki della comunità
AutomatedTester

72
Alex Martelli in arrivo per la risposta accettata molto presto, ....
ChristopheD

4
In realtà penso che a questa risposta potrebbe essere data una risposta obiettiva (ci deve essere una dichiarazione da qualche parte da parte di Google perché la usano;))
Felix Kling

15
@nomemory, "heavy" è un aggettivo abbastanza corretto qui (ovviamente dovresti essere in grado di guardare la nostra base di codice per la conferma - quanto Python vs Java vs C ++ ecc. - ma, sono in grado di guardarlo , e contribuisci ad esso, principalmente Python, quasi ogni giorno ;-). E la domanda non è su tutto il settore IT - è in particolare su Google, una società di 20.000 dipendenti (compresi i non programmatori), dove alcuni di noi hanno avuto meglio "ha una visione d'insieme", dal momento che la formazione di questo punto di vista e agire su sono parti fondamentali del nostro lavoro ;-). Quindi, voto per riaprire.
Alex Martelli,

7
@nomemory, ci sono sempre appassionati reclutatori Oracle alle conferenze Python, quindi sarei sorpreso di apprendere che Python è "inesistente" nella loro base di codice (in tal caso, quei reclutatori mentono, oltre a sprecare il loro tempo e i Pythonistas ' ;-). E comunque, come fanno realmente Oracle e Google a competere? -)
Alex Martelli,

Risposte:


286

Non posso davvero dare una risposta definitiva, perché quando ho intervistato Google nel 2004 Python era già in primo piano in Google.

In effetti, c'è una spiegazione apparentemente attraente che posso sicuramente negare: non è che Google usi Python perché impiega così tanti Pythonistas di spicco - anzi, la maggior parte dei googler "Pythonista di spicco" si sono uniti a Google, almeno in parte, perché sapevamo della prominenza di Python lì (possibili eccezioni includono Peter Norvig e Jeremy Hylton, ma storicamente la scelta di Google di Python ha preceduto anche loro).

Questo è sicuramente il motivo per cui mi sono interessato per la prima volta (il mio editore mi ha fatto conoscere la grande quantità di copie del mio libro che Google stava acquistando - all'inizio, l'ho pensato come una buona opportunità per vendere il mio servizio di consulenza freelance ...; - ), come in seguito sono stato in grado di convincere Guido ad unirsi a noi e, credo, parte della motivazione per pitonisti come Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...

Tutto è iniziato, credo, perché i primissimi Googler (Sergey, Larry, Craig, ...) hanno preso una buona decisione ingegneristica: "Python dove possiamo, C ++ dove dobbiamo" - hanno usato (un sottoinsieme di) C ++ per le parti dello stack software in cui latenza molto bassa e / o stretto controllo della memoria erano cruciali, e Python, che consente una consegna e manutenzione più rapide dei programmi, per altre parti. All'epoca, alla fine degli anni '90, la scelta per quest'ultimo ruolo era essenzialmente tra Python e Perl: altri linguaggi di scripting erano o acerbi (non credo che Ruby fosse ancora in circolazione, per esempio) o avevano altri problemi e limitazioni. Perl era più maturo (soprattutto in termini di ecosistema di componenti aggiuntivi disponibili tramite CPAN), ma Python era ritenuto più leggibile e gestibile e l'interfacciamento con le librerie C ++ (tramite SWIG) era più semplice.

Java è arrivato più tardi, coprendo una nicchia intermedia - e più recentemente ovviamente è stato sviluppato Go (anche se non credo che ci sia ancora molto lavoro di produzione in esso, poiché è ancora in evoluzione e maturazione). Alcuni linguaggi specializzati come sawzall sono anche nel mix per compiti molto specifici, e ovviamente Javascript è molto importante per il lavoro sul lato browser.

Altre lingue, comprese quelle citate da Greg nel '06, sono o "tipo di accidentale" o utilizzate per altre attività specifiche (ad esempio, Obiettivo C per client su iPhone o Mac) - ad esempio, quando Google ha assunto i suoi primi amministratori di sistema , quegli impiegati inevitabilmente venivano con una padronanza molto forte di Perl e Bash e spesso usavano una di quelle lingue per sviluppare un sistema interno complesso; ricodificare quelli in Python (per facilitare la distribuzione e la manutenibilità) è spesso accaduto. Altri (come C #) potrebbero essere stati temporaneamente nel mix a causa di acquisizioni, ma, di nuovo, la ricodifica in una delle "principali lingue di Google" è sempre una priorità piuttosto elevata (nel caso di C #, la ricodifica sarebbe tipicamente principalmente in Java, poiché le due lingue affrontano aree simili in termini di livelli di astrazione).


@Alex probabilmente non ho capito bene, ma sembra che Google abbia voluto che il loro ambiente fosse aperto agli ingegneri (in particolare ai ricercatori) coloro che hanno trascorso anni all'università e sono usciti solo C o C ++ (dato che tutti hanno iniziato con queste lingue e la maggior parte di loro è finita anche con esso). Qui, python è un forte concorrente che fornisce un'interfaccia per l'enorme lib di C / C ++.
Ramiz Uddin,


Intuizioni fantastiche !! Può aiutare i potenziali googler
kmario23,

3
Un boccone che ho raccolto leggendo l'eccellente libro di Levy "In the Plex" è come Python è entrato in Google (prima che si chiamasse Google, poi era "backrub"). Larry Page aveva scritto un "ragno" che raschiava il web nella beta 1.0 di allora nuova di zecca, ed era così rotto che il suo compagno di stanza nel dormitorio lo aiutò a riscriverlo in un linguaggio più stabile, solido e produttivo ... Python. Divertente pensare che, senza quel "ragno", Google non sarebbe mai potuto nascere ...
Alex Martelli,

34

Non ho letto l'intero articolo e non so quanto sia rappresentativo, ma forse questo risponde alla tua domanda: Python su Google .

Ok ho letto la maggior parte di esso, purtroppo non dà che molta comprensione, ma penso che sia ancora un articolo interessante. Forse il più importante:

Per Google, Python è una delle 3 "lingue ufficiali" insieme a C ++ e Java. Ufficiale qui significa che i googler possono distribuire queste lingue ai servizi di produzione. (Le persone di Google utilizzano internamente molte tecnologie tra cui PHP, C #, Ruby e Perl). Python si adatta perfettamente al processo di ingegneria di Google. Il tipico progetto di Google ha un piccolo team (3 persone) e una breve durata (3 mesi).


Per non dimenticare che Guido van Rossum, il creatore di Python, ha lavorato per Google dal 2005-2012;)


Ho trovato anche questa citazione ma non posso verificarla:

"Python è stata una parte importante di Google sin dall'inizio, e rimane tale mentre il sistema cresce e si è evoluto. Oggi decine di ingegneri di Google usano Python e stiamo cercando più persone con competenze in questa lingua"
- Peter Norvig, Direttore della ricerca di qualità presso Google


Quindi è una questione di gusti o un vantaggio competitivo?
Andrei Ciobanu,

4
@nomemory: forse entrambi? Si adatta al processo di progettazione (gusto) e per questo potrebbe dare loro un vantaggio se possono finire i loro prodotti prima.
Felix Kling

1
Dozzine di ingegneri usano Python? Per un'azienda grande come Google, non è certo un caso convincente.
Jason Baker,

28

Stavo leggendo Unladen-Swallow , un progetto che mira a migliorare le prestazioni di CPython. Durante la navigazione nel loro forum di discussione mi sono imbattuto in questa discussione , in cui Collin Winter (dipendente di Google e sviluppatore principale di Python) risponde all'affermazione secondo cui i dipendenti di Google sono scoraggiati dall'utilizzare Python per nuovi progetti :

Bene, il semplice buon senso limiterà l'applicabilità di Python quando opera su scala di Google: non è veloce come Java o C ++, il thread fa schifo, l'utilizzo della memoria è maggiore, ecc. Uno dei vincoli di progettazione che affrontiamo quando progettiamo un nuovo sistema è, "Cosa succede quando il carico aumenta di 10x o 100x? Cosa succede se l'intero pianeta pensa che il tuo nuovo servizio sia fantastico?" Qualsiasi tecnologia che renda più difficile soddisfare tale vincolo - e penso che Python rientri in questa categoria - dovrebbescoraggiarti se non ha un caso molto forte a suo favore su altri meriti. Devi bilanciare i punti di forza di Python con i suoi punti deboli: i tuoi ingegneri potrebbero essere più produttivi usando Python, ma se devono aggirare più limiti di prestazioni / ridimensionamento a livello di piattaforma all'aumentare del volume, vieni avanti? eccetera.


20

Se ti iscrivi all'idea di Paul Graham che la sintonia == potere (cioè se riesco a scrivere codice nella lingua X in 10 righe per realizzare ciò che hai preso 100 righe della lingua Y, la mia lingua è più potente)

Questi giorni l'hardware è a buon mercato, materiale umano è costoso . So di poter scrivere molto più, più velocemente, meglio E più chiaramente in Python di quanto non possa fare in altre lingue, semplicemente perché le batterie tendono ad essere incluse. Certo, potrebbe essere più lento ma noterai davvero la differenza tra 0,05 secondi e 0,005 secondi?

In un esempio più reale, se gli sviluppatori di Google scrivono un programma in Python in cui non devono mai preoccuparsi della garbage collection e la società X scrive un programma in C ++ e trascorrono il 10% del loro tempo a rintracciare i bug relativi all'allocazione della memoria, indovina chi ha fatto più velocemente, anche se il negozio C ++ riesce a scrivere il resto del loro codice altrettanto velocemente.

Quindi sì, direi che è un vantaggio competitivo programmare in Python.


2
Riprogettazione del sito maledetto! Beh, ha un link alternativo, quindi eccoti.
Wayne Werner,

11
"Noterai davvero la differenza tra 0,5 secondi e 0,005 secondi?" Non lavori su Google Core Search, YouTube o Gmail, vero?
jwg

5
L'hardware non è economico quando hai bisogno di tanto quanto Google.
NGRhodes

5
La cosa grandiosa di Python è che, quando si riscontra una differenza significativa nelle prestazioni (ad es. ~ 495ms), è possibile collegare un codice C / C ++. Python ti consente di sviluppare rapidamente e ottimizzare in modo efficiente.
Trevor,

3
La differenza tra 0,5 secondi e 0,005 secondi è che uno è evidente e l'altro no.
Charlie Schliesser,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.