Starke Nutzung von Python bei Google [geschlossen]

185

Googles starke Nutzung von Python, ist es nur Geschmackssache oder verschafft es ihnen einen Wettbewerbsvorteil?

Ron Chan
quelle
21
Dies muss Community-Wiki sein
AutomatedTester
72
Alex Martelli kommt sehr bald für die akzeptierte Antwort an, ....
ChristopheD
4
Eigentlich denke ich, dass diese Antwort objektiv beantwortet werden könnte (es muss irgendwo eine Erklärung von Google geben, warum sie sie verwenden;))
Felix Kling
15
@nomemory, "schwer" ist hier ein ziemlich korrektes Adjektiv (natürlich müssten Sie in der Lage sein, unsere Codebasis zur Bestätigung einzusehen - wie viel Python vs Java vs C ++ usw. - aber ich kann es mir ansehen und dazu beitragen, meistens Python, fast jeden Tag ;-). Und die Frage betrifft nicht die gesamte IT-Branche - sie betrifft speziell Google, ein Unternehmen mit 20.000 Mitarbeitern (einschließlich Nicht-Programmierern), bei dem einige von uns besser "eine Gesamtansicht" haben sollten, seit sie diese Ansicht formuliert und danach gehandelt haben es sind Kernteile unserer Arbeit ;-). Also stimme ich für die Wiedereröffnung.
Alex Martelli
7
@nomemory, es gibt immer begeisterte Oracle-Personalvermittler bei Python-Konferenzen, daher wäre ich überrascht zu erfahren, dass Python in ihrer Codebasis "nicht vorhanden" ist (wenn ja, lügen diese Personalvermittler und verschwenden ihre eigene Zeit und die der Pythonisten) ;-). Und überhaupt, wie konkurrieren Oracle und Google wirklich? -)
Alex Martelli

Antworten:

286

Ich kann keine endgültige Antwort geben, da Python zum Zeitpunkt meines Interviews bei Google im Jahr 2004 bereits bei Google eine herausragende Rolle spielte.

In der Tat gibt es eine anscheinend attraktive Erklärung, die ich definitiv leugnen kann: Es ist nicht so, dass Google Python verwendet, weil es so viele prominente Pythonisten beschäftigt - vielmehr haben sich die meisten "prominenten Pythonista" -Gogler Google angeschlossen, zumindest teilweise, weil wir über Pythons Bekanntheit Bescheid wussten dort (mögliche Ausnahmen sind Peter Norvig und Jeremy Hylton, aber historisch gesehen war Googles Wahl von Python sogar älter als sie).

Das ist definitiv der Grund, warum ich mich zum ersten Mal dafür interessierte (mein Verlag informierte mich über die große Anzahl von Exemplaren meines Buches, die Google gekauft hatte - zunächst sah ich es als eine gute Gelegenheit, meinen freiberuflichen Beratungsdienst zu verkaufen ...; - ), wie ich später Guido überzeugen konnte, sich uns anzuschließen, und ich glaube, ein Teil der Motivation für Pythonisten wie Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...

Ich glaube, alles hat begonnen, weil die frühesten Googler (Sergey, Larry, Craig, ...) eine gute technische Entscheidung getroffen haben: "Python, wo wir können, C ++, wo wir müssen" - sie verwendeten (eine Teilmenge von) C ++ für die Teile des Software-Stacks, bei denen eine sehr geringe Latenz und / oder eine strenge Kontrolle des Speichers von entscheidender Bedeutung waren, und Python für andere Teile, das eine schnellere Bereitstellung und Wartung von Programmen ermöglicht. Zu der Zeit, Ende der 90er Jahre, lag die Wahl für die letztere Rolle im Wesentlichen zwischen Python und Perl: Andere Skriptsprachen waren entweder unreif (ich glaube, Ruby gab es zum Beispiel noch nicht) oder hatten andere Probleme und Einschränkungen. Perl war ausgereifter (insbesondere im Hinblick auf das Ökosystem der verfügbaren Add-Ons über CPAN), aber Python wurde als lesbarer und wartbarer angesehen, und die Anbindung an C ++ - Bibliotheken (über SWIG) war einfacher.

