Duże użycie Pythona przez Google, czy to tylko kwestia gustu, czy daje im przewagę konkurencyjną?
Duże użycie Pythona przez Google, czy to tylko kwestia gustu, czy daje im przewagę konkurencyjną?
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).
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
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ą.