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?
29
Antworten:
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:
quelle
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.
quelle
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.
quelle
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
quelle
"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.
quelle
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