Uso de linguagem de programação no Google [fechado]

29

Ouvi dizer que o Google usa Python, Java e C ++. Mas o que não sei é como é usada cada uma dessas linguagens de programação. Quero dizer, o que é Python, Java e C ++ é usado no Google. Por que eles usaram até 3 linguagens de programação quando 1 linguagem é suficiente. Alguém sabe?

Joshua Partogi
fonte
16
Além disso, você esqueceu o Go.
Cbrandolino 21/01
22
Se uma linguagem é suficiente, por que existe Python, C ++ ou Java? Todos nós poderíamos apenas usar a linguagem Assembly para o processador que nossos sistemas estão executando.
Lázaro
Dizer que um idioma é suficiente é como dizer que um tipo de madeira é suficiente. Você respeitaria um carpinteiro que só havia trabalhado em Pine, mas nunca de bordo ou carvalho?
Zachary K
Além disso, você esqueceu o Sawzall labs.google.com/papers/sawzall.html
Quíron,
1
Eles usavam java Verifique isto reddit.com/r/google/comments/3sdx3b/…
Elshan

Respostas:

97

A resposta correta " porque idiomas diferentes têm forças diferentes " já foi declarada. Mas deixe-me fornecer mais alguns detalhes sobre o porquê:

C ++

O C ++ tem a principal vantagem de ser o mais rápido do lote. Não é necessário porque Java e Python são lentos, mas porque em C ++ você tem mais controle sobre como as coisas são executadas.

Por exemplo, se você estiver escrevendo um front-end de serviços da Web que exija menos de 30ms de latência, poderá ajustar o código C ++ para obter esse desempenho. Em uma linguagem gerenciada como Java, é um pouco mais difícil fazer o GC cooperar perfeitamente.

O C ++ é usado para muitas 'mágicas do Google', como BigTable, MapReduce e pesquisa.

Java

Para a maioria dos aplicativos padrão, Java é uma linguagem perfeitamente adequada. Possui ótimas ferramentas, muitas bibliotecas existentes e pouco tempo gasto na depuração.

O Java é usado para muitos sites maiores, que seriam muito mais difíceis de manter em uma linguagem de nível inferior como C ou C ++. Por exemplo, meu entendimento é que o GMail é escrito em Java.

Além disso, observe que você pode usar o Web Toolkit do Google para compilar o código Java em JavaScript. Portanto, essa incrível página da web ou widget que você vê pode ter começado a vida como uma classe Java.

Python

Python é uma fantástica linguagem de propósito geral, mas não oferece tanto controle refinado quanto o Java. (Por exemplo, existem todos os tipos de argumentos malucos da JVM para coisas - o python oferece configuração semelhante?)

No entanto, o Python é perfeitamente adequado para sites e aplicativos simples que, de outra forma, seriam horríveis scripts de shell. Por exemplo, se você quiser escrever um caso de teste simples para coletar dados de algumas fontes, processá-los e enviá-los para o App Engine Python seria uma boa opção. (No entanto, se você precisasse distribuir esse processamento por 1.000 máquinas, talvez pudesse usar um idioma diferente ...)

Javascript

Obviamente, o Google usa muito JavaScript. No entanto, o tipo de JavaScript escrito no Google é diferente do que você vê na natureza. O Google desenvolveu um compilador JavaScript otimizador que permite criar anotações em comentários em troca de melhores otimizações e verificação estática. Consulte Google Closure .

O idioma não importa (interoperabilidade)

Outra razão pela qual o Google não usa apenas um idioma é que ele não precisa. Existem facilidades em quase todas as linguagens de programação modernas para chamar bibliotecas externas, bibliotecas que podem ser escritas em uma linguagem diferente. (Veja swig .)

Além disso, como o App Engine executa a JVM, você pode executar qualquer idioma que seja compilado no código de byte Java. (No Google, aderimos principalmente aos idiomas mencionados aqui, mas esse não é um requisito difícil.) Se você deseja usar o Closure, Groovy ou Scala no App Engine, se incluir os arquivos JAR certos, tudo deve funcionar.

Código aberto

Além disso, o Google usa e contribui para uma grande quantidade de código aberto sempre que possível. Esses projetos geralmente são escritos em um dos idiomas acima e exigem que ele seja 'usado' no Google.

A linha inferior é duas coisas:

  • Toda linguagem de programação tem seus próprios pontos fortes. Não tirar proveito situacional desses pontos fortes seria uma vergonha.
  • A disponibilidade de kits de ferramentas de interoperabilidade e tempos de execução compatíveis significa que é menos doloroso usar vários idiomas no mesmo ambiente de tempo de execução.
Chris Smith
fonte
Pela sua explicação, isso significa que o GMail usa GWT?
Joshua Partogi
1
Atualmente, o Google também usa python para aplicativos da web.
Raphael
O destacado pesquisador Alex Martelli explica "Python onde podemos, C ++ onde devemos"
Peter M. - significa Monica
17
1 language is enough

Talvez um idioma seja suficiente para concluir adequadamente uma série de tarefas diferentes, mas diferentes idiomas têm diferentes pontos fortes, fracos e habilidades.

Como o Google provavelmente programa para um grande número de situações diferentes, é um caso de cavalos para percursos, a melhor ferramenta para o trabalho.

StuperUser
fonte
4
+1, Usando a melhor ferramenta para o trabalho. Atualmente, estou trabalhando em um único aplicativo de desktop que usa três linguagens de programação (além de várias linguagens de marcação e banco de dados). Perto de coisas de metal com C ++, aplicativo principal com Java e alguns Jython aqui e ali para fácil personalização. Faz sentido de tirar o melhor de todos os três mundos, IMO :-)
Joonas Pulakka
9

Esses três idiomas são usados ​​para finalidades diferentes.

Python pode ser usado para escrever scripts de automação.
C ++ para implementar algoritmos complexos. (Indexador, Rastreador, Redução de Mapa, Tabela Grande)
Java para serviços web, aplicativos web, etc.

Estas são apenas minhas suposições.

Sorantis
fonte
Eu implementaria algoritmos complexos - não extremamente críticos para o desempenho - em Python.
3

O Python é usado no site de suporte. Você pode ver que esta página é gerada por um script python, eles usam bibliotecas java para aplicativos da web, portanto, o GWT e o suporte a java no mecanismo de aplicativos

Eu acho que eles usam C ++ para o Google Earth, ou para aplicativos de desktop em geral

Mahmoud Hossam
fonte
2

"1 idioma é suficiente" só pode ser verdade se todo projeto que você fizer for de um tipo específico. E para alguns projetos, mesmo C ++ Java e Python não são as melhores ferramentas. Além disso, conhecer apenas um idioma é uma característica distintiva do programador ruim.

Eldritch Conundrum
fonte
0

Eles também escrevem aplicativos nativos para Mac e iPhone, e esses estão no Objective-C. O motivo disso é simples: as APIs estão no Objective-C.


fonte