2009-10-29 7 views
9

मुझे वास्तव में सीपीथॉन के संदर्भ में "बाइटकोड दुभाषिया" की अवधारणा नहीं मिलती है। क्या कोई पूरी तस्वीर पर कुछ प्रकाश डाल सकता है?सीपीथन बाइटकोड दुभाषिया है?

क्या इसका मतलब यह है कि सीपीथन पीईसी फ़ाइल (बाइटकोड फ़ाइल?) को संकलित और निष्पादित करेगा। फिर pyc फ़ाइल में py फ़ाइल संकलित करें? और ज्योथन सीपीथॉन से अलग कैसे है (सिवाय इसके कि वे अलग-अलग भाषाओं में लागू होते हैं)।

मैंने कहीं भी पढ़ा है कि पायथन सी ++ व्याख्या है। क्या ये सही है? और उसका क्या मतलब है?

मैं अभी भी पाइथन के लिए बहुत नया हूं, इसलिए अगर मैं गूंगा प्रश्न पूछता हूं तो मुझे क्षमा करें ... आपको बहुत बहुत धन्यवाद!

उत्तर

12

सीपीथन सी में पायथन का कार्यान्वयन है। यह पहला कार्यान्वयन है, और फिर भी मुख्य बात यह है कि जब लोग पाइथन के बारे में बात करते हैं तो लोगों का मतलब है। यह .pyc फ़ाइलों को .py फ़ाइलों को संकलित करता है। .pyc फ़ाइलों में बाइटकोड होते हैं। CPython कार्यान्वयन उन बाइटकोड भी व्याख्या करता है। सीपी ++ में सीपीथन लिखा नहीं गया है, यह सी

.py से .pyc का संकलन आवश्यकतानुसार पारदर्शी रूप से होता है। जब आप एक .py फ़ाइल निष्पादित करते हैं, तो इसे पहले किसी .pyc फ़ाइल में संकलित किया जाएगा, तो .pyc फ़ाइल का अर्थ दिया जाएगा।

ज्योथन अलग है क्योंकि (सी के बजाए जावा में लागू होने के अलावा) यह .py फ़ाइलों को .class फ़ाइलों में संकलित करता है ताकि उन्हें JVM में निष्पादित किया जा सके।

+0

क्या ज्योथन पाइथन कोड को जावा में परिवर्तित करता है और फिर जेव बाइटकोड में संकलित करता है? – Nope

+0

मुझे नहीं पता कि यह जावा को मध्यवर्ती रूप के रूप में उत्पन्न करता है या नहीं। –

+3

AFAIK Jython अनुरोध किए जाने पर जावा को मध्यवर्ती रूप के रूप में उत्पन्न कर सकता है, लेकिन यह आमतौर पर जावा बाइटकोड उत्पन्न करता है। – MAK

7

सीपीथन दोनों बाइटकोड संकलक, और दुभाषिया (आभासी मशीन) दोनों है।

यह स्वचालित रूप से पता लगाता है कि कोई मौजूदा प्री-कंपाइलर फ़ाइल (.pyc) मौजूद नहीं है, कोड संकलित करता है, और इसे बचाता है।

10

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

तो, अपने प्रश्न का उत्तर देने और अपनी जिज्ञासा को पूरा करने के लिए, यहां क्या होता है: सीपीथन पाइथन स्रोत कोड पढ़ता है, और इसे पाइथन बाइट कोड में संकलित करता है, जो .pyc फ़ाइल में संग्रहीत है। फिर यह एक बाइटकोड दुभाषिया का उपयोग कर उस कोड को निष्पादित करता है। यह डिज़ाइन निष्पादन से अजगर के पार्सिंग को अलग करता है, जिससे दुभाषिया के दोनों हिस्सों को सरल होना चाहिए।

ज्योथन केवल सामने आधा है - यह पाइथन स्रोत पढ़ता है, और जावा बाइटकोड आउटपुट करता है, जिसे बाद में जेवीएम द्वारा व्याख्या किया जाता है। यह दो उल्लेखनीय मतभेदों के साथ सीपीथन के समान वास्तुकला है: एक: जावा बाइटकोड मानकीकृत और दस्तावेज है, जबकि सीपीथन बाइटकोड को अजगर के लिए आंतरिक माना जाता है, और किसी भी समय बदल सकता है। दो: जेवीएम सीपीथॉन दुभाषिया की तुलना में काफी जटिल है। जेवीएम दुनिया में सबसे उन्नत जेआईटी इंजनों में से एक है, जबकि सीपीथन दुभाषिया बहुत सरल है।

+1

देर से हालांकि, लेकिन यह एक बहुत विस्तृत स्पष्टीकरण है। धन्यवाद! – huy