Verwendung von Programmiersprachen bei Google [geschlossen]

29

Ich habe gehört, Google verwendet Python, Java und C ++. Aber ich weiß nicht, wie diese Programmiersprachen verwendet werden. Ich meine, wofür wird Python, Java und C ++ bei Google verwendet. Warum sollten sie bis zu 3 Programmiersprachen verwenden, wenn 1 Sprache ausreicht? Weiß das jemand?

Joshua Partogi
quelle
16
Außerdem hast du Go vergessen.
Cbrandolino
22
Wenn eine Sprache ausreicht, warum gibt es überhaupt Python, C ++ oder Java? Wir könnten alle nur die Assemblersprache für den Prozessor verwenden, auf dem unsere Systeme ausgeführt werden.
Lazarus
Eine Sprache zu sagen ist genug, als würde man sagen, dass eine Holzart genug ist. Würden Sie einen Tischler respektieren, der nur in Kiefer gearbeitet hat, aber niemals in Ahorn oder Eiche?
Zachary K
Außerdem haben Sie Sawzall labs.google.com/papers/sawzall.html
Chiron am
1
Sie verwendeten Java Überprüfen Sie diese reddit.com/r/google/comments/3sdx3b/…
Elshan

Antworten:

97

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.
Chris Smith
quelle
Bedeutet das nach Ihrer Erklärung, dass GMail GWT verwendet?
Joshua Partogi
1
Google verwendet Python derzeit auch für Webanwendungen.
Raphael
Prominenter Googler Alex Martelli erklärt "Python wo wir können, C ++ wo wir müssen"
Peter M. - steht für Monica
17
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 von unterschiedlichen Situationen programmiert, handelt es sich um Pferde für Kurse, das beste Werkzeug für den Job.

StuperUser
quelle
4
+1, Mit dem besten Werkzeug für den Job. Ich arbeite derzeit an einer einzelnen Desktop-Anwendung , die 3 Programmiersprachen (plus verschiedene Markup- und Datenbanksprachen) verwendet. Nahe an C ++, Java und Jython für einfache Anpassungen. Es ist sinnvoll, das Beste aus allen drei Welten zu nehmen, IMO :-)
Joonas Pulakka
9

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 Web-Services, Web-Apps usw.

Dies sind nur meine Annahmen.

Sorantis
quelle
Ich würde in Python komplexe Algorithmen implementieren, die nicht extrem leistungskritisch sind.
3

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

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

Mahmoud Hossam
quelle
2

"1 Sprache ist genug" kann nur zutreffen, wenn jedes Projekt, das Sie ausfü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 schlechten Programmierers.

Eldritch-Rätsel
quelle
0

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


quelle