web-dev-qa-db-fra.com

Utilisation du langage de programmation chez Google

J'ai entendu que Google utilise Python, Java et C++. Mais ce que je ne sais pas, c'est comment est utilisé chacun de ces langages de programmation. Je veux dire ce qui est Python, Java et C++ est utilisé pour Google. Pourquoi utiliseraient-ils jusqu'à 3 langages de programmation alors qu'un seul langage est suffisant. Quelqu'un le sait-il?

29
Joshua Partogi

La bonne réponse " parce que différentes langues ont des forces différentes" a déjà été indiqué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 about comment 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 managé 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 Java code en JavaScript. Ainsi, cette page Web ou widget génial que vous voyez pourrait avoir commencé comme un Java classe.

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 les choses - est-ce que python offre une configuration similaire?)

Cependant, avec Python convient parfaitement 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, traitez-les, et les télécharger sur App Engine Python serait un bon choix. (Si vous aviez besoin de distribuer ce traitement sur 1000 machines cependant, 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 fermeture 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 quelle langue qui se compile en Java octet. (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 correctement.

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.
97
Chris Smith
1 language is enough

Peut-être qu'une seule langue suffit pour accomplir un certain nombre de tâches différentes de manière adéquate, mais différentes langues ont des forces, des faiblesses et des capacités différentes.

Étant donné que google programme très probablement pour un grand nombre de situations différentes, il s'agit de chevaux pour les cours, le meilleur outil pour le travail.

17
StuperUser

Ces trois langues sont utilisées à des fins différentes.

Python peut être utilisé pour écrire des scripts d'automatisation.
C++ pour implémenter des algorithmes complexes (Indexeur, Crawler, Map-Reduce, Big Table)
Java pour les services Web, les applications Web, etc.

Ce ne sont que mes hypothèses.

9
Sorantis

Python est utilisé pour leur site Web d'assistance, vous pouvez voir que Cette page est générée par un script python, ils utilisent Java pour les applications Web, d'où le GWT et Java support dans le moteur d'application

Je pense qu'ils utilisent C++ pour Google Earth ou pour les applications de bureau en général

3
Mahmoud Hossam

"Une seule langue suffit" ne peut être vrai que si chaque projet que vous réalisez est d'un type spécifique. Et pour certains projets, même C++ Java et Python ne sont pas les meilleurs outils. De plus, la connaissance d'une seule langue est une caractéristique distinctive du mauvais programmeur).

2
Eldritch Conundrum

Ils écrivent aussi des applications natives Mac et iPhone, et celles-ci sont en Objective-C. La raison pour laquelle ils le font est simple: les API sont en Objective-C.

0
user4051