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.