Google'da Python'un yoğun kullanımı [kapalı]


185

Google'ın Python'u yoğun kullanımı, sadece bir zevk meselesi mi yoksa onlara rekabet avantajı sağlıyor mu?


21
Bu topluluk wiki olmalı
AutomatedTester

72
Alex Martelli yakında kabul edilen cevap için gelecek, ....
ChristopheD

4
Aslında bu cevabın objektif olarak cevaplanabileceğini düşünüyorum (Google tarafından neden kullandıkları bir açıklama olmalı)))
Felix Kling

15
@nomemory, "ağır" oldukça doğru bir sıfat burada (tabii ki onay için kod temeli bakmak gerekiyor olurdu - nasıl C ++ vb vs Java vs çok Python - ama ben değilim bakmak mümkün , ve çoğunlukla Python, çoğu gün ;-) katkıda bulunun. Ve soru IT sektöründe tümünde değil -, bazılarımız vardı (non-programcılar dahil) 20.000 çalışanı şirketi Google'da özellikle var daha iyi , "genel bir görünüme sahip" olduğu görüşünü oluşturan ve üzerine etki eden bu yana işimizin temel parçalarıdır ;-). Bu yüzden, yeniden açmak için oy kullanıyorum.
Alex Martelli

7
@nomemory, Python konferanslarında her zaman hevesli Oracle işe alım görevlileri var, bu yüzden Python'un kod tabanlarında "yok" olduğunu öğrenmek beni şaşırttı (eğer öyleyse, bu işe alımcılar yalan söylüyor, kendi zamanlarını ve Pythonista'larını boşa harcıyorlar) ;-). Her neyse, Oracle ve Google gerçekten nasıl rekabet ediyor? -)
Alex Martelli

Yanıtlar:


286

Kesin bir cevap veremiyorum, çünkü 2004'te Google'da röportaj yaptığım zaman Python zaten Google'da öne çıktı.

