स्टैकलेस पायथन की कमियां क्या हैं? [बन्द है]


127

मैं हाल ही में स्टैकलेस पायथन के बारे में पढ़ रहा हूं और यह लगता है कि वेनिला सीथॉन के साथ तुलना में कई फायदे हैं। इसमें अनंत पुनरावृत्ति, माइक्रोथ्रेड्स, निरंतरता आदि जैसी सभी शांत विशेषताएं हैं और एक ही समय में cPython (लगभग 10%, यदि पायथन विकी को माना जाता है) की तुलना में तेज है और इसके साथ संगत है (कम से कम संस्करण 2.5, 2.6) (3.0) है।

ये सभी सच होने के लिए लगभग बहुत अच्छे लगते हैं। हालाँकि, TANSTAAFL , मुझे पायथन समुदाय के बीच स्टैकलेस के लिए बहुत उत्साह नहीं दिखता है, और PEP 219 कभी भी साकार नहीं हुआ है। ऐसा क्यों है? स्टैकलेस की कमियां क्या हैं? स्टैकलेस की अलमारी में कौन से कंकाल छिपे हुए हैं?

(मुझे पता है कि स्टैकलेस असली कंसीडर नहीं है, सिर्फ समवर्ती तरीके से प्रोग्रामिंग का एक आसान तरीका है। यह वास्तव में मुझे परेशान नहीं करता है।)

जवाबों:


165

मुझे नहीं पता कि विकी पर "स्टैकलेस 10% तेज" कहां से आया था, लेकिन फिर मैंने कभी भी उन प्रदर्शन संख्याओं को मापने की कोशिश नहीं की। मैं यह नहीं सोच सकता कि स्टैकलेस कितना बड़ा बदलाव ला सकता है।

स्टैकलेस कई संगठनात्मक / राजनीतिक समस्याओं के साथ एक अद्भुत उपकरण है।

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

उस कारण से, प्रारंभिक दस्तावेज खराब था। तीसरे पक्ष के योगदानकर्ताओं में से सर्वश्रेष्ठ के साथ इसका उपयोग करने के कुछ विवरण थे। PyCon 2007 के अनुसार मैंने " Stackless का प्रयोग " पर एक बात की , जो PyCon सर्वेक्षण की संख्या के अनुसार काफी अच्छी रही। रिचर्ड ट्यू ने एक बहुत अच्छा काम किया है, ये स्टैकलेस.कॉम को अपडेट करता है , और नए पायथन रिलीज के आने पर वितरण को बनाए रखता है। वह CCP गेम्स , EVE ऑनलाइन के डेवलपर्स का कर्मचारी है , जो अपने गेमिंग सिस्टम के एक आवश्यक हिस्से के रूप में स्टैकलेस का उपयोग करता है।

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

एक अन्य कठिनाई स्रोत कोड रही है। अपने मूल रूप में इसे पायथन के कई हिस्सों में बदलाव की आवश्यकता थी, जिससे गुइडो वैन रॉसुम, पायथन लीड, सावधान हो गया। मुझे लगता है कि कारण का हिस्सा, कॉल / सीसी के लिए समर्थन था जिसे बाद में हटा दिया गया था "एक गोटो का समर्थन करना बहुत पसंद है जब बेहतर उच्च-स्तरीय रूप होते हैं।" मैं इस इतिहास के बारे में निश्चित नहीं हूं, इसलिए बस इस पैराग्राफ को पढ़ें "स्टैकलेस को बहुत अधिक परिवर्तनों की आवश्यकता होती है।"

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

" कोड बेस में महत्वपूर्ण बदलाव " के लिए बिल्कुल कोई योजना नहीं है । वह बोली और संदर्भ हाइपरलिंक के अराफंगियन (टिप्पणी देखें) से लगभग 2000/2001 हैं। संरचनात्मक परिवर्तन लंबे समय से किए गए हैं, और यह वही है जो मैंने ऊपर उल्लेख किया है। स्टैकलेस के रूप में यह अब स्थिर है और परिपक्व है, पिछले कई वर्षों में कोड आधार के लिए केवल मामूली tweaks के साथ।

स्टैकलेस के साथ एक अंतिम सीमा - स्टैकलेस के लिए कोई मजबूत वकील नहीं है। तीसमार अब PyPy के साथ गहराई से जुड़ा हुआ है , जो Python के लिए Python का कार्यान्वयन है। उन्होंने PyPy में Stackless कार्यक्षमता को लागू किया है और इसे Stackless से बेहतर मानते हैं, और उन्हें लगता है कि PyPy भविष्य का तरीका है। Tew Stackless को बनाए रखता है लेकिन उसे वकालत में कोई दिलचस्पी नहीं है। मैंने उस भूमिका में होने का विचार किया, लेकिन मैं यह नहीं देख सकता था कि मैं इससे कैसे कमा सकता हूं।

यद्यपि यदि आप स्टैकलेस में प्रशिक्षण चाहते हैं, तो मुझसे संपर्क करने में संकोच न करें ! :)


39

