Alex Martelli wkrótce przyjdzie po zaakceptowaną odpowiedź, ....
ChristopheD
4
Właściwie myślę, że na tę odpowiedź można odpowiedzieć obiektywnie (gdzieś musi być jakieś oświadczenie Google, dlaczego z niej korzystają;))
Felix Kling
15
@nomemory, „heavy” jest tutaj całkiem poprawnym przymiotnikiem (oczywiście musisz być w stanie spojrzeć na naszą bazę kodów w celu potwierdzenia - ile Python vs Java vs C ++ itd.) - ale jestem w stanie na to spojrzeć i przyczyniają się do tego, głównie Python, większość każdego dnia ;-). Pytanie nie dotyczy całej branży IT - dotyczy konkretnie Google, firmy zatrudniającej 20 000 pracowników (w tym nie-programistów), gdzie niektórzy z nas lepiej „mają ogólny pogląd”, odkąd formułują ten pogląd i działają na podstawie to podstawowe elementy naszej pracy ;-). Głosuję na ponowne otwarcie.
Alex Martelli
7
@nomemory, zawsze chętni są rekruterzy Oracle podczas konferencji w Pythonie, więc z zaskoczeniem dowiem się, że Python jest „nieistniejący” w swojej bazie kodów (jeśli tak, to ci rekruterzy kłamią, a także marnują swój czas i Pythonistów) ;-). A zresztą, jak naprawdę konkurują Oracle i Google? -)
Alex Martelli
Odpowiedzi:
286
Naprawdę nie mogę udzielić ostatecznej odpowiedzi, ponieważ zanim przeprowadziłem wywiad w Google w 2004 roku, Python był już widoczny w Google.
Rzeczywiście, istnieje jedno pozornie atrakcyjne wyjaśnienie, którego zdecydowanie mogę zaprzeczyć: nie chodzi o to, że Google używa Pythona, ponieważ zatrudnia tak wielu wybitnych Pythonistów - raczej większość „wybitnych pracowników Google” przyłączyła się do Google, przynajmniej częściowo, ponieważ wiedzieliśmy o znaczeniu Pythona tam (możliwe wyjątki to Peter Norvig i Jeremy Hylton, ale historycznie wybór Pythona przez Google wyprzedził nawet je).
Właśnie dlatego po raz pierwszy się zainteresowałem (mój wydawca poinformował mnie o dużej liczbie egzemplarzy mojej książki, którą kupował Google - na początku myślałem o tym jako dobrej okazji do sprzedaży mojej niezależnej usługi konsultingowej ...; - ), jak później udało mi się przekonać Guido, by do nas dołączył, i, jak sądzę, część motywacji do takich Pythonistów, jak Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...
Wszystko zaczęło się, jak sądzę, ponieważ najwcześniejsi Googlersi (Sergey, Larry, Craig, ...) podjęli dobrą decyzję inżynierską: „Python, gdzie możemy, C ++, gdzie musimy” - użyli (podzbiór) C ++ dla części stosu oprogramowania, w których kluczowe znaczenie miały bardzo małe opóźnienia i / lub ścisła kontrola pamięci, oraz Python, umożliwiający szybsze dostarczanie i obsługę programów dla innych części. W późnych latach 90. wybór drugiej roli był zasadniczo między Pythonem a Perlem: inne języki skryptowe były albo niedojrzałe (na przykład nie sądzę, że Ruby już tu był), albo miały inne problemy i ograniczenia. Perl był bardziej dojrzały (szczególnie pod względem ekosystemu dostępnych dodatków za pośrednictwem CPAN), ale Python został uznany za bardziej czytelny i łatwy w utrzymaniu, a interfejs do bibliotek C ++ (przez SWIG) był łatwiejszy.
Java pojawiła się później, obejmując niszę pośrednią - a ostatnio oczywiście opracowano Go (choć nie sądzę, że jest jeszcze dużo pracy produkcyjnej, ponieważ wciąż ewoluuje i dojrzewa). Niektóre wyspecjalizowane języki, takie jak sawzall, są również mieszane do bardzo specyficznych zadań, i oczywiście Javascript jest bardzo ważny dla pracy po stronie przeglądarki.
Inne języki, w tym te, o których wspominał Greg w 2006 roku, są albo „trochę przypadkowe”, albo używane do innych specyficznych zadań (np. Cel C dla klientów na iPhone'ach lub komputerach Mac) - np. Kiedy Google zatrudniło swoich pierwszych administratorów systemu , ci pracownicy nieuchronnie przybyli z bardzo dobrą znajomością Perla i Basha i często używali jednego z tych języków do opracowania złożonego systemu wewnętrznego; często zdarzało się przekodowywanie tych w Pythonie (w celu łatwiejszego wdrożenia i konserwacji). Inne (takie jak C #) mogły być tymczasowo w miksie z powodu przejęć, ale ponownie, ponowne kodowanie w jednym z „głównych języków Google” ma zawsze dość wysoki priorytet (w przypadku C #, przekodowywanie zwykle odbywa się głównie w Javie, ponieważ oba języki dotyczą podobnych obszarów pod względem poziomów abstrakcji).
@Alex prawdopodobnie nie rozumiem poprawnie, ale wygląda na to, że Google chciał, aby ich środowisko było otwarte dla inżynierów (zwłaszcza naukowców) tych, którzy spędzili lata na uniwersytecie i wyszli tylko C lub C ++ na ręce (ponieważ wszyscy zaczynający od tych języków i większość z nich skończyli też z tym). Tutaj Python jest silnym konkurentem, zapewnia interfejs do ogromnej biblioteki C / C ++.
Niesamowite spostrzeżenia !! Może pomóc potencjalnym pracownikom Google
kmario23,
3
Jednym z ciekawostek, które zebrałem po przeczytaniu doskonałej książki Levy'ego „In the Plex”, jest sposób, w jaki Python dostał się do Google'a (zanim został nazwany Google - wtedy był „backrub”). Larry Page napisał „pająka” do przeglądania stron internetowych w nowej wówczas wersji Java 1.0 beta i był tak zepsuty, że jego współlokator akademika pomógł mu, przepisując go w bardziej zdecydowanym, solidnym i produktywnym języku ... Python. Zabawne jest myśleć, że bez tego „pająka” Google nigdy by nie powstał ...
Alex Martelli
34
Nie przeczytałem całego artykułu i nie wiem, jak reprezentatywny, ale może to odpowiada na twoje pytanie: Python w Google .
Ok, czytam większość, niestety nie daje to zbyt wiele wglądu, ale myślę, że wciąż jest to interesujący artykuł. Być może najważniejsze:
W Google Python jest jednym z 3 „języków urzędowych”, obok C ++ i Java. Oficjalna oznacza tutaj, że pracownicy Google mogą wdrażać te języki w usługach produkcyjnych. (Wewnętrznie ludzie Google używają wielu technologii, w tym PHP, C #, Ruby i Perl). Python jest dobrze dostosowany do procesu inżynieryjnego w Google. Typowy projekt w Google ma mały zespół (3 osoby) i krótki czas trwania (3 miesiące).
Nie można zapominać, że Guido van Rossum, twórca Pythona, pracował dla Google w latach 2005-2012;)
Znalazłem również ten cytat, ale nie mogę go zweryfikować:
„Python był ważną częścią Google od samego początku i pozostaje taki, jak system się rozwija i ewoluuje. Dzisiaj dziesiątki inżynierów Google używa Pythona, a my szukamy więcej osób z umiejętnościami w tym języku”
- Peter Norvig, Dyrektor jakości wyszukiwania w Google
@nomemory: Może oba? Jest to zgodne z procesem inżynieryjnym (smakiem) iz tego powodu może dać im przewagę, jeśli będą mogli wcześniej skończyć swoje produkty.
Felix Kling
1
Dziesiątki inżynierów używają Pythona? Dla firmy tak dużej jak Google nie jest to przekonujący przypadek.
Jason Baker,
28
Czytałem o Unladen-Swallow , projekcie mającym na celu poprawę wydajności CPython. Przeglądając ich forum dyskusyjne natknąłem się na tę dyskusję , w której Collin Winter (pracownik Google i główny programista Python) odpowiada na twierdzenie, że pracownicy Google są zniechęcani do używania Pythona do nowych projektów :
Cóż, prosty zdrowy rozsądek ograniczy możliwość zastosowania Pythona podczas pracy w skali Google: nie jest tak szybki jak Java czy C ++, wątki są do bani, zużycie pamięci jest większe itp. Jednym z ograniczeń projektowych, które napotykamy przy projektowaniu nowego systemu, jest: „co się stanie, gdy ładunek wzrośnie 10-krotnie lub 100-krotnie? Co się stanie, jeśli cała planeta uzna, że nowa usługa jest niesamowita?” Każda technologia, która utrudnia spełnienie tego ograniczenia - i myślę, że Python należy do tej kategorii - powinnazniechęcaj się, jeśli nie ma bardzo mocnego argumentu przemawiającego na korzyść innych zalet. Musisz zrównoważyć mocne strony Pythona z jego słabościami: Twoi inżynierowie mogą być bardziej produktywni przy użyciu Pythona, ale jeśli będą musieli obejść więcej ograniczeń wydajności / skalowania na poziomie platformy wraz ze wzrostem głośności, czy wyjdziesz na przód? itp.
Jeśli zgadzasz się z pomysłem Paula Grahama, że zwięzłość == moc (tj. Jeśli mogę napisać kod w języku X w 10 wierszach, aby osiągnąć to, co wziąłeś 100 wierszy języka Y, mój język jest mocniejszy)
W dzisiejszych czasach sprzęt jest tani, sprzęt mięsny jest drogi . Wiem, że mogę napisać o wiele więcej, szybciej, lepiej ORAZ jaśniej w Pythonie niż w innych językach, po prostu dlatego, że zwykle zawierają baterie. Jasne, może być wolniejszy, ale czy naprawdę zauważysz różnicę między 0,05 sekundy a 0,0005 sekundy?
W bardziej realnym przykładzie, jeśli programiści Google piszą program w Pythonie, w którym nigdy nie muszą się martwić o wyrzucanie elementów bezużytecznych, a Firma X pisze program w C ++ i spędzają 10% czasu na śledzeniu błędów związanych z alokacją pamięci, zgadnij, kto zrobił to szybciej - nawet jeśli sklep C ++ potrafi równie szybko napisać resztę kodu.
Tak, powiedziałbym, że kodowanie w Pythonie jest przewagą konkurencyjną.
Przeklęte przeprojektowanie strony! Cóż, ma alternatywny link, więc proszę bardzo.
Wayne Werner
11
„czy naprawdę zauważysz różnicę między 0,5 sekundy a 0,005 sekundy?” Nie pracujesz w wyszukiwarce Google, YouTube ani Gmailu, prawda?
jwg
5
Sprzęt nie jest tani, gdy potrzebujesz tyle co Google.
NGRhodes
5
Wspaniałą rzeczą w Pythonie jest to, że kiedy masz znaczną różnicę wydajności (np. ~ 495ms), możesz podłączyć kod C / C ++. Python pozwala szybko się rozwijać i efektywnie optymalizować.
Trevor
3
Różnica między 0,5 sekundy a 0,005 sekundy polega na tym, że jedna jest zauważalna, a druga nie.
Odpowiedzi:
Naprawdę nie mogę udzielić ostatecznej odpowiedzi, ponieważ zanim przeprowadziłem wywiad w Google w 2004 roku, Python był już widoczny w Google.
Rzeczywiście, istnieje jedno pozornie atrakcyjne wyjaśnienie, którego zdecydowanie mogę zaprzeczyć: nie chodzi o to, że Google używa Pythona, ponieważ zatrudnia tak wielu wybitnych Pythonistów - raczej większość „wybitnych pracowników Google” przyłączyła się do Google, przynajmniej częściowo, ponieważ wiedzieliśmy o znaczeniu Pythona tam (możliwe wyjątki to Peter Norvig i Jeremy Hylton, ale historycznie wybór Pythona przez Google wyprzedził nawet je).
Właśnie dlatego po raz pierwszy się zainteresowałem (mój wydawca poinformował mnie o dużej liczbie egzemplarzy mojej książki, którą kupował Google - na początku myślałem o tym jako dobrej okazji do sprzedaży mojej niezależnej usługi konsultingowej ...; - ), jak później udało mi się przekonać Guido, by do nas dołączył, i, jak sądzę, część motywacji do takich Pythonistów, jak Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...
Wszystko zaczęło się, jak sądzę, ponieważ najwcześniejsi Googlersi (Sergey, Larry, Craig, ...) podjęli dobrą decyzję inżynierską: „Python, gdzie możemy, C ++, gdzie musimy” - użyli (podzbiór) C ++ dla części stosu oprogramowania, w których kluczowe znaczenie miały bardzo małe opóźnienia i / lub ścisła kontrola pamięci, oraz Python, umożliwiający szybsze dostarczanie i obsługę programów dla innych części. W późnych latach 90. wybór drugiej roli był zasadniczo między Pythonem a Perlem: inne języki skryptowe były albo niedojrzałe (na przykład nie sądzę, że Ruby już tu był), albo miały inne problemy i ograniczenia. Perl był bardziej dojrzały (szczególnie pod względem ekosystemu dostępnych dodatków za pośrednictwem CPAN), ale Python został uznany za bardziej czytelny i łatwy w utrzymaniu, a interfejs do bibliotek C ++ (przez SWIG) był łatwiejszy.
Java pojawiła się później, obejmując niszę pośrednią - a ostatnio oczywiście opracowano Go (choć nie sądzę, że jest jeszcze dużo pracy produkcyjnej, ponieważ wciąż ewoluuje i dojrzewa). Niektóre wyspecjalizowane języki, takie jak sawzall, są również mieszane do bardzo specyficznych zadań, i oczywiście Javascript jest bardzo ważny dla pracy po stronie przeglądarki.
Inne języki, w tym te, o których wspominał Greg w 2006 roku, są albo „trochę przypadkowe”, albo używane do innych specyficznych zadań (np. Cel C dla klientów na iPhone'ach lub komputerach Mac) - np. Kiedy Google zatrudniło swoich pierwszych administratorów systemu , ci pracownicy nieuchronnie przybyli z bardzo dobrą znajomością Perla i Basha i często używali jednego z tych języków do opracowania złożonego systemu wewnętrznego; często zdarzało się przekodowywanie tych w Pythonie (w celu łatwiejszego wdrożenia i konserwacji). Inne (takie jak C #) mogły być tymczasowo w miksie z powodu przejęć, ale ponownie, ponowne kodowanie w jednym z „głównych języków Google” ma zawsze dość wysoki priorytet (w przypadku C #, przekodowywanie zwykle odbywa się głównie w Javie, ponieważ oba języki dotyczą podobnych obszarów pod względem poziomów abstrakcji).
źródło
Nie przeczytałem całego artykułu i nie wiem, jak reprezentatywny, ale może to odpowiada na twoje pytanie: Python w Google .
Ok, czytam większość, niestety nie daje to zbyt wiele wglądu, ale myślę, że wciąż jest to interesujący artykuł. Być może najważniejsze:
Nie można zapominać, że Guido van Rossum, twórca Pythona, pracował dla Google w latach 2005-2012;)
Znalazłem również ten cytat, ale nie mogę go zweryfikować:
źródło
Czytałem o Unladen-Swallow , projekcie mającym na celu poprawę wydajności CPython. Przeglądając ich forum dyskusyjne natknąłem się na tę dyskusję , w której Collin Winter (pracownik Google i główny programista Python) odpowiada na twierdzenie, że pracownicy Google są zniechęcani do używania Pythona do nowych projektów :
źródło
Jeśli zgadzasz się z pomysłem Paula Grahama, że zwięzłość == moc (tj. Jeśli mogę napisać kod w języku X w 10 wierszach, aby osiągnąć to, co wziąłeś 100 wierszy języka Y, mój język jest mocniejszy)
W dzisiejszych czasach sprzęt jest tani, sprzęt mięsny jest drogi . Wiem, że mogę napisać o wiele więcej, szybciej, lepiej ORAZ jaśniej w Pythonie niż w innych językach, po prostu dlatego, że zwykle zawierają baterie. Jasne, może być wolniejszy, ale czy naprawdę zauważysz różnicę między 0,05 sekundy a 0,0005 sekundy?
W bardziej realnym przykładzie, jeśli programiści Google piszą program w Pythonie, w którym nigdy nie muszą się martwić o wyrzucanie elementów bezużytecznych, a Firma X pisze program w C ++ i spędzają 10% czasu na śledzeniu błędów związanych z alokacją pamięci, zgadnij, kto zrobił to szybciej - nawet jeśli sklep C ++ potrafi równie szybko napisać resztę kodu.
Tak, powiedziałbym, że kodowanie w Pythonie jest przewagą konkurencyjną.
źródło