O uso pesado do Python pelo Google, é apenas uma questão de gosto ou oferece uma vantagem competitiva?
O uso pesado do Python pelo Google, é apenas uma questão de gosto ou oferece uma vantagem competitiva?
Respostas:
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).
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
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.
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.