Uso intenso de Python no Google [fechado]


185

O uso pesado do Python pelo Google, é apenas uma questão de gosto ou oferece uma vantagem competitiva?


21
Isso precisa ser wiki comunidade
AutomatedTester

72
Alex Martelli entrada para a resposta aceita em breve, ....
ChristopheD

4
Na verdade, eu acho que essa resposta pode ser respondida objetivamente (deve haver declaração em algum lugar pelo Google por que usá-lo;))
Felix Kling

15
@nomemory, "heavy" é um adjetivo correto aqui (é claro que você precisaria ver nossa base de código para confirmação - quanto Python x Java x C ++ etc.) -, mas eu posso ver , e contribua com ele, principalmente Python, todos os dias ;-). E a pergunta não se aplica a todo o setor de TI - é especificamente no Google, uma empresa de 20.000 funcionários (incluindo não programadores), onde é melhor que alguns de nós "tenham uma visão geral", desde que formem essa visão e atuem de acordo com ela. são partes essenciais de nossos trabalhos ;-). Então, estou votando para reabrir.
AlexMartelli

7
@nomemory, sempre há recrutadores entusiasmados da Oracle nas conferências do Python, então eu ficaria surpreso ao saber que o Python é "inexistente" em sua base de código (nesse caso, esses recrutadores estão mentindo, além de desperdiçar seu próprio tempo e os Pythonistas ' ;-). E de qualquer maneira, como são Oracle e Google competem, realmente -?)
Alex Martelli

Respostas:


286

Eu realmente não posso dar uma resposta definitiva, porque quando entrevistei o Google em 2004, o Python já era proeminente no Google.

De fato, há uma explicação aparentemente atraente que eu definitivamente posso negar: não é que o Google use Python porque emprega tantos Pythonistas proeminentes - em vez disso, a maioria dos googlers "proeminentes Pythonista" se juntou ao Google, pelo menos em parte, porque sabíamos da importância do Python. lá (as possíveis exceções incluem Peter Norvig e Jeremy Hylton, mas historicamente a escolha do Python pelo Google é anterior a elas).

Definitivamente, foi por isso que me interessei (minha editora me informou sobre a grande quantidade de cópias do meu livro que o Google estava comprando - no começo, achei uma boa oportunidade para vender meu serviço de consultoria freelancer ...; - ), como mais tarde consegui convencer Guido a se juntar a nós e, acredito, parte da motivação de Pythonistas como Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...

Tudo começou, acredito, porque os primeiros Googlers (Sergey, Larry, Craig, ...) tomaram uma boa decisão de engenharia: "Python onde podemos, C ++ onde devemos" - eles usaram (um subconjunto de) C ++ para as partes da pilha de software onde a latência muito baixa e / ou controle rígido da memória eram cruciais, e o Python, permitindo entrega e manutenção mais rápidas de programas, para outras partes. Na época, no final dos anos 90, a escolha para o último papel era essencialmente entre Python e Perl: outras linguagens de script eram verdes (não acho que Ruby já existia, por exemplo) ou tinham outros problemas e limitações. O Perl era mais maduro (especialmente em termos de seu ecossistema de complementos disponíveis via CPAN), mas o Python era considerado mais legível e sustentável, e a interface com as bibliotecas C ++ (via SWIG) era mais fácil.

O Java chegou mais tarde, cobrindo um nicho intermediário - e, mais recentemente, é claro que o Go foi desenvolvido (embora eu não acredite que ainda exista muito trabalho de produção, pois ainda está evoluindo e amadurecendo). Alguns idiomas especializados, como sawzall, também fazem parte de tarefas muito específicas e, é claro, o Javascript é muito importante para o trabalho no navegador.

Outros idiomas, incluindo os mencionados por Greg em 2006, são "meio acidentais" ou usados ​​para outras tarefas específicas (por exemplo, o Objetivo C para clientes em iPhones ou Macs) - por exemplo, quando o Google contratou seus primeiros administradores de sistema , esses funcionários vieram inevitavelmente com um domínio muito forte do Perl e do Bash e usavam frequentemente um desses idiomas para desenvolver algum sistema interno complexo; A recodificação em Python (para facilitar a implantação e a manutenção) geralmente ocorre. Outros (como C #) podem ter entrado temporariamente no mix devido a aquisições, mas, novamente, a recodificação em um dos "principais idiomas do Google" é sempre uma prioridade bastante alta (no caso do C #, a recodificação geralmente seria em Java, como os dois idiomas abordam áreas semelhantes em termos de níveis de abstração).


@Alex provavelmente eu não entendi direito, mas parece que o Google queria que seu ambiente fosse aberto para engenheiros (especialmente pesquisadores) para aqueles que passaram anos na universidade e saíram apenas em C ou C ++ em mãos (como todo mundo que começou com esses idiomas e a maioria deles terminou também. Aqui, python é um forte concorrente, que fornece uma interface para uma enorme lib de C / C ++.
Ramiz Uddin #


Ideias impressionantes !! Pode ajudar googlers em potencial
kmario23

3
Um petisco que eu colecionei ao ler o excelente livro de Levy "In the 'Plex" é como o Python entrou no Google (antes de ser chamado de Google - era então "backrub"). Larry Page havia escrito uma "aranha" de raspagem da Web no novo Java 1.0 beta, e estava tão quebrado que seu colega de quarto o ajudou a reescrevê-lo em uma linguagem mais rígida, sólida e produtiva ... Python. Engraçado pensar que, sem essa "aranha", o Google pode nunca vir a existir ...
Alex Martelli

34

Não li o artigo inteiro e não sei como ele é representativo, mas talvez isso responda à sua pergunta: Python no Google .

Ok eu li a maior parte dele, infelizmente, não dá que muita visão, mas eu acho que ainda é um artigo interessante. Talvez o mais importante:

No Google, python é uma das três "línguas oficiais", juntamente com C ++ e Java. Oficial aqui significa que os Googlers podem implantar esses idiomas nos serviços de produção. (Internamente, as pessoas do Google usam muitas tecnologias, incluindo PHP, C #, Ruby e Perl). O Python é adequado ao processo de engenharia do Google. O projeto típico do Google tem uma equipe pequena (3 pessoas) e uma curta duração (3 meses).


Para não esquecer que Guido van Rossum, criador do Python, trabalhou para o Google entre 2005 e 2012;)


Também encontrei esta citação, mas não a posso verificar:

"O Python é uma parte importante do Google desde o início e permanece assim à medida que o sistema cresce e evolui. Hoje, dezenas de engenheiros do Google usam o Python, e estamos procurando mais pessoas com habilidades nessa linguagem"
- Peter Norvig, Diretor de qualidade de pesquisa no Google


Então é uma questão de gosto ou uma vantagem competitiva?
Andrei Ciobanu

4
@nomemory: Talvez os dois? Ele se encaixa no processo de engenharia (sabor) e, por isso, pode ser uma vantagem se eles puderem terminar seus produtos mais cedo.
Felix Kling

1
Dezenas de engenheiros usam Python? Para uma empresa tão grande quanto o Google, esse não é um caso convincente.
Jason Baker

28

Eu estava lendo sobre o Unladen-Swallow , um projeto que visa melhorar o desempenho do CPython. Enquanto navegava pelo quadro de discussão, me deparei com essa discussão , onde Collin Winter (funcionário do Google e desenvolvedor principal do Python) responde sobre a alegação de que os funcionários do Google estão sendo desencorajados a usar o Python para novos projetos :

Bem, o simples senso comum limitará a aplicabilidade do Python ao operar na escala do Google: não é tão rápido quanto Java ou C ++, a segmentação é péssima, o uso de memória é maior etc. Uma das restrições de design que enfrentamos ao projetar qualquer novo sistema é: "o que acontece quando a carga aumenta em 10x ou 100x? O que acontece se o planeta inteiro achar que seu novo serviço é incrível?" Qualquer tecnologia que torne mais difícil satisfazer essa restrição - e acho que o Python se enquadra nessa categoria - devedesanime se não tiver um argumento muito forte a seu favor em outros méritos. Você precisa equilibrar os pontos fortes do Python com seus pontos fracos: seus engenheiros podem ser mais produtivos usando o Python, mas se eles tiverem que contornar mais limitações de desempenho / escala no nível da plataforma à medida que o volume aumenta, você sai à frente? etc.


20

Se você assina o contrato de Paul Graham ideia de que a sucintividade é == poder (ou seja, se eu posso escrever código na linguagem X em 10 linhas para realizar o que você usou 100 linhas da linguagem Y, minha linguagem é mais poderosa)

Hoje em dia o hardware é barato, os utensílios de cozinha são caros . Eu sei que posso escrever muito mais rápido, melhor e mais claro em Python do que em outras línguas, simplesmente porque as baterias tendem a ser incluídas. Claro, pode ser mais lento, mas você realmente notará a diferença entre 0,05 segundos e 0,0005 segundos?

Em um exemplo mais real, se os desenvolvedores do Google escrevem um programa em Python em que nunca precisam se preocupar com a coleta de lixo, e a Empresa X escreve um programa em C ++ e gastam 10% do seu tempo rastreando erros relacionados à alocação de memória, adivinhe quem fez mais rápido - mesmo que a loja C ++ consiga escrever o restante do código com a mesma rapidez.

Então, sim, eu diria que é uma vantagem competitiva codificar em Python.


2
Redesign maldito do site! Bem, ele tem um link alternativo, então pronto.
Wayne Werner

11
'você realmente notará a diferença entre 0,5 segundos e 0,005 segundos?' Você não trabalha na pesquisa principal do Google, YouTube ou Gmail, trabalha?
GTC

5
O hardware não é barato quando você precisa do Google.
NGhodes

5
O melhor do Python é que, quando você tem uma diferença significativa de desempenho (por exemplo, ~ 495ms), pode conectar algum código C / C ++. O Python permite que você desenvolva rapidamente e otimize com eficiência.
Trevor

3
A diferença entre 0,5 segundos e 0,005 segundos é que um é perceptível e o outro não.
Charlie Schliesser
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.