La bonne réponse " parce que différentes langues ont des forces différentes " a déjà été énoncée. Mais permettez-moi de vous expliquer plus en détail pourquoi:
C ++
C ++ a le principal avantage d'être le plus rapide du lot. Pas nécessaire car Java et Python sont lents, mais parce qu'en C ++ vous avez plus de contrôle sur la façon dont les choses sont exécutées.
Par exemple, si vous écrivez un frontend de services Web qui nécessite moins de 30 ms de latence, vous pouvez régler le code C ++ pour obtenir ces performances. Dans un langage géré comme Java, il est un peu plus difficile de faire coopérer parfaitement le GC.
C ++ est utilisé pour beaucoup de «magie Google» comme BigTable, MapReduce et goo de recherche.
Java
Pour la plupart des applications standard, Java est un langage parfaitement fin. Il dispose d'excellents outils, de nombreuses bibliothèques existantes et de peu de temps passé à déboguer.
Java est utilisé pour de nombreux sites Web plus volumineux qui seraient beaucoup plus difficiles à gérer dans un langage de niveau inférieur comme C ou C ++. Par exemple, je crois comprendre que GMail est écrit en Java.
Notez également que vous pouvez utiliser la boîte à outils Web de Google pour compiler du code Java en JavaScript. Donc, cette page Web ou widget génial que vous voyez pourrait avoir commencé sa vie en tant que classe Java.
Python
Python est un langage polyvalent fantastique, mais n'offre pas autant de contrôle à grain fin que même Java. (Par exemple, il y a toutes sortes d'arguments JVM fous pour des choses - python offre-t-il une configuration similaire?)
Cependant, avec Python est parfaitement adapté aux sites Web et applications simples qui seraient autrement des scripts shell horribles. Par exemple, si vous vouliez écrire un testcase simple pour collecter des données à partir de certaines sources, les traiter et les télécharger sur App Engine Python serait un bon choix. (Si vous aviez cependant besoin de distribuer ce traitement sur 1 000 machines, vous pourriez peut-être utiliser une langue différente ...)
Javascript
Évidemment, Google utilise beaucoup de JavaScript. Cependant, le type de JavaScript écrit sur Google est différent de ce que vous voyez dans la nature. Google a développé un compilateur JavaScript optimisant qui vous permet de construire des annotations dans les commentaires en échange de meilleures optimisations et vérifications statiques. Voir la fermeture de Google .
La langue n'a pas d'importance (interop)
Une autre raison pour laquelle Google n'utilise pas une seule langue est qu'il n'en a pas besoin. Il existe des installations dans presque tous les langages de programmation modernes pour appeler des bibliothèques externes, bibliothèques qui peuvent être écrites dans un langage différent. (Voir swig .)
De plus, étant donné qu'App Engine exécute la machine virtuelle Java, vous pouvez exécuter n'importe quel langage qui se compile en code octet Java. (Chez Google, nous nous en tenons principalement aux langues mentionnées ici, mais ce n'est pas une exigence difficile.) Si vous souhaitez utiliser Closure, Groovy ou Scala sur App Engine si vous incluez les bons fichiers JAR, tout devrait fonctionner.
Open source
En outre, Google utilise et contribue à beaucoup d'Open-Source lorsque cela est possible. Ces projets sont généralement rédigés dans l'une des langues ci-dessus et nécessitent qu'il soit «utilisé» par Google.
L'essentiel, c'est deux choses:
- Chaque langage de programmation a ses propres forces. Ne pas profiter de ces atouts situationnellement serait une honte.
- La disponibilité des boîtes à outils d'interopérabilité et des exécutions compatibles signifie qu'il est moins pénible d'utiliser plusieurs langues dans le même environnement d'exécution.