Google पर अजगर का भारी उपयोग [बंद]


185

Google पायथन का भारी उपयोग, क्या यह सिर्फ स्वाद की बात है या यह उन्हें एक प्रतिस्पर्धात्मक लाभ देता है?


21
इसके लिए कम्युनिटी विकी होने की जरूरत है
ऑटोमेटेडटेस्टर

72
एलेक्स मार्टेली जल्द ही स्वीकार किए गए उत्तर के लिए आने वाली है, ....
क्रिस्टोफ़ीड

4
वास्तव में मुझे लगता है कि इस उत्तर का उत्तर निष्पक्ष रूप से दिया जा सकता है (Google द्वारा कहीं न कहीं यह कथन होना चाहिए कि वे इसका उपयोग क्यों करते हैं?))
फेलिक्स क्लिंग

15
@nomemory, "भारी" यहाँ एक सही विशेषण है (निश्चित रूप से आपको पुष्टि के लिए हमारे कोडबेस को देखने में सक्षम होना चाहिए - कितना अजगर बनाम जावा बनाम सी ++ आदि - लेकिन, मैं इसे देखने में सक्षम हूं , और इसमें योगदान करें, ज्यादातर पायथन, हर दिन;; और सवाल आईटी उद्योग के सभी पर नहीं है - यह विशेष रूप से Google पर है, एक 20,000-कर्मचारी कंपनी (गैर-प्रोग्रामर सहित), जहां हम में से कुछ को "समग्र दृष्टिकोण" बेहतर था , क्योंकि यह उस दृश्य और अभिनय पर आधारित है यह हमारी नौकरियों के मुख्य भाग हैं; ;-) इसलिए, मैं फिर से मतदान कर रहा हूं।
एलेक्स मार्टेली

7
@nomemory, पाइथन सम्मेलनों में हमेशा ऑरेकल रिक्रिएटर्स होते हैं, इसलिए मुझे यह जानकर आश्चर्य होगा कि पायथन अपने कोडबेस में "न के बराबर" है (यदि हां, तो वे रिक्रूटर झूठ बोल रहे हैं, साथ ही साथ अपना समय और पायथन भी बर्बाद कर रहे हैं) ;-)। और वैसे भी, ओरेकल और Google कैसे प्रतिस्पर्धा कर रहे हैं, वास्तव में? -)
एलेक्स मार्टेली

जवाबों:


286

मैं वास्तव में एक निश्चित उत्तर नहीं दे सकता, क्योंकि 2004 में जब मैंने Google में साक्षात्कार किया था, तब तक पायथन पहले से ही Google पर प्रमुख था।

वास्तव में, एक स्पष्ट रूप से आकर्षक व्याख्या है कि मैं निश्चित रूप से इनकार कर सकता हूं: ऐसा नहीं है कि Google पायथन का उपयोग करता है क्योंकि यह इतने सारे प्रमुख पायथनस्टास को रोजगार देता है - बल्कि, अधिकांश "प्रमुख पायथनोनिता" गुग्लर्स Google में शामिल हुए, कम से कम भाग में, क्योंकि हम पायथन की प्रमुखता के बारे में जानते थे। वहाँ (संभावित अपवादों में पीटर नॉरविग और जेरेमी हिल्टन शामिल हैं, लेकिन ऐतिहासिक रूप से Google की पसंद पाइथन ने उन्हें भी पसंद किया)।

इसीलिए मुझे पहली बार दिलचस्पी हुई (मेरे प्रकाशक ने मुझे अपनी पुस्तक की बड़ी मात्रा की उन प्रतियों के बारे में बताया जो Google खरीद रही थी - सबसे पहले, मैंने इसे अपनी फ्रीलांस कंसल्टिंग सेवा को बेचने का एक अच्छा अवसर माना ...; - ), कैसे मैं बाद में गुइडो को हमसे मिलाने में सक्षम हो गया, और, मुझे विश्वास है, ग्रेग स्टीन, वेस्ले चुन, फ्रेड्रिक लुन्ध, थॉमस वाउटर्स, कॉलिन विंटर्स, जेफ्री यास्किन जैसे पाइथोनिस्टस के लिए प्रेरणा का हिस्सा ...

