L'utilisation intensive de Python par Google, est-ce juste une question de goût ou leur donne-t-il un avantage concurrentiel?
L'utilisation intensive de Python par Google, est-ce juste une question de goût ou leur donne-t-il un avantage concurrentiel?
Réponses:
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).
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
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.
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.