Utilisation du langage de programmation chez Google [fermé]

29

J'ai entendu dire 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 à quoi sert Python, Java et C ++ chez Google. Pourquoi utiliseraient-ils jusqu'à 3 langages de programmation alors qu'un seul langage suffit. Est-ce que quelqu'un sait?

Joshua Partogi
la source
16
De plus, vous avez oublié Go.
cbrandolino
22
Si un langage suffit, pourquoi existe-t-il du Python, du C ++ ou du Java? Nous pourrions tous simplement utiliser le langage d'assemblage pour le processeur que nos systèmes exécutent.
Lazarus
Dire qu'une seule langue suffit, c'est comme dire qu'un type de bois suffit, respecteriez-vous un charpentier qui n'avait travaillé que dans le pin, mais jamais en érable ou en chêne?
Zachary K
De plus, vous avez oublié Sawzall labs.google.com/papers/sawzall.html
Chiron
1
Ils ont utilisé java Vérifiez ce reddit.com/r/google/comments/3sdx3b/…
Elshan

Réponses:

97

La bonne réponse " parce que différentes langues ont des forces différentes " a déjà été énoncé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 sur la façon dont 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 géré 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 du code Java en JavaScript. Donc, cette page Web ou widget génial que vous voyez pourrait avoir commencé sa vie en tant que classe Java.

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 des choses - python offre-t-il une configuration similaire?)

Cependant, avec Python est parfaitement adapté 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, les traiter et les télécharger sur App Engine Python serait un bon choix. (Si vous aviez cependant besoin de distribuer ce traitement sur 1 000 machines, 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 la fermeture de 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 quel langage qui se compile en code octet Java. (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.

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.
Chris Smith
la source
D'après votre explication, cela signifie-t-il que GMail utilise GWT?
Joshua Partogi
1
Google utilise également python pour les applications Web également.
Raphael
Le célèbre googleur Alex Martelli explique "Python où nous pouvons, C ++ où nous devons"
Peter M. - signifie Monica
17
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.

StuperUser
la source
4
+1, en utilisant le meilleur outil pour le travail. Je travaille actuellement sur une seule application de bureau qui utilise 3 langages de programmation (plus divers langages de balisage et de base de données). Près du métal avec C ++, l'application principale avec Java, et quelques Jython ici et là pour une personnalisation facile. Il est logique de prendre le meilleur des trois mondes, OMI :-)
Joonas Pulakka
9

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.

Sorantis
la source
J'implémenterais des algorithmes complexes - pas extrêmement critiques pour les performances - en Python.
3

Python est utilisé pour leur site Web de support, vous pouvez voir que cette page est générée par un script python, ils utilisent des bibliothèques java pour les applications Web, d'où le support GWT et java dans le moteur d'application

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

Mahmoud Hossam
la source
2

"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.

Eldritch Conundrum
la source
0

Ils écrivent également 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.


la source