2009-02-26 4 views
117

मैं हाल ही में लगभग Stackless Python पढ़ रहा हूं और ऐसा लगता है कि वेनिला सीपीथन की तुलना में कई फायदे हैं। इसमें अनंत रिकर्सन, माइक्रोथ्रेड, निरंतरता इत्यादि जैसी सभी शानदार सुविधाएं हैं और साथ ही सीपीथन से लगभग तेज है (लगभग 10%, यदि the Python wiki माना जाता है) और इसके साथ संगत (कम से कम संस्करण 2.5, 2.6 और 3.0)।स्टैकलेस पायथन की क्या कमी है?

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

(मैं जानता हूँ कि stackless असली संगामिति प्रदान नहीं करता है, बस समवर्ती तरह से प्रोग्रामिंग की एक आसान तरीका है। यह वास्तव में मुझे परेशान नहीं करता है।)

उत्तर

149

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

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

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

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

सीसीपी गेम भी सबसे बड़ा असली दुनिया उदाहरण है जब लोग स्टैकलेस के बारे में बात करते हैं। स्टैकलेस के लिए मुख्य ट्यूटोरियल ग्रांट ओल्सन का "Introduction to Concurrent Programming with Stackless Python" है, जो गेम उन्मुख भी है। मुझे लगता है कि यह लोगों को एक संक्षिप्त विचार देता है कि स्टैकलेस गेम उन्मुख है, जब यह और अधिक है कि गेम अधिक आसानी से निरंतरता उन्मुख हैं।

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

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

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

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

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

3

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

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

+3

पीईपी 219 9 वर्ष है और गंभीरता से पुराना हो चुका है। "सी कोड से पायथन कोड को कॉल करने" की कठिनाइयों केवल पीईपी में चर्चा के कार्यान्वयन में है, और स्टैकलेस में नहीं है। पीईपी ("स्टैकलेस पायथन") का नाम एक गलत नामक है; इसने अपनी प्रेरणा को स्टैकलेस से खींचा और यही वह है। –

4

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

+1

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

+2

उत्कृष्ट बिंदु। क्षमा करें मेरे पास संदर्भ नहीं है, क्योंकि यह freenode पर #python में एक आईआरसी बातचीत में था, हालांकि मैंने http://gnosis.cx/download/charming_python_10_outtakes.html पर एक प्राचीन मेलिंग सूची वार्तालाप ढूंढने का प्रबंधन किया जो बहुत कुछ देता है स्थिति के लिए और अधिक अंतर्दृष्टि। – Arafangion

+0

वह लिंक वास्तव में महान है। यह मेरे कई सवालों का जवाब देता है। –

34

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

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

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

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

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

इस बीच चीजें फिर से बदल रही हैं। मैं एक विस्तार के रूप PyPy और stackless पर काम कर रहा हूँ इस बारे में कभी कभी बाद में

चीयर्स बात करोगे - क्रिस

+0

अंतर्दृष्टि के लिए धन्यवाद, क्रिस। :) –