Google पायथन का भारी उपयोग, क्या यह सिर्फ स्वाद की बात है या यह उन्हें एक प्रतिस्पर्धात्मक लाभ देता है?
Google पायथन का भारी उपयोग, क्या यह सिर्फ स्वाद की बात है या यह उन्हें एक प्रतिस्पर्धात्मक लाभ देता है?
जवाबों:
मैं वास्तव में एक निश्चित उत्तर नहीं दे सकता, क्योंकि 2004 में जब मैंने Google में साक्षात्कार किया था, तब तक पायथन पहले से ही Google पर प्रमुख था।
वास्तव में, एक स्पष्ट रूप से आकर्षक व्याख्या है कि मैं निश्चित रूप से इनकार कर सकता हूं: ऐसा नहीं है कि Google पायथन का उपयोग करता है क्योंकि यह इतने सारे प्रमुख पायथनस्टास को रोजगार देता है - बल्कि, अधिकांश "प्रमुख पायथनोनिता" गुग्लर्स Google में शामिल हुए, कम से कम भाग में, क्योंकि हम पायथन की प्रमुखता के बारे में जानते थे। वहाँ (संभावित अपवादों में पीटर नॉरविग और जेरेमी हिल्टन शामिल हैं, लेकिन ऐतिहासिक रूप से Google की पसंद पाइथन ने उन्हें भी पसंद किया)।
इसीलिए मुझे पहली बार दिलचस्पी हुई (मेरे प्रकाशक ने मुझे अपनी पुस्तक की बड़ी मात्रा की उन प्रतियों के बारे में बताया जो Google खरीद रही थी - सबसे पहले, मैंने इसे अपनी फ्रीलांस कंसल्टिंग सेवा को बेचने का एक अच्छा अवसर माना ...; - ), कैसे मैं बाद में गुइडो को हमसे मिलाने में सक्षम हो गया, और, मुझे विश्वास है, ग्रेग स्टीन, वेस्ले चुन, फ्रेड्रिक लुन्ध, थॉमस वाउटर्स, कॉलिन विंटर्स, जेफ्री यास्किन जैसे पाइथोनिस्टस के लिए प्रेरणा का हिस्सा ...
यह सब शुरू हो गया, मुझे विश्वास है, क्योंकि बहुत जल्द गोगलर्स (सर्गेई, लैरी, क्रेग, ...) ने एक अच्छा इंजीनियरिंग निर्णय लिया: "पायथन जहां हम कर सकते हैं, सी ++ जहां हमें चाहिए" - उन्होंने (एक उपसमुच्चय) सॉफ्टवेयर स्टैक के उन हिस्सों के लिए C ++ जहां बहुत कम विलंबता और / या मेमोरी का तंग नियंत्रण महत्वपूर्ण था, और पायथन, अन्य भागों के लिए और अधिक तेजी से वितरण और कार्यक्रमों के रखरखाव की अनुमति देता है। उस समय, 90 के दशक के उत्तरार्ध में, बाद की भूमिका के लिए विकल्प अनिवार्य रूप से पायथन और पर्ल के बीच था: अन्य स्क्रिप्टिंग भाषाएँ या तो अपंग थीं (मुझे नहीं लगता कि रूबी अभी तक आसपास थी, उदाहरण के लिए) या अन्य मुद्दे और सीमाएं थीं। पर्ल अधिक परिपक्व था (विशेष रूप से सीपीएएन के माध्यम से उपलब्ध ऐड-ऑन के अपने पारिस्थितिकी तंत्र के संदर्भ में), लेकिन पायथन को अधिक पठनीय और बनाए रखने योग्य माना जाता था, और सी ++ पुस्तकालयों (SWIG के माध्यम से) के लिए इंटरफेसिंग आसान थी।
जावा बाद में आया, एक मध्यवर्ती आला को कवर करते हुए - और हाल ही में निश्चित रूप से गो विकसित किया गया था (हालांकि मुझे विश्वास नहीं है कि इसमें अभी तक बहुत अधिक उत्पादन कार्य है, क्योंकि यह अभी भी विकसित और परिपक्व है)। कुछ विशिष्ट भाषाएं जैसे आराज़ल भी बहुत विशिष्ट कार्यों के लिए मिश्रण में हैं, और निश्चित रूप से जावास्क्रिप्ट ब्राउज़र-साइड काम के लिए बहुत महत्वपूर्ण है।
अन्य भाषाएं, जिनमें ग्रेग का '06 में उल्लेख किया गया है, सहित, "या तो" आकस्मिक "हैं या अन्य विशिष्ट कार्यों के लिए उपयोग की जाती हैं (जैसे, iPhones या Mac पर ग्राहकों के लिए उद्देश्य C) - जैसे, जब Google ने अपना पहला सिस्टम प्रशासक काम पर रखा था , वे कर्मचारी अनिवार्य रूप से पर्ल और बैश की बहुत मजबूत महारत के साथ आए थे, और अक्सर कुछ जटिल आंतरिक प्रणाली विकसित करने के लिए या तो उन भाषाओं का उपयोग करते थे; पायथन में उन लोगों को भर्ती करना (आसान तैनाती और रखरखाव के लिए) अक्सर हुआ है। अन्य (जैसे C #) मिश्रण में अधिग्रहण के कारण अस्थायी रूप से हो सकता है, लेकिन, फिर से, "मुख्य Google भाषाओं में से एक" में रिकोडिंग हमेशा एक बहुत ही उच्च प्राथमिकता है (C # मामले में, कोडिंग आमतौर पर ज्यादातर जावा में होगी) जैसा कि दो भाषाओं में अमूर्तता के स्तरों के संदर्भ में समान क्षेत्रों को संबोधित करता है)।
मैंने पूरा लेख नहीं पढ़ा है और मुझे नहीं पता कि यह कैसे प्रतिनिधि है, लेकिन शायद यह आपके प्रश्न का उत्तर देता है: Google पर पायथन ।
ठीक है, मैं पढ़ इसमें से अधिकांश, दुर्भाग्य से यह नहीं देता है कि अधिक जानकारी लेकिन मुझे लगता है कि यह अभी भी एक दिलचस्प लेख है। शायद सबसे महत्वपूर्ण:
Google पर, अजगर C ++ और जावा के साथ 3 "आधिकारिक भाषाओं" में से एक है। यहां आधिकारिक का मतलब है कि गोगलर्स को इन भाषाओं को उत्पादन सेवाओं में तैनात करने की अनुमति है। (आंतरिक रूप से Google लोग PHP, C #, रूबी और पर्ल सहित कई तकनीकों का उपयोग करते हैं)। पायथन Google में इंजीनियरिंग प्रक्रिया के अनुकूल है। Google की विशिष्ट परियोजना में एक छोटी टीम (3 लोग) और एक छोटी अवधि (3 महीने) है।
यह न भूलें कि पायथन के निर्माता गुइडो वैन रोसुम ने 2005-2012 तक Google के लिए काम किया था;)
मुझे यह उद्धरण भी मिला लेकिन मैं इसे सत्यापित नहीं कर सकता:
"पायथन शुरुआत से ही Google का एक महत्वपूर्ण हिस्सा रहा है, और जैसा कि सिस्टम बढ़ता है और विकसित होता है, वैसे ही रहता है। आज दर्जनों Google इंजीनियर पायथन का उपयोग करते हैं, और हम इस भाषा में कौशल वाले अधिक लोगों की तलाश कर रहे हैं"
- पीटर नॉरविग, Google में खोज गुणवत्ता के निदेशक
मैं Unladen-Swallow , एक परियोजना के बारे में पढ़ रहा था जिसका उद्देश्य CPython के प्रदर्शन में सुधार करना है। अपने चर्चा बोर्ड के माध्यम से ब्राउज़ करते समय मैं इस चर्चा में फंस गया, जहां कॉलिन विंटर (Google कर्मचारी और पायथन कोर डेवलपर) इस दावे पर जवाब देते हैं कि Google कर्मचारियों को नई परियोजनाओं के लिए पायथन का उपयोग करने से हतोत्साहित किया जा रहा है :
ठीक है, सामान्य सामान्य ज्ञान Google के पैमाने पर काम करते समय पायथन की प्रयोज्यता को सीमित करने जा रहा है: यह जावा या सी ++ की तरह तेज नहीं है, थ्रेडिंग, मेमोरी का उपयोग अधिक है, आदि। किसी भी नई प्रणाली को डिजाइन करते समय हमारे द्वारा डिजाइन की जाने वाली बाधाओं में से एक। "क्या होता है जब लोड 10x या 100x तक बढ़ जाता है? क्या होता है अगर पूरे ग्रह को लगता है कि आपकी नई सेवा भयानक है?" कोई भी तकनीक जो उस बाधा को संतोषजनक बनाती है - और मुझे लगता है कि पायथन इस श्रेणी में आता है - चाहिएइसे हतोत्साहित किया जाए यदि इसके पास अन्य गुणों के पक्ष में बहुत मजबूत मामला नहीं है। आपको अपनी कमजोरियों के साथ पायथन की ताकत को संतुलित करना होगा: आपके इंजीनियर पाइथन का उपयोग करके अधिक उत्पादक हो सकते हैं, लेकिन अगर उन्हें वॉल्यूम बढ़ाने के साथ-साथ अधिक मंच-स्तरीय प्रदर्शन / स्केलिंग सीमाओं के आसपास काम करना पड़ता है, तो क्या आप आगे आते हैं? आदि।
यदि आप पॉल ग्राहम के उस विचार का समर्थन करते हैं जो कि succinctness == पॉवर (यानी यदि मैं भाषा में X को 10 लाइनों में कोड लिख सकता हूं, तो यह सुनिश्चित करने के लिए कि आपने भाषा Y की 100 लाइनें ली हैं, मेरी भाषा अधिक शक्तिशाली है)
इन दिनों हार्डवेयर सस्ता है, मीटवेयर महंगा है । मुझे पता है कि मैं पायथन में अन्य भाषाओं की तुलना में बहुत अधिक, तेज, बेहतर और स्पष्ट लिख सकता हूं, बस इसलिए कि बैटरी को शामिल किया जाना है। बेशक, यह धीमा हो सकता है लेकिन क्या आप वास्तव में .05 सेकंड और .0005 सेकंड के बीच अंतर को नोटिस करने जा रहे हैं?
अधिक वास्तविक दुनिया के उदाहरण में, अगर Google डेवलपर पायथन में एक कार्यक्रम लिखते हैं, जहां उन्हें कचरा संग्रहण के बारे में चिंता करने की आवश्यकता नहीं है, और कंपनी X C ++ में एक कार्यक्रम लिखता है और वे अपने समय का 10% मेमोरी आवंटन से संबंधित बग्स पर नज़र रखने में खर्च करते हैं, लगता है कि किसने तेजी से काम किया है - भले ही सी ++ दुकान अपने बाकी कोड को उतनी ही तेजी से लिखने का प्रबंधन करता है।
तो हाँ, मैं कहूंगा कि यह पायथन में कोड के लिए एक प्रतिस्पर्धी लाभ है।