यह सब शुरू हो गया, मुझे विश्वास है, क्योंकि बहुत जल्द गोगलर्स (सर्गेई, लैरी, क्रेग, ...) ने एक अच्छा इंजीनियरिंग निर्णय लिया: "पायथन जहां हम कर सकते हैं, सी ++ जहां हमें चाहिए" - उन्होंने (एक उपसमुच्चय) सॉफ्टवेयर स्टैक के उन हिस्सों के लिए C ++ जहां बहुत कम विलंबता और / या मेमोरी का तंग नियंत्रण महत्वपूर्ण था, और पायथन, अन्य भागों के लिए और अधिक तेजी से वितरण और कार्यक्रमों के रखरखाव की अनुमति देता है। उस समय, 90 के दशक के उत्तरार्ध में, बाद की भूमिका के लिए विकल्प अनिवार्य रूप से पायथन और पर्ल के बीच था: अन्य स्क्रिप्टिंग भाषाएँ या तो अपंग थीं (मुझे नहीं लगता कि रूबी अभी तक आसपास थी, उदाहरण के लिए) या अन्य मुद्दे और सीमाएं थीं। पर्ल अधिक परिपक्व था (विशेष रूप से सीपीएएन के माध्यम से उपलब्ध ऐड-ऑन के अपने पारिस्थितिकी तंत्र के संदर्भ में), लेकिन पायथन को अधिक पठनीय और बनाए रखने योग्य माना जाता था, और सी ++ पुस्तकालयों (SWIG के माध्यम से) के लिए इंटरफेसिंग आसान थी।

जावा बाद में आया, एक मध्यवर्ती आला को कवर करते हुए - और हाल ही में निश्चित रूप से गो विकसित किया गया था (हालांकि मुझे विश्वास नहीं है कि इसमें अभी तक बहुत अधिक उत्पादन कार्य है, क्योंकि यह अभी भी विकसित और परिपक्व है)। कुछ विशिष्ट भाषाएं जैसे आराज़ल भी बहुत विशिष्ट कार्यों के लिए मिश्रण में हैं, और निश्चित रूप से जावास्क्रिप्ट ब्राउज़र-साइड काम के लिए बहुत महत्वपूर्ण है।

अन्य भाषाएं, जिनमें ग्रेग का '06 में उल्लेख किया गया है, सहित, "या तो" आकस्मिक "हैं या अन्य विशिष्ट कार्यों के लिए उपयोग की जाती हैं (जैसे, iPhones या Mac पर ग्राहकों के लिए उद्देश्य C) - जैसे, जब Google ने अपना पहला सिस्टम प्रशासक काम पर रखा था , वे कर्मचारी अनिवार्य रूप से पर्ल और बैश की बहुत मजबूत महारत के साथ आए थे, और अक्सर कुछ जटिल आंतरिक प्रणाली विकसित करने के लिए या तो उन भाषाओं का उपयोग करते थे; पायथन में उन लोगों को भर्ती करना (आसान तैनाती और रखरखाव के लिए) अक्सर हुआ है। अन्य (जैसे C #) मिश्रण में अधिग्रहण के कारण अस्थायी रूप से हो सकता है, लेकिन, फिर से, "मुख्य Google भाषाओं में से एक" में रिकोडिंग हमेशा एक बहुत ही उच्च प्राथमिकता है (C # मामले में, कोडिंग आमतौर पर ज्यादातर जावा में होगी) जैसा कि दो भाषाओं में अमूर्तता के स्तरों के संदर्भ में समान क्षेत्रों को संबोधित करता है)।


@ एलेक्स शायद मुझे सही से समझ में नहीं आया, लेकिन ऐसा लगता है कि Google इंजीनियरों (विशेष रूप से शोधकर्ताओं) के लिए अपना वातावरण खोलना चाहता था, जिन्होंने विश्वविद्यालय में वर्षों बिताए और हाथों पर केवल C या C ++ बाहर आए (जैसा कि सभी ने इन भाषाओं के साथ शुरू किया और उनमें से अधिकांश समाप्त हो गए इसके साथ भी)। यहाँ, अजगर मजबूत दावेदार है जो C / C ++ के विशाल दायित्व को एक इंटरफ़ेस प्रदान करता है।
रमिज उद्दीन