Java kam später herein und deckte eine Zwischennische ab - und in jüngerer Zeit wurde natürlich Go entwickelt (obwohl ich glaube, dass es noch nicht viel Produktionsarbeit gibt, da es sich noch weiterentwickelt und reift). Einige Spezialsprachen wie Sawzall sind auch für ganz bestimmte Aufgaben im Mix, und natürlich ist Javascript für die Arbeit auf der Browserseite sehr wichtig.

Andere Sprachen, einschließlich derjenigen, die Greg bereits im Jahr 2006 erwähnt hat, sind entweder "zufällig" oder werden für andere spezifische Aufgaben verwendet (z. B. Ziel C für Kunden auf iPhones oder Macs) - z. B. als Google seine ersten Systemadministratoren anstellte Diese Mitarbeiter beherrschten Perl und Bash unweigerlich sehr gut und verwendeten häufig eine dieser Sprachen, um ein komplexes internes System zu entwickeln. Das Neukodieren in Python (zur einfacheren Bereitstellung und Wartbarkeit) wurde häufig durchgeführt. Andere (wie C #) waren möglicherweise aufgrund von Akquisitionen vorübergehend im Mix, aber auch hier hat die Neukodierung in einer der "Hauptsprachen von Google" immer eine ziemlich hohe Priorität (in C # würde die Neukodierung normalerweise hauptsächlich in Java erfolgen). da die beiden Sprachen ähnliche Bereiche in Bezug auf die Abstraktionsebenen ansprechen).

Alex Martelli
quelle
@Alex wahrscheinlich habe ich nicht richtig verstanden, aber es scheint, dass Google wollte, dass ihre Umgebung für Ingenieure (insbesondere Forscher) offen ist, die Jahre an der Universität verbracht haben und nur C oder C ++ auf Händen herausgebracht haben (da jeder, der mit diesen Sprachen begann und die meisten von ihnen endeten auch damit). Hier ist Python ein starker Konkurrent, der eine Schnittstelle zu einer riesigen Bibliothek von C / C ++ bietet.
Ramiz Uddin
Tolle Einblicke !! Kann potenziellen Googlern helfen
kmario23
3
Ein Leckerbissen, das ich beim Lesen von Levys ausgezeichnetem Buch "In the 'Plex" gesammelt habe, ist, wie Python zu Google kam (bevor es Google hieß - es war dann "Backrub"). Larry Page hatte in der damals brandneuen Java 1.0-Beta eine Web-Scraping-Spinne geschrieben, die so kaputt war, dass sein Mitbewohner im Wohnheim ihm half, indem er sie in einer ruhigeren, solideren und produktiveren Sprache umschrieb ... Python. Es ist komisch zu denken, dass Google ohne diese "Spinne" niemals entstanden wäre ...
Alex Martelli
34

Ich habe nicht den ganzen Artikel gelesen und weiß nicht, wie repräsentativ er ist, aber vielleicht beantwortet dies Ihre Frage: Python bei Google .

Ok, ich habe das meiste davon gelesen, leider gibt es nicht so viel Einblick, aber ich denke, es ist immer noch ein interessanter Artikel. Vielleicht am wichtigsten:

Bei Google ist Python neben C ++ und Java eine der drei "offiziellen Sprachen". Offiziell bedeutet hier, dass Googler diese Sprachen für Produktionsdienste bereitstellen dürfen. (Intern verwenden Google-Nutzer viele Technologien, darunter PHP, C #, Ruby und Perl.) Python eignet sich gut für den Engineering-Prozess bei Google. Das typische Projekt bei Google hat ein kleines Team (3 Personen) und eine kurze Dauer (3 Monate).


Nicht zu vergessen, dass Guido van Rossum, der Schöpfer von Python, von 2005 bis 2012 für Google gearbeitet hat;)


Ich habe dieses Zitat auch gefunden, kann es aber nicht verifizieren:

"Python war von Anfang an ein wichtiger Bestandteil von Google und bleibt es auch, wenn das System wächst und sich weiterentwickelt. Heute verwenden Dutzende von Google-Ingenieuren Python, und wir suchen nach mehr Personen mit Kenntnissen in dieser Sprache"
- Peter Norvig, Director of Search Quality bei Google

Felix Kling
quelle
Ist es also Geschmackssache oder Wettbewerbsvorteil?
Andrei Ciobanu
4
@nomemory: Vielleicht beides? Es passt zum technischen Prozess (Geschmack) und kann ihnen daher einen Vorteil verschaffen, wenn sie ihre Produkte früher fertigstellen können.
Felix Kling
1
Dutzende Ingenieure verwenden Python? Für ein so großes Unternehmen wie Google ist dies kaum ein überzeugender Fall.
Jason Baker
28

Ich habe über Unladen-Swallow gelesen , ein Projekt, das darauf abzielt, die Leistung von CPython zu verbessern. Beim Durchsuchen des Diskussionsforums bin ich auf diese Diskussion gestoßen , in der Collin Winter (Google-Mitarbeiter und Python-Kernentwickler) auf die Behauptung antwortet , dass Google-Mitarbeiter davon abgehalten werden, Python für neue Projekte zu verwenden :

Nun, einfacher gesunder Menschenverstand wird die Anwendbarkeit von Python einschränken, wenn er auf Googles Skala arbeitet: Es ist nicht so schnell wie Java oder C ++, Threading ist zum Kotzen, die Speichernutzung ist höher usw. Eine der Designbeschränkungen, mit denen wir beim Entwerfen eines neuen Systems konfrontiert sind, ist: "Was passiert, wenn die Last um das 10- oder 100-fache steigt? Was passiert, wenn der ganze Planet Ihren neuen Service für fantastisch hält?" Jede Technologie, die es schwieriger macht, diese Einschränkung zu erfüllen - und ich denke, Python fällt in diese Kategorie - sollteSeien Sie entmutigt, wenn es in anderen Punkten keine sehr starke Argumentation zu seinen Gunsten gibt. Sie müssen die Stärken von Python mit den Schwächen in Einklang bringen: Ihre Ingenieure sind möglicherweise produktiver mit Python, aber wenn sie mit zunehmendem Volumen mehr Einschränkungen hinsichtlich Leistung / Skalierung auf Plattformebene umgehen müssen, haben Sie dann die Nase vorn? etc.

Datentyp
quelle
20

Wenn Sie sich Paul Grahams Idee anschließen, dass Prägnanz == Macht ist (dh wenn ich Code in Sprache X in 10 Zeilen schreiben kann, um das zu erreichen, was Sie in 100 Zeilen Sprache Y erreicht haben, ist meine Sprache leistungsfähiger).

In diesen Tagen Hardware ist billig, meatware teuer ist . Ich weiß, dass ich in Python viel mehr, schneller, besser UND klarer schreiben kann als in anderen Sprachen, einfach weil die Batterien in der Regel enthalten sind. Sicher, es kann langsamer sein, aber werden Sie wirklich den Unterschied zwischen 0,05 Sekunden und 0,0005 Sekunden bemerken?

In einem realistischeren Beispiel, wenn Google-Entwickler ein Programm in Python schreiben, in dem sie sich nie um die Speicherbereinigung kümmern müssen, und Unternehmen X ein Programm in C ++ schreibt und 10% ihrer Zeit damit verbringt, Fehler im Zusammenhang mit der Speicherzuweisung aufzuspüren, Ratet mal, wer schneller gemacht hat - auch wenn der C ++ - Shop es schafft, den Rest seines Codes genauso schnell zu schreiben.

Also ja, ich würde sagen, es ist ein Wettbewerbsvorteil, in Python zu programmieren.

Wayne Werner
quelle
2
Verfluchte Neugestaltung der Website! Nun, er hat einen alternativen Link, also los geht's.
Wayne Werner
11
"Wirst du wirklich den Unterschied zwischen 0,5 Sekunden und 0,005 Sekunden bemerken?" Sie arbeiten nicht an der Google-Kernsuche, YouTube oder Google Mail, oder?
JWG
5
Hardware ist nicht billig, wenn Sie so viel wie Google benötigen.
NGRhodes
5
Das Tolle an Python ist, dass Sie bei einem signifikanten Leistungsunterschied (z. B. ~ 495 ms) C / C ++ - Code einstecken können. Mit Python können Sie schnell entwickeln und effizient optimieren.
Trevor
3
Der Unterschied zwischen 0,5 Sekunden und 0,005 Sekunden besteht darin, dass einer spürbar ist und der andere nicht.
Charlie Schliesser