Utilisation intensive de Python chez Google [fermé]

185

L'utilisation intensive de Python par Google, est-ce juste une question de goût ou leur donne-t-il un avantage concurrentiel?

Ron Chan
la source
22
Cela doit être le wiki de la communauté
AutomatedTester
72
Alex Martelli entrant pour la réponse acceptée très bientôt, ....
ChristopheD
4
En fait, je pense que cette réponse pourrait recevoir une réponse objective (il doit y avoir une déclaration quelque part par Google pourquoi ils l'utilisent;))
Felix Kling
15
@nomemory, "heavy" est un adjectif assez correct ici (bien sûr, vous devez être en mesure de regarder notre base de code pour confirmation - combien Python vs Java vs C ++ etc. - mais, je suis capable de le regarder , et y contribuer, principalement Python, presque tous les jours ;-). Et la question ne concerne pas l'ensemble de l'industrie informatique - c'est spécifiquement Google, une entreprise de 20 000 employés (y compris des non-programmeurs), où certains d'entre nous feraient mieux "d'avoir une vue d'ensemble", depuis la formation de cette vue et la mise en œuvre ce sont des éléments essentiels de notre travail ;-). Donc, je vote pour rouvrir.
Alex Martelli
7
@nomemory, il y a toujours des recruteurs Oracle passionnés aux conférences Python, donc je serais surpris d'apprendre que Python est "inexistant" dans leur base de code (si c'est le cas, ces recruteurs mentent, et perdent leur temps et les pythonistes ;-). Et de toute façon, comment Oracle et Google sont-ils vraiment en concurrence? -)
Alex Martelli

Réponses:

286

Je ne peux pas vraiment donner de réponse définitive, car au moment où j'ai interviewé chez Google en 2004, Python était déjà en vue chez Google.

En effet, il y a une explication apparemment attrayante que je peux définitivement nier: ce n'est pas que Google utilise Python parce qu'il emploie tant de pythonistes de premier plan - plutôt, la plupart des googleurs "Pythonista" ont rejoint Google, au moins en partie, parce que nous connaissions l'importance de Python. là (les exceptions possibles incluent Peter Norvig et Jeremy Hylton, mais historiquement le choix de Python par Google était même antérieur à eux).

C'est certainement pour cela que je me suis d'abord intéressée (mon éditeur m'a fait part du grand nombre d'exemplaires de mon livre que Google achetait - au début, je pensais que c'était une bonne opportunité de vendre mon service de conseil indépendant ...; - ), comment j'ai pu par la suite convaincre Guido de nous rejoindre et, je crois, une partie de la motivation de pythonistes tels que Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...

Tout a commencé, je crois, car les tout premiers Googleurs (Sergey, Larry, Craig, ...) ont pris une bonne décision d'ingénierie: "Python où nous pouvons, C ++ où nous devons" - ils ont utilisé (un sous-ensemble de) C ++ pour les parties de la pile logicielle où une très faible latence et / ou un contrôle serré de la mémoire étaient cruciaux, et Python, permettant une livraison et une maintenance plus rapides des programmes, pour les autres parties. À l'époque, à la fin des années 90, le choix pour ce dernier rôle se situait essentiellement entre Python et Perl: d'autres langages de script n'étaient pas mûrs (je ne pense pas que Ruby était encore là, par exemple) ou avaient d'autres problèmes et limitations. Perl était plus mature (en particulier en termes de son écosystème d'add-ons disponibles via CPAN), mais Python était considéré comme plus lisible et maintenable, et l'interfaçage avec les bibliothèques C ++ (via SWIG) était plus facile.