Gerçekten, kesinlikle inkar edebileceğim görünüşte çekici bir açıklama var: Google'ın Python'u kullanması değil, çünkü pek çok tanınmış Pythonista kullanıyor - daha ziyade, en "kısmen tanınmış Pythonista" googlers Google'a katıldı, en azından kısmen, Python'un önemini biliyorduk çünkü orada (olası istisnalar Peter Norvig ve Jeremy Hylton'u içerir, ancak tarihsel olarak Google'ın Python'u seçmesi bile bunları önceden yapmıştı).

Bu yüzden ilk kez ilgileniyorum (yayıncım, kitabımın Google'ın satın almakta olduğu çok sayıda kopyasını bana bildirin - ilk başta, serbest danışmanlık hizmetimi satmak için iyi bir fırsat olarak düşündüm ...; - ), daha sonra Guido'yu bize katılmaya nasıl ikna edebildim ve inanıyorum ki Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin gibi Pythonistaların motivasyonunun bir parçası ...

Her şey başladı, inanıyorum, çünkü en eski Google çalışanları (Sergey, Larry, Craig, ...) iyi bir mühendislik kararı verdi: "Yapabileceğimiz Python, yapmamız gereken C ++" - kullandılar (bir alt küme) Yazılım yığınının çok düşük gecikme ve / veya bellek sıkı kontrolünün önemli olduğu parçalar için C ++ ve Python, diğer parçalar için programların daha hızlı teslimatına ve bakımına izin verir. O zamanlar, 90'ların sonlarında, ikinci rol için seçim Python ve Perl arasındaydı: diğer kodlama dilleri ya olgunlaşmamıştı (Ruby'nin henüz etrafta olduğunu sanmıyorum) ya da başka sorunlar ve sınırlamalar vardı. Perl daha olgunlaşmıştı (özellikle CPAN aracılığıyla mevcut eklentilerin ekosistemi açısından), ancak Python'un daha okunabilir ve bakım yapılabilir olduğu düşünülüyordu ve C ++ kütüphanelerine (SWIG aracılığıyla) arayüz kurmak daha kolaydı.

Java daha sonra, ara bir niş kapsayan - ve daha yakın zamanda elbette Go geliştirildi (hala gelişmekte ve olgunlaştığı için henüz çok fazla üretim çalışması olduğuna inanmıyorum). Sawzall gibi bazı özel diller de çok özel görevler için karışıktır ve elbette Javascript tarayıcı tarafı çalışmaları için çok önemlidir.

Greg'in '06'da bahsettiği diller de dahil olmak üzere diğer diller ya "kazara" tür ya da diğer belirli görevler için kullanılır (örneğin, iPhone'larda veya Mac'lerde istemciler için Amaç C) - örneğin, Google ilk sistem yöneticilerini işe aldığında bu çalışanlar kaçınılmaz olarak çok güçlü Perl ve Bash ustalığı ile geldiler ve genellikle bu dillerden herhangi birini karmaşık bir iç sistem geliştirmek için kullandılar; Python'dakilerin yeniden kodlanması (daha kolay dağıtım ve bakım için) çoğu zaman oldu. Diğerleri (C # gibi) satın almalar nedeniyle geçici olarak karışımda olabilir, ancak yine de, "ana Google dillerinden" herhangi birinde yeniden kodlama her zaman oldukça yüksek bir önceliğe sahiptir (C # durumunda, kodlama genellikle Java'da olur, iki dil, soyutlama düzeyleri bakımından benzer alanlara hitap ettiği için).


@Alex muhtemelen doğru anlamadım ama google çevrelerini mühendisler (özellikle araştırmacılar) için üniversitede yıl geçiren ve ellerinde sadece C veya C ++ çıktı (herkes bu dillerle başlayan ve çoğu sona erdiğinde) onunla da). Burada, python güçlü yarışmacı büyük C / C ++ lib için bir arayüz sağlar.
Ramiz Uddin


Harika anlayışlar !! Potansiyel Google çalışanlarına yardımcı olabilir
kmario23 22:14

3
Levy'nin "Plex" adlı mükemmel kitabını okurken topladığım bir haber, Python'un Google'a nasıl girdiği (Google olarak adlandırılmadan önce "arkadan katlandı"). Larry Page o zamanlar yepyeni Java 1.0 beta sürümünde web kazıma yapan bir "örümcek" yazmıştı ve o kadar kırıldı ki yurttaki oda arkadaşı daha kararlı, sağlam ve üretken bir dilde yeniden yazarak ona yardım etti ... Python. Bu "örümcek" olmadan Google'ın asla var olmayabileceğini düşünmek komik ...
Alex Martelli

34

Makalenin tamamını okumadım ve ne kadar temsilci olduğunu bilmiyorum ama belki de sorunuza cevap veriyor: Google'da Python .

Tamam ben bunun çoğu, ne yazık ki değil verir okumak o kadar fikir ama yine de ilginç bir makale olduğunu düşünüyorum. Belki de en önemlisi:

Google'da python, C ++ ve Java ile birlikte 3 "resmi dilden" biridir. Burada görevli, Google çalışanlarının bu dilleri üretim hizmetlerine dağıtmasına izin verildiği anlamına gelir. (Dahili Google kullanıcıları PHP, C #, Ruby ve Perl dahil olmak üzere birçok teknolojiyi kullanır). Python, Google'daki mühendislik sürecine çok uygundur. Google'daki tipik projede küçük bir ekip (3 kişi) ve kısa bir süre (3 ay) vardır.


Python'un yaratıcısı Guido van Rossum'un 2005-2012 yılları arasında Google için çalıştığını unutmamak gerekir ;)


Ayrıca bu teklifi buldum ama doğrulayamıyorum:

"Python başından beri Google'ın önemli bir parçası oldu ve sistem büyüdükçe ve geliştikçe de öyle. Bugün onlarca Google mühendisi Python kullanıyor ve biz bu dilde yetenekleri olan daha fazla insan arıyoruz"
- Peter Norvig, Google'da Arama Kalitesi Direktörü


Peki bu bir tat meselesi mi yoksa bir rekabet avantajı mı?
Andrei Ciobanu

4
@nomemory: Belki ikisi de? Mühendislik sürecine (lezzete) uyar ve bu nedenle ürünlerini daha önce bitirebilirlerse onlara bir avantaj sağlayabilir.
Felix Kling

1
Düzinelerce mühendis Python kullanıyor mu? Google kadar büyük bir şirket için bu zorlayıcı bir durum değildir.
Jason Baker

28

CPython'un performansını artırmayı amaçlayan Unladen-Swallow adlı projeyi okuyordum . Onların tartışma panosu aracılığıyla gezinirken ben rastladım bu tartışma Collin Kış (Google çalışanı ve Python çekirdek geliştirici) üzerinde yanıtlar istem o Google çalışanları yeni projeler için Python kullanarak cesaretini ediliyor :

Basit sağduyu, Google'ın ölçeğinde çalışırken Python'un uygulanabilirliğini sınırlayacak: Java veya C ++ kadar hızlı değil, iş parçacığı berbat, bellek kullanımı daha yüksek, vb. Herhangi bir yeni sistem tasarlarken karşılaştığımız tasarım kısıtlamalarından biri, "Yük 10x veya 100x arttığında ne olur? Tüm gezegen yeni hizmetinizin harika olduğunu düşünürse ne olur?" Bu kısıt zor tatmin yapacağı herhangi teknolojisi - ve ben Python bu kategoriye girmektedir düşünüyorum - shoulddiğer esaslar lehine yapılmış çok güçlü bir dava yoksa cesaretini kırmak. Python'un güçlü yönlerini zayıf yönleriyle dengelemek zorundasınız: mühendisleriniz Python kullanarak daha üretken olabilir, ancak hacim arttıkça daha platform düzeyinde performans / ölçeklendirme sınırlamaları üzerinde çalışmak zorunda kalırlarsa, öne çıkıyor musunuz? vb.


20

Paul Graham'ın özlü == güç fikrine abone olursanız (örn. 100 satır Y aldığınız şeyi başarmak için 10 satırda X dilinde kod yazabilirsem, dilim daha güçlüdür)

Bu gün donanım ucuz, etli ürünler pahalı . Pillhon'da diğer dillerde yapabileceğimden çok daha fazla, daha hızlı, daha iyi ve daha net yazabileceğimi biliyorum, çünkü piller dahil olma eğilimindedir. Elbette, daha yavaş olabilir ama gerçekten .05 saniye ile .0005 saniye arasındaki farkı fark edecek misiniz?

Daha gerçek dünyadaki bir örnekte, Google geliştiricileri Python'da çöp toplama konusunda asla endişe etmeleri gereken bir program yazıyorsa ve X Şirketi C ++ 'da bir program yazıyorsa ve zamanlarının% 10'unu bellek ayırma ile ilgili hataları izlemek için harcıyorlarsa, kim daha hızlı yapıldığını tahmin et - C ++ mağazası kodlarının geri kalanını hızlı yazmayı başarsa bile.

Yani evet, Python'da kodlamanın rekabetçi bir avantaj olduğunu söyleyebilirim.


2
Lanetli site yeniden tasarımı! Alternatif bir bağlantısı var, işte gidiyorsun.
Wayne Werner

11
'.5 saniye ile .005 saniye arasındaki farkı gerçekten görecek misin?' Google temel arama, YouTube veya Gmail üzerinde çalışmıyorsunuz, değil mi?
jwg

5
Google kadar ihtiyacınız olduğunda donanım ucuz değildir.
NGRhodes

5
Python ile ilgili en iyi şey, önemli bir performans farkınız olduğunda (örn. ~ 495ms), bazı C / C ++ kodları ekleyebilirsiniz. Python hızlı bir şekilde gelişmenizi ve verimli bir şekilde optimize etmenizi sağlar .
Trevor

3
.5 saniye ile .005 saniye arasındaki fark, birinin fark edilebilir olması ve diğerinin olmamasıdır.
Charlie Schliesser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.