it-swarm-eu.dev

Verwendung der Programmiersprache bei Google

Ich habe gehört, Google verwendet Python, Java und C++. Aber ich weiß nicht, wie jede dieser Programmiersprachen verwendet wird. Ich meine, was ist Python, Java und C++ wird bei Google verwendet. Warum sollten sie bis zu 3 Programmiersprachen verwenden, wenn 1 Sprache ausreicht? Weiß jemand Bescheid?

29
Joshua Partogi

Die richtige Antwort " weil verschiedene Sprachen unterschiedliche Stärken haben" wurde bereits angegeben. Aber lassen Sie mich näher erläutern, warum:

C++

C++ hat den Hauptvorteil, der Schnellste zu sein. Nicht notwendig, weil Java und Python sind langsam, aber weil Sie in C++ mehr Kontrolle haben about how Dinge werden ausgeführt.

Wenn Sie beispielsweise ein Webdienst-Frontend schreiben, das eine Latenz von weniger als 30 ms erfordert, können Sie C++ - Code optimieren, um diese Leistung zu erzielen. In einer verwalteten Sprache wie Java ist es etwas schwieriger, den GC dazu zu bringen, perfekt zusammenzuarbeiten.

C++ wird für viele "Google Magic" wie BigTable, MapReduce und Search Goo verwendet.

Java

Für die meisten Standardanwendungen ist Java ist eine sehr gute Sprache. Sie bietet großartige Tools, viele vorhandene Bibliotheken und nicht viel Zeit für das Debuggen.

Java wird für viele größere Websites verwendet, deren Pflege in einer niedrigeren Sprache wie C oder C++ viel schwieriger wäre. Nach meinem Verständnis ist GMail beispielsweise in Java geschrieben.

Beachten Sie außerdem, dass Sie das Web Toolkit von Google verwenden können, um Java Code in JavaScript zu kompilieren. Diese fantastische Webseite oder dieses Widget, die Sie sehen, hat möglicherweise als Java) begonnen Klasse.

Python

Python ist eine fantastische Allzwecksprache, bietet aber nicht so viel feinkörnige Kontrolle wie Java. (Zum Beispiel gibt es alle möglichen verrückten JVM-Argumente für Dinge - bietet python eine ähnliche Konfiguration?)

Mit Python ist jedoch perfekt für einfache Websites und Anwendungen geeignet, die ansonsten schreckliche Shell-Skripte wären. Wenn Sie beispielsweise einen einfachen Testfall schreiben möchten, um Daten aus bestimmten Quellen zu sammeln, verarbeiten Sie diese, und laden Sie sie in App Engine hoch Python wäre eine gute Wahl. (Wenn Sie diese Verarbeitung jedoch auf 1.000 Computer verteilen müssten, könnten Sie möglicherweise eine andere Sprache verwenden ...)

JavaScript

Offensichtlich verwendet Google viel JavaScript. Der bei Google geschriebene JavaScript-Typ 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 erhalten. Siehe Google Closure .

Sprache spielt keine Rolle (interop)

Ein weiterer Grund, warum Google nur eine Sprache nicht verwendet, ist, dass dies nicht erforderlich ist. In fast jeder modernen Programmiersprache gibt es Möglichkeiten, externe Bibliotheken aufzurufen, Bibliotheken, die möglicherweise in einer anderen Sprache geschrieben sind. (Siehe swig .)

Da App Engine die JVM ausführt, können Sie auch jede Sprache ausführen, die zu Java Bytecode) kompiliert wird. (Bei Google halten wir uns hauptsächlich an die hier genannten Sprachen, dies ist jedoch keine schwierige Anforderung. ) Wenn Sie Closure, Groovy oder Scala in App Engine verwenden möchten, wenn Sie die richtigen JAR-Dateien einschließen, sollte alles funktionieren.

Open-Source

Außerdem verwendet Google nach Möglichkeit viele Open-Source-Produkte und trägt zu diesen bei. Diese Projekte sind normalerweise in einer der oben genannten Sprachen verfasst und müssen bei Google "verwendet" werden.

Das Endergebnis ist zwei Dinge:

  • Jede Programmiersprache hat ihre eigenen Stärken. Es wäre eine Schande, diese Stärken nicht situativ zu nutzen.
  • Durch die Verfügbarkeit von Interop-Toolkits und kompatiblen Laufzeiten ist es weniger schmerzhaft, mehrere Sprachen in derselben Laufzeitumgebung zu verwenden.
97
Chris Smith
1 language is enough

Vielleicht reicht eine Sprache aus, um eine Reihe verschiedener Aufgaben angemessen zu erledigen, aber verschiedene Sprachen haben unterschiedliche Stärken, Schwächen und Fähigkeiten.

Da Google höchstwahrscheinlich für eine große Anzahl verschiedener Situationen programmiert, handelt es sich um Pferde für Kurse, das beste Werkzeug für den Job.

17
StuperUser

Diese drei Sprachen werden für unterschiedliche Zwecke verwendet.

Python kann zum Schreiben von Automatisierungsskripten verwendet werden.
C++ zur Implementierung komplexer Algorithmen (Indexer, Crawler, Map-Reduce, Big Table)
Java für Webdienste, Web-Apps usw.

Dies sind nur meine Annahmen.

9
Sorantis

Python wird für ihre Support-Website verwendet. Sie können sehen, dass Diese Seite von einem python Skript, das sie verwenden Java Bibliotheken) generiert wird für Webanwendungen daher die Unterstützung von GWT und Java in der App Engine)

Ich denke, sie verwenden C++ für Google Earth oder für Desktop-Anwendungen im Allgemeinen

3
Mahmoud Hossam

"1 Sprache ist genug" kann nur wahr sein, wenn jedes Projekt, das Sie durchführen, von einer bestimmten Art ist. Und für einige Projekte sind sogar C++ Java und Python) nicht die besten Werkzeuge. Darüber hinaus ist die Kenntnis nur einer Sprache ein Unterscheidungsmerkmal des armen Programmierers.

2

Sie schreiben auch native Mac- und iPhone-Anwendungen, und diese befinden sich in Objective-C. Der Grund dafür ist einfach: Die APIs befinden sich in Objective-C.

0
user4051