Java est arrivé plus tard, couvrant une niche intermédiaire - et plus récemment, bien sûr, Go a été développé (bien que je ne pense pas qu'il y ait encore beaucoup de travail de production, car il évolue et mûrit encore). Certains langages spécialisés tels que sawzall sont également dans le mélange pour des tâches très spécifiques, et bien sûr Javascript est très important pour le travail côté navigateur.

D'autres langues, y compris celles que Greg a mentionnées en 2006, sont soit "accidentelles", soit utilisées pour d'autres tâches spécifiques (par exemple, Objective C pour les clients sur iPhone ou Mac) - par exemple, lorsque Google a embauché ses premiers administrateurs système , ces employés sont inévitablement venus avec une très bonne maîtrise de Perl et Bash, et ont souvent utilisé l'un ou l'autre de ces langages pour développer un système interne complexe; le recodage de ceux-ci en Python (pour un déploiement et une maintenabilité plus faciles) s'est souvent produit. D'autres (comme C #) peuvent avoir été temporairement dans le mix en raison d'acquisitions, mais, encore une fois, le recodage dans l'un des "principaux langages de Google" est toujours une priorité assez élevée (dans le cas de C #, le recodage se ferait généralement principalement en Java, car les deux langages abordent des domaines similaires en termes de niveaux d'abstraction).

Alex Martelli
la source
@Alex je n'ai probablement pas compris correctement mais il semble que Google voulait que son environnement soit ouvert aux ingénieurs (en particulier aux chercheurs), ceux qui ont passé des années à l'université et n'ont sorti que du C ou du C ++ en main (comme tout le monde commençant par ces langages et la plupart d'entre eux ont terminé avec lui aussi). Ici, python est un concurrent sérieux fournit une interface vers une énorme bibliothèque de C / C ++.
Ramiz Uddin
8
Voyage dans le temps FTW: web.archive.org/web/20091222094118/http://labs.google.com/…
Jess Telford
Des idées impressionnantes !! Peut aider les futurs googleurs
kmario23
3
Une information que j'ai recueillie en lisant l'excellent livre de Levy "In the 'Plex" est la façon dont Python est entré dans Google (avant qu'il ne s'appelle Google - c'était alors "backrub"). Larry Page avait écrit une "araignée" de web-scraping dans la toute nouvelle version bêta de Java 1.0, et elle était si cassée que son colocataire l'a aidé en la réécrivant dans un langage plus stable, solide et productif ... Python. C'est drôle de penser que, sans cette "araignée", Google n'aurait peut-être jamais vu le jour ...
Alex Martelli
34

Je n'ai pas lu l'article en entier et je ne sais pas à quel point il est représentatif, mais peut-être que cela répond à votre question: Python chez Google .

Ok je l' ai lu la majeure partie, malheureusement , il ne donne pas que beaucoup de perspicacité , mais je pense qu'il est encore un article intéressant. Peut-être le plus important:

Chez Google, python est l'un des 3 "langages officiels" avec C ++ et Java. Officiel signifie ici que les Googleurs sont autorisés à déployer ces langues sur les services de production. (En interne, les utilisateurs de Google utilisent de nombreuses technologies, notamment PHP, C #, Ruby et Perl). Python est bien adapté au processus d'ingénierie chez Google. Le projet typique chez Google a une petite équipe (3 personnes) et une courte durée (3 mois).


Sans oublier que Guido van Rossum le créateur de Python a travaillé pour Google de 2005 à 2012;)


J'ai également trouvé cette citation mais je ne peux pas la vérifier:

"Python a été une partie importante de Google depuis le début et le restera au fur et à mesure que le système se développe et évolue. Aujourd'hui, des dizaines d'ingénieurs de Google utilisent Python, et nous recherchons davantage de personnes ayant des compétences dans cette langue"
- Peter Norvig, Directeur de la qualité de recherche chez Google

Felix Kling
la source
Alors, est-ce une question de goût ou un avantage concurrentiel?
Andrei Ciobanu
4
@nomemory: Peut-être les deux? Cela correspond au processus d'ingénierie (goût) et, de ce fait, pourrait leur donner un avantage s'ils peuvent terminer leurs produits plus tôt.
Felix Kling
1
Des dizaines d'ingénieurs utilisent Python? Pour une entreprise aussi grande que Google, ce n'est pas un cas convaincant.
Jason Baker
28

Je lisais sur Unladen-Swallow , un projet qui vise à améliorer les performances de CPython. En parcourant leur forum de discussion, je suis tombé sur cette discussion , où Collin Winter (employé de Google et développeur principal de Python) répond à l' affirmation selon laquelle les employés de Google sont découragés d'utiliser Python pour de nouveaux projets :

Eh bien, le simple bon sens va limiter l'applicabilité de Python lorsqu'il fonctionne à l'échelle de Google: ce n'est pas aussi rapide que Java ou C ++, le threading est nul, l'utilisation de la mémoire est plus élevée, etc. L'une des contraintes de conception auxquelles nous sommes confrontés lors de la conception d'un nouveau système est, "Que se passe-t-il lorsque la charge augmente de 10x ou 100x? Que se passe-t-il si toute la planète pense que votre nouveau service est génial?" Toute technologie qui rend plus difficile la satisfaction de cette contrainte - et je pense que Python appartient à cette catégorie - devraitêtre découragé si elle n'a pas un argumentaire très solide en sa faveur sur d'autres mérites. Vous devez équilibrer les forces de Python avec ses faiblesses: vos ingénieurs peuvent être plus productifs en utilisant Python, mais s'ils doivent contourner davantage de limitations de performances / d'évolutivité au niveau de la plate-forme à mesure que le volume augmente, êtes-vous en tête? etc.

datentyp
la source
20

Si vous souscrivez à l' idée de Paul Graham selon laquelle la concision == puissance (c'est-à-dire si je peux écrire du code en langage X en 10 lignes pour accomplir ce que vous avez pris 100 lignes en langage Y, mon langage est plus puissant)

De nos jours, le matériel est bon marché, la viande est chère . Je sais que je peux écrire beaucoup plus, plus vite, mieux ET plus clairement en Python que je ne le peux dans d'autres langues, simplement parce que les piles ont tendance à être incluses. Bien sûr, cela peut être plus lent, mais allez-vous vraiment remarquer la différence entre 0,05 seconde et 0,005 seconde?

Dans un exemple plus réel, si les développeurs de Google écrivent un programme en Python où ils n'ont jamais à se soucier du ramasse-miettes, et que la société X écrit un programme en C ++ et qu'ils passent 10% de leur temps à traquer les bogues liés à l'allocation de mémoire, devinez qui a fait plus vite - même si la boutique C ++ parvient à écrire le reste de leur code tout aussi rapidement.

Alors oui, je dirais que c'est un avantage concurrentiel de coder en Python.

Wayne Werner
la source
2
Refonte du site maudit! Eh bien, il a un autre lien, alors voilà.
Wayne Werner
11
«allez-vous vraiment remarquer la différence entre 0,5 seconde et 0,005 seconde? Vous ne travaillez pas sur Google Core Search, YouTube ou Gmail, n'est-ce pas?
jwg
5
Le matériel n'est pas bon marché lorsque vous en avez besoin autant que Google.
NGRhodes
5
Le grand avantage de Python est que lorsque vous avez une différence de performance significative (par exemple ~ 495 ms), vous pouvez brancher du code C / C ++. Python vous permet de développer rapidement et d' optimiser efficacement.
Trevor
3
La différence entre 0,5 seconde et 0,005 seconde est que l'un est perceptible et l'autre non.
Charlie Schliesser