बहुत बढ़िया अंतर्दृष्टि !! मदद कर सकते हैं भावी googlers
kmario23

3
लेवी की उत्कृष्ट पुस्तक "इन द प्लेक्स" को पढ़ने से एक चिढ़ाने वाली बात यह है कि पाइथन गूगल में कैसे आया (इससे पहले इसका नाम Google था - यह तब "backrub" था)। लैरी पेज ने तब-ब्रांड-नए जावा 1.0 बीटा में एक वेब-स्क्रैपिंग "स्पाइडर" लिखा था, और यह इतना टूट गया था कि उसके डॉर्म रूममेट ने उसे एक और अधिक ठोस, ठोस और उत्पादक भाषा में फिर से लिखकर मदद की ... पायथन। यह सोचकर कि "स्पाइडर" के बिना, Google कभी अस्तित्व में नहीं आ सकता है ...
एलेक्स मार्टेली

34

मैंने पूरा लेख नहीं पढ़ा है और मुझे नहीं पता कि यह कैसे प्रतिनिधि है, लेकिन शायद यह आपके प्रश्न का उत्तर देता है: Google पर पायथन

ठीक है, मैं पढ़ इसमें से अधिकांश, दुर्भाग्य से यह नहीं देता है कि अधिक जानकारी लेकिन मुझे लगता है कि यह अभी भी एक दिलचस्प लेख है। शायद सबसे महत्वपूर्ण:

Google पर, अजगर C ++ और जावा के साथ 3 "आधिकारिक भाषाओं" में से एक है। यहां आधिकारिक का मतलब है कि गोगलर्स को इन भाषाओं को उत्पादन सेवाओं में तैनात करने की अनुमति है। (आंतरिक रूप से Google लोग PHP, C #, रूबी और पर्ल सहित कई तकनीकों का उपयोग करते हैं)। पायथन Google में इंजीनियरिंग प्रक्रिया के अनुकूल है। Google की विशिष्ट परियोजना में एक छोटी टीम (3 लोग) और एक छोटी अवधि (3 महीने) है।


यह न भूलें कि पायथन के निर्माता गुइडो वैन रोसुम ने 2005-2012 तक Google के लिए काम किया था;)


मुझे यह उद्धरण भी मिला लेकिन मैं इसे सत्यापित नहीं कर सकता:

"पायथन शुरुआत से ही Google का एक महत्वपूर्ण हिस्सा रहा है, और जैसा कि सिस्टम बढ़ता है और विकसित होता है, वैसे ही रहता है। आज दर्जनों Google इंजीनियर पायथन का उपयोग करते हैं, और हम इस भाषा में कौशल वाले अधिक लोगों की तलाश कर रहे हैं"
- पीटर नॉरविग, Google में खोज गुणवत्ता के निदेशक


तो क्या यह स्वाद या प्रतिस्पर्धी लाभ की बात है?
आंद्रेई सिओबानु 13

4
@nomemory: शायद दोनों? यह इंजीनियरिंग प्रक्रिया (स्वाद) को फिट बैठता है और इसके कारण उन्हें एक फायदा हो सकता है यदि वे पहले अपने उत्पादों को खत्म कर सकते हैं।
फेलिक्स क्लिंग

1
दर्जनों इंजीनियर पायथन का उपयोग करते हैं? Google जैसी बड़ी कंपनी के लिए, यह शायद ही कोई सम्मोहक मामला है।
जेसन बेकर

28

मैं Unladen-Swallow , एक परियोजना के बारे में पढ़ रहा था जिसका उद्देश्य CPython के प्रदर्शन में सुधार करना है। अपने चर्चा बोर्ड के माध्यम से ब्राउज़ करते समय मैं इस चर्चा में फंस गया, जहां कॉलिन विंटर (Google कर्मचारी और पायथन कोर डेवलपर) इस दावे पर जवाब देते हैं कि Google कर्मचारियों को नई परियोजनाओं के लिए पायथन का उपयोग करने से हतोत्साहित किया जा रहा है :

ठीक है, सामान्य सामान्य ज्ञान Google के पैमाने पर काम करते समय पायथन की प्रयोज्यता को सीमित करने जा रहा है: यह जावा या सी ++ की तरह तेज नहीं है, थ्रेडिंग, मेमोरी का उपयोग अधिक है, आदि। किसी भी नई प्रणाली को डिजाइन करते समय हमारे द्वारा डिजाइन की जाने वाली बाधाओं में से एक। "क्या होता है जब लोड 10x या 100x तक बढ़ जाता है? क्या होता है अगर पूरे ग्रह को लगता है कि आपकी नई सेवा भयानक है?" कोई भी तकनीक जो उस बाधा को संतोषजनक बनाती है - और मुझे लगता है कि पायथन इस श्रेणी में आता है - चाहिएइसे हतोत्साहित किया जाए यदि इसके पास अन्य गुणों के पक्ष में बहुत मजबूत मामला नहीं है। आपको अपनी कमजोरियों के साथ पायथन की ताकत को संतुलित करना होगा: आपके इंजीनियर पाइथन का उपयोग करके अधिक उत्पादक हो सकते हैं, लेकिन अगर उन्हें वॉल्यूम बढ़ाने के साथ-साथ अधिक मंच-स्तरीय प्रदर्शन / स्केलिंग सीमाओं के आसपास काम करना पड़ता है, तो क्या आप आगे आते हैं? आदि।


20

यदि आप पॉल ग्राहम के उस विचार का समर्थन करते हैं जो कि succinctness == पॉवर (यानी यदि मैं भाषा में X को 10 लाइनों में कोड लिख सकता हूं, तो यह सुनिश्चित करने के लिए कि आपने भाषा Y की 100 लाइनें ली हैं, मेरी भाषा अधिक शक्तिशाली है)

इन दिनों हार्डवेयर सस्ता है, मीटवेयर महंगा है । मुझे पता है कि मैं पायथन में अन्य भाषाओं की तुलना में बहुत अधिक, तेज, बेहतर और स्पष्ट लिख सकता हूं, बस इसलिए कि बैटरी को शामिल किया जाना है। बेशक, यह धीमा हो सकता है लेकिन क्या आप वास्तव में .05 सेकंड और .0005 सेकंड के बीच अंतर को नोटिस करने जा रहे हैं?

अधिक वास्तविक दुनिया के उदाहरण में, अगर Google डेवलपर पायथन में एक कार्यक्रम लिखते हैं, जहां उन्हें कचरा संग्रहण के बारे में चिंता करने की आवश्यकता नहीं है, और कंपनी X C ++ में एक कार्यक्रम लिखता है और वे अपने समय का 10% मेमोरी आवंटन से संबंधित बग्स पर नज़र रखने में खर्च करते हैं, लगता है कि किसने तेजी से काम किया है - भले ही सी ++ दुकान अपने बाकी कोड को उतनी ही तेजी से लिखने का प्रबंधन करता है।

तो हाँ, मैं कहूंगा कि यह पायथन में कोड के लिए एक प्रतिस्पर्धी लाभ है।


2
शापित साइट का नया स्वरूप! खैर उसे एक वैकल्पिक लिंक मिल गया है, तो वहाँ फिर जाओ।
वेन वर्नर

11
'क्या आप वास्तव में .5 सेकंड और .005 सेकंड के बीच अंतर नोटिस करने जा रहे हैं?' आप Google कोर खोज, YouTube या Gmail पर काम नहीं करते हैं, क्या आप?
jwg

5
जब आपको Google की जितनी आवश्यकता हो, हार्डवेयर सस्ता नहीं है।
NGRhodes 21

5
पायथन के बारे में महान बात यह है कि जब आपके पास एक महत्वपूर्ण प्रदर्शन अंतर होता है (उदाहरण ~ 495ms), तो आप कुछ C / C ++ कोड में प्लग इन कर सकते हैं। अजगर आपको जल्दी से विकसित करने और कुशलता से अनुकूलन करने की अनुमति देता है ।
ट्रेवर

3
.5 सेकंड और .005 सेकंड के बीच का अंतर यह है कि एक ध्यान देने योग्य है और दूसरा नहीं है।
चार्ली श्लिसेर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.