इस चर्चा को खोजने में काफी लंबा समय लगा। उस समय मैं PyPy पर नहीं था, लेकिन मानस के साथ 2 साल का संबंध था, जब तक कि स्वास्थ्य ने इस सभी को अचानक रोक नहीं दिया। मैं अब फिर से सक्रिय हूं और एक वैकल्पिक दृष्टिकोण डिजाइन कर रहा हूं - इसे यूरोपाइथन 2012 पर पेश करूंगा।

एंड्रयूज के अधिकांश कथन सही हैं। कुछ मामूली जोड़:

स्टैकलेस 10 साल पहले सीपीथॉन की तुलना में काफी तेज था, क्योंकि मैंने दुभाषिया लूप को अनुकूलित किया था। उस समय, गुइडो इसके लिए तैयार नहीं था। कुछ साल बाद, लोगों ने इसी तरह के अनुकूलन किए और इससे भी बेहतर और बेहतर, जो स्टैकलेस को थोड़ा धीमा कर देता है, जैसा कि अपेक्षित था।

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

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

इस बीच चीजें फिर से बदल रही हैं। मैं PyPy और Stackless पर एक एक्सटेंशन के रूप में काम कर रहा हूं जो कभी-कभी बाद में इसके बारे में बात करेगा

चीयर्स - क्रिस


5

यदि मुझे सही ढंग से याद है, तो स्टैकलेस को आधिकारिक सीपीथॉन में शामिल करने के लिए स्लेट किया गया था, लेकिन स्टैकलेस के लेखक ने सीपीथॉन के लोगों को ऐसा नहीं करने के लिए कहा, क्योंकि उसने कोड आधार में कुछ महत्वपूर्ण बदलाव करने की योजना बनाई - यह अनुमान लगाया कि बाद में किया गया एकीकरण वह चाहता था परियोजना अधिक परिपक्व थी।


1
स्रोत? मुझे यह दिलचस्प लगता है, लेकिन मैं स्पष्ट रूप से आप पर विश्वास नहीं कर सकता क्योंकि आपने ऐसा कहा था। अगर आप गलत थे तो मैं मूर्ख दिखूंगा और मैंने यह बात शुरू कर दी कि यह कितना दिलचस्प था।
डेविन जीनपीयर

2
बहुत बढ़िया बिंदु। माफ करना, मैं संदर्भ है, क्योंकि यह freenode पर #python में एक irc बातचीत में था की जरूरत नहीं है, फिर भी मैं कम से एक प्राचीन मेलिंग सूची वार्तालाप को खोजने के लिए प्रबंधन कैसे किया gnosis.cx/download/charming_python_10_outtakes.html जो करने के लिए बहुत अधिक जानकारी देता है परिस्थिति।
अरफांगियन

यह लिंक वास्तव में बहुत अच्छा है। यह मेरे बहुत सारे सवालों का जवाब देता है।
रिस्ज़ार्ड स्ज़ोपा

यह लिंक 8 या 9 साल पुराना है (यह पायथन 2.1 के बारे में बात करता है) और कोड आधार के भविष्य के परिवर्तनों के बारे में कोई भी चर्चा लंबे समय से होती है। स्टैकलेस पायथन स्थिर और परिपक्व है, और "कोड आधार में महत्वपूर्ण बदलाव" की कोई योजना नहीं है।
एंड्रयू डलके

dalke: इस तरह से चीजें हैं - यदि परिवर्तनों को एकीकृत करने के लिए किसी भी निर्णय में पर्याप्त बदलाव हुए हैं, तो एक नए संदर्भ के साथ आने के लिए स्वतंत्र महसूस करें, हालांकि मुझे संदेह है कि मैंने जो प्राचीन स्रोत प्रदान किया था, उसमें अलग-अलग वेरिएंट होने की प्रवृत्ति शुरू हुई थी अजगर की तरह, जेपीथॉन, आयरनपियन ..
अरफैंगियन

3

मुझे यहां के जवाबों में भी दिलचस्पी है। मैंने स्टैकलेस के साथ थोड़ा सा खेला है और ऐसा लग रहा है कि यह मानक पायथन के लिए एक अच्छा ठोस जोड़ होगा।

PEP 219 सी कोड से पायथन कोड को कॉल करने के साथ संभावित कठिनाइयों का उल्लेख करता है, अगर पायथन एक अलग स्टैक में बदलना चाहता है। इसका पता लगाने और इसे रोकने के तरीके (सी स्टैक को ट्रैश करने से बचने के लिए) होने की आवश्यकता होगी। मुझे लगता है कि यह ट्रैक्टेबल है, इसलिए मैं भी सोच रहा हूं कि स्टैकलेस को अपने दम पर खड़ा होना चाहिए।


3
PEP 219 9 साल पुराना है और गंभीरता से पुराना है। "सी कोड से पायथन कोड को कॉल करने की कठिनाइयों" केवल पीईपी में चर्चा किए गए कार्यान्वयन में है, और स्टैकलेस में नहीं है। PEP का नाम ("स्टैकलेस पायथन") एक मिथ्या नाम है; इसने स्टैकलेस से इसकी प्रेरणा ली और यही है।
13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.