"व्याख्या" और "संकलित" भाषाओं के बीच की रेखा वास्तव में इन दिनों अस्पष्ट है। उदाहरण के लिए, पहली बात यह है कि जब पाइथन स्रोत कोड को देखता है तो इसे बाइटकोड प्रतिनिधित्व में संकलित करता है, अनिवार्य रूप से वही है जो क्लास फाइलों को संकलित करते समय जावा करता है। यह * .pyc फ़ाइलों में क्या है। फिर, पायथन रनटाइम मूल स्रोत का जिक्र किए बिना बाइटकोड निष्पादित करता है। पारंपरिक रूप से, प्रोग्राम को निष्पादित करते समय पूरी तरह से व्याख्या की गई भाषा लगातार स्रोत कोड का संदर्भ लेती है।
कोई भाषा बनाते समय, यह एक ठोस नींव बनाने के लिए एक अच्छा तरीका है जिस पर आप उच्च स्तरीय कार्यों को लागू कर सकते हैं। यदि आपके पास ठोस, तेज स्ट्रिंग हैंडलिंग सिस्टम है, तो भाषा डिजाइनर आधार रनटाइम के बाहर स्ट्रिप्सलाश() जैसे कुछ को कार्यान्वित कर सकता है (और चाहिए)। यह कम से कम कुछ कारणों से किया जाता है:
- भाषा डिजाइनर यह दिखा सकता है कि भाषा उस तरह के कार्य को संभालने के लिए पर्याप्त लचीला है।
- भाषा डिजाइनर वास्तव में भाषा में वास्तविक कोड लिखता है, जिसमें परीक्षण होता है और इसलिए दिखाता है कि नींव ठोस है।
- अन्य लोग भाषा कोर बनाने या समझने में सक्षम होने के बिना उच्च स्तर के फ़ंक्शन को आसानी से पढ़ सकते हैं, उधार ले सकते हैं और यहां तक कि परिवर्तन भी कर सकते हैं।
सिर्फ इसलिए कि पाइथन जैसी भाषा बाइटकोड और निष्पादित करने के लिए संकलित करती है जिसका मतलब यह धीमा नहीं है। ऐसा कोई कारण नहीं है कि कोई भी पाइथन के लिए जस्ट-इन-टाइम (जेआईटी) कंपाइलर नहीं लिख सकता है, जो जावा और .NET पहले से ही प्रदर्शन को बढ़ाने के लिए करता है। वास्तव में, आयरनपीथन सीधे पाइथन को .NET बाइटकोड में संकलित करता है, जिसे तब जेआईटी समेत .NET सिस्टम का उपयोग करके चलाया जाता है।
सीधे अपने प्रश्न का उत्तर देने के लिए, एकमात्र समय एक भाषा डिजाइनर रनटाइम के पीछे की भाषा में एक फ़ंक्शन लागू करेगा (जैसे पायथन के मामले में सी) उस कार्य के प्रदर्शन को अधिकतम करने के लिए होगा। यही कारण है कि नियमित अभिव्यक्ति पार्सर जैसे मॉड्यूल मूल पायथन के बजाय सी में लिखे गए हैं। दूसरी तरफ, getopt.py जैसे मॉड्यूल को शुद्ध पायथन में कार्यान्वित किया जाता है क्योंकि यह सब वहां किया जा सकता है और संबंधित सी लाइब्रेरी का उपयोग करने के लिए कोई लाभ नहीं है।
स्रोत
2008-08-17 12:39:58
संकलित भाषा "लीवरेज" की बजाय, इसका उपयोग क्यों न करें या इसका लाभ उठाएं? आइए अंग्रेज़ी में भाषा कीवर्ड की संख्या में वृद्धि न करें जब तक कि हमें :) – MarkJ