Die richtige Antwort " weil verschiedene Sprachen unterschiedliche Stärken haben " wurde bereits angegeben. Aber lassen Sie mich etwas näher erläutern, warum:
C ++
C ++ hat den Hauptvorteil, der Schnellste zu sein. Nicht notwendig, weil Java und Python langsam sind, aber weil Sie in C ++ mehr Kontrolle darüber haben, wie Dinge ausgeführt werden.
Wenn Sie beispielsweise ein Web-Service-Frontend schreiben, das weniger als 30 ms Latenz benötigt, können Sie C ++ - Code optimieren, um diese Leistung zu erzielen. In einer verwalteten Sprache wie Java ist es etwas schwieriger, den GC zur perfekten Zusammenarbeit zu bewegen.
C ++ wird für viele "Google Magic" wie BigTable, MapReduce und Search Goo verwendet.
Java
Für die meisten Standardanwendungen ist Java eine sehr gute Sprache. Es bietet großartige Tools, viele vorhandene Bibliotheken und wenig Zeit für das Debuggen.
Java wird für viele größere Websites verwendet, deren Pflege in einer niedrigeren Sprache wie C oder C ++ sehr viel schwieriger ist. Ich verstehe zum Beispiel, dass GMail in Java geschrieben ist.
Beachten Sie auch, dass Sie mit dem Web Toolkit von Google Java-Code in JavaScript kompilieren können. Diese großartige Webseite oder das Widget, das Sie sehen, hat möglicherweise als Java-Klasse begonnen.
Python
Python ist eine fantastische Allzwecksprache, bietet aber nicht so viel feinkörnige Kontrolle wie selbst Java. (Zum Beispiel gibt es alle möglichen verrückten JVM-Argumente für Dinge - bietet Python eine ähnliche Konfiguration?)
Python eignet sich jedoch perfekt für einfache Websites und Anwendungen, die ansonsten fürchterliche Shell-Skripte wären. Wenn Sie beispielsweise einen einfachen Testfall schreiben möchten, um Daten aus bestimmten Quellen zu sammeln, diese zu verarbeiten und auf App Engine Python hochzuladen, ist dies eine gute Wahl. (Wenn Sie diese Verarbeitung jedoch auf 1.000 Computer verteilen mussten, könnten Sie möglicherweise eine andere Sprache verwenden ...)
JavaScript
Offensichtlich verwendet Google viel JavaScript. Die Art von JavaScript, die bei Google geschrieben wurde, unterscheidet sich jedoch von dem, was Sie in freier Wildbahn sehen. Google hat einen optimierenden JavaScript-Compiler entwickelt, mit dem Sie Anmerkungen in Kommentaren erstellen können, um bessere Optimierungen und statische Überprüfungen zu erzielen. Siehe Google Closure .
Sprache spielt keine Rolle (interop)
Ein weiterer Grund, warum Google nicht nur eine Sprache verwendet, besteht darin, dass dies nicht erforderlich ist. In fast jeder modernen Programmiersprache gibt es Möglichkeiten, externe Bibliotheken aufzurufen, die möglicherweise in einer anderen Sprache geschrieben sind. (Siehe Schluck .)
Da App Engine die JVM ausführt, können Sie auch eine beliebige Sprache ausführen, die mit Java-Bytecode kompiliert wird. (Bei Google halten wir uns in erster Linie an die hier genannten Sprachen, dies ist jedoch keine zwingende Voraussetzung.) Wenn Sie Closure, Groovy oder Scala in App Engine verwenden möchten, sollten Sie nur die richtigen JAR-Dateien verwenden.
Open Source
Außerdem verwendet Google, wo immer möglich, eine Menge Open-Source-Inhalte und trägt zu diesen bei. Diese Projekte sind in der Regel in einer der oben genannten Sprachen verfasst und müssen bei Google "verwendet" werden.
Die Quintessenz sind zwei Dinge:
- Jede Programmiersprache hat ihre eigenen Stärken. Es wäre eine Schande, diese Stärken nicht situativ auszunutzen.
- Das Vorhandensein von Interop-Toolkits und kompatiblen Laufzeiten bedeutet, dass es weniger schmerzhaft ist, mehrere Sprachen in derselben Laufzeitumgebung zu verwenden.