क्या प्रोग्रामिंग भाषाओं का सिंटैक्स उनके कार्यान्वयन पर निर्भर करता है?


12

हालाँकि, मेरा प्रश्न पूरी तरह से अप्रासंगिक हो सकता है, लेकिन मैंने अधिकांश प्रोग्रामिंग भाषाओं और उनके आधिकारिक कार्यान्वयन के बीच एक पैटर्न को महसूस किया है।

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

संकलित भाषाएं जैसे C, C ++, पास्कल आदि में आमतौर पर एक सख्त वाक्यविन्यास होता है, आमतौर पर इसके प्रकार होते हैं और अधिक कोड / विकास समय की आवश्यकता होती है

ऐसी भाषाएँ जिनके आधिकारिक कार्यान्वयन JIT- संकलित हैं जैसे कि Java / C # आमतौर पर दोनों की कुछ सर्वोत्तम विशेषताओं के साथ उपरोक्त दोनों के बीच एक अनूठा समझौता है।

कुछ अधिक आधुनिक संकलित प्रोग्रामिंग भाषाएं जैसे डी और वेला (और जावा का जीएनयू जीजेसी कार्यान्वयन) शायद इस नियम का अपवाद हैं और जावा और सी # जैसी जेआईटी-संकलित भाषाओं के सिंटैक्स और सुविधाओं से मेल खाती हैं।

मेरा पहला सवाल यह है कि क्या यह वास्तव में प्रासंगिक है? या यह केवल एक संयोग है कि अधिकांश व्याख्या की गई भाषाओं में आसान सिंटैक्स है, जेआईटी-संकलित लोगों के पास एक मध्यम सिंटैक्स और विशेषताएं आदि हैं।

दूसरी बात, अगर यह संयोग नहीं है, तो ऐसा क्यों है? उदाहरण के लिए, क्या कुछ विशेषताएं केवल प्रोग्रामिंग भाषा में लागू की जा सकती हैं, यदि आप कहते हैं, तो JIT- संकलन?


@YannisRizos क्षमा करें, यह कोई उद्धरण नहीं है। मैं इसे उजागर करना चाहता था। मैं इसे संपादित करूँगा।
अपरेंटिसहैकर

1
कूल, मैं हालांकि यह एक उद्धरण नहीं था, लेकिन यह उत्तरदाताओं को यह सोचने के लिए प्रेरित कर सकता है कि यह एक था और इसे खंडन करने की कोशिश नहीं की (या आँख बंद करके इसके साथ सहमत) ... मैंने इसी तरह के पैटर्न पर ध्यान दिया है लेकिन दुर्भाग्य से एक अच्छा नहीं है जवाब।
यानिस डे

@ R.MartinhoFernandes क्षमा करें, मुझे इस बारे में जानकारी नहीं थी। मैं इसे (फिर से) संपादित करूँगा।
अपरेंटिसहैकर

4
पर्ल को गतिशील रूप से उपयोगकर्ता परिभाषित प्रकारों के लिए टाइप किया गया है, वैधानिक रूप से सरणियों, हैश, स्केलर्स और सबरूटीन्स के संबंध में टाइप किया गया है, और कड़ाई से उपयोग के माध्यम से टाइप किया गया है, व्याख्या की गई है और JIT संकलित किया गया है (पाठ्यक्रम के एक ही समय में) ... जब भी कोई कोशिश करता है भाषा डिजाइन की समझ बनाने के लिए, कुछ पर्ल में फेंकना हमेशा मज़ेदार होता है ...
yannis

3
"लीनियर सिंटैक्स" बनाम "सख्त वाक्यविन्यास" से आपका क्या अभिप्राय है? वे सभी औपचारिक भाषाएं हैं और कोई भी वाक्यविन्यास त्रुटियों के साथ स्रोत कोड नहीं चलाएगा।
nikie

जवाबों:


17

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

और हां, टाइपिंग का सिंटैक्स से कोई लेना-देना नहीं है, यह किसी भाषा के शब्दार्थ पक्ष पर है, जब तक कि यह C ++ के रूप में विकृत नहीं है, जहां आप सभी टाइपिंग जानकारी उपलब्ध होने के बिना भी पार्स नहीं कर सकते।

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


+1 करने के लिए मुझे "होमोसेक्सुअल" देखने के लिए ... और PHP के लिए सूक्ष्म सिर के लिए ...
yannis

1
+1, वे भाषाएँ जो बहुत लंबे समय तक विकसित हुईं और उनमें कोई डिज़ाइन सुरक्षा उपाय नहीं थे , क्या यह डेल्फी / ऑब्जेक्ट-पास्कल का भी उल्लेख करता है?
अपरेंटिसहैकर

1
@ThomasEding, आप गलत हैं। सिंटैक्स शैलियों की एक बहुत विस्तृत श्रृंखला के शीर्ष पर एक ही शब्दार्थ को लागू किया जा सकता है, यहां तक ​​कि एक वाक्यविन्यास भाषा (जैसे लिस्प या फोर्थ) के साथ भी। एक ही वाक्यविन्यास का उपयोग विभिन्न शब्दार्थों की बहुत विस्तृत विविधता के साथ किया जा सकता है - जैसे, C और Verilog अभिव्यक्तियों का वाक्यविन्यास लगभग समान है, लेकिन शब्दार्थ नाटकीय रूप से भिन्न है।
एसके-लॉजिक

1
@ एसके-तर्क - सिर्फ इसलिए कि यह जटिल है और ट्यूरिंग-पूर्ण का मतलब यह नहीं है कि यह कम से कम कार्यक्रम के सिंटैक्स का एक बहुत बड़ा हिस्सा नहीं है। विभिन्न भाषाओं को पार्स करना ट्यूरिंग-पूर्ण है, जो जादुई रूप से उस चीज़ को पार्स नहीं करता है जिसमें "सिंटैक्स के साथ कुछ नहीं करना है"। सिंटेक्स "गुंजाइश" के बारे में नहीं है, यह एक भाषा में बयानों की संरचना के नियमों के बारे में है - उन बयानों के बारे में कुछ भी कहने के बिना। प्रकार की जाँच और प्रकार का अनुमान प्रोग्रामों के वाक्यविन्यास पेड़ों पर कार्य करता है, उन्हें क्रियान्वित किए बिना - वे कार्यक्रम की संरचना के बारे में कुछ भी कहे बिना निर्धारित करते हैं ...
जैक

1
@ जैक, आप सिंटैक्स क्या है इसे फिर से परिभाषित करने की कोशिश कर रहे हैं। ऐसी कोई व्यावहारिक भाषा नहीं है जो ट्यूरिंग-पूर्ण पार्सर की आवश्यकता हो, अधिकांश संदर्भ-मुक्त से अधिक कुछ नहीं हैं। और यही वह जगह है जहां वाक्य रचना को रहना चाहिए। कृपया इसे कहीं और न बढ़ाएँ (पहले से ही फैला हुआ) धारणा कहीं और। और मैंने पहले ही करी-हावर्ड आइसोमॉर्फिज्म का उल्लेख किया है - यह सभी शब्दार्थों के बारे में है, जो मात्र शुद्धता नियमों से परे है। मुझे लगता है, बहुत शब्द " type checking" अत्यंत उल्टा है और इसका उपयोग नहीं किया जाना चाहिए, यह बहुत भ्रामक है, यह प्रकार के सिस्टम की प्रकृति को नहीं दर्शाता है।
एसके-तर्क

6

अधिकतर यह एक संयोग है।

प्रोग्रामिंग भाषाएं समय के साथ विकसित हुई हैं, और संकलक और दुभाषियों की तकनीक में सुधार हुआ है। अंतर्निहित प्रसंस्करण (यानी संकलन समय, ओवरहेड ओवरहेडिंग, निष्पादन समय आदि) की दक्षता भी कम महत्वपूर्ण नहीं है क्योंकि मुख्यधारा के कंप्यूटिंग प्लेटफॉर्म सत्ता में विकसित हुए हैं।

भाषा वाक्य रचना करता है , उदाहरण के लिए, पास्कल बहुत सावधानी से तो यह एक भी पास संकलक इस्तेमाल कर सकते हैं डिजाइन किया गया था - - स्रोत से अधिक यानी एक पास और आप excutable मशीन कोड है एक प्रभाव हो। दूसरी ओर एडा ने इस पर कोई ध्यान नहीं दिया, और एडा कंपाइलर्स को लिखने के लिए बेहद मुश्किल है - एक से अधिक पास की आवश्यकता होती है। (एक बहुत अच्छा अडा कंपाइलर जो मैंने कई साल पहले इस्तेमाल किया था वह एक 8 पास कंपाइलर था। जैसा कि आप कल्पना कर सकते हैं, यह बहुत धीमा था।)

यदि आप फोरट्रान (संकलित) और बुनियादी (संकलित या संकलित) जैसी पुरानी भाषाओं को देखते हैं, तो उनके पास बहुत सख्त वाक्यविन्यास और शब्दार्थ नियम हैं। [मूल के मामले में, पुराने बिलिक नहीं हैं, आपको मूल से पहले वापस जाने की आवश्यकता है।]

दूसरी ओर, एपीएल (मस्ती का एक गुच्छा) जैसी अन्य पुरानी चीजों को देख रहे हैं, इस प्रकार की गतिशील टाइपिंग थी। यह आमतौर पर व्याख्यायित भी होता था लेकिन संकलित भी किया जा सकता था।

लीनियर सिंटैक्स एक कठिन है - अगर इसका मतलब है कि आपके पास ऐसी चीजें हैं जो वैकल्पिक हैं या इसका अनुमान लगाया जा सकता है तो इसका मतलब है कि भाषा में पर्याप्त समृद्धि है कि इसे कुंद किया जा सकता है। तब फिर से, BASIC ने कई साल पहले जब "LET" कथन वैकल्पिक हो गया था!

अब आपके द्वारा देखे जाने वाले कई विचार (उदाहरण के लिए, टाइपलेस या डायनेमिक टाइपिंग) वास्तव में बहुत पुराने हैं - पहली बार 1970 या 1980 के दशक में प्रदर्शित हुए। जिस तरह से उनका उपयोग किया जाता है, और इन विचारों को जिस भाषा में उपयोग किया जाता है वह बदल गया है और बढ़ गया है। लेकिन मौलिक रूप से, व्हाट्स न्यू का वास्तव में पुराना सामान नए कपड़े पहने हुए है।

यहाँ मेरे सिर के ऊपर से कुछ उदाहरण हैं:

  • एपीएल: डायनेमिक टाइपिंग। आम तौर पर व्याख्या की गई। 1960/1970 के दशक से आया था।
  • बुनियादी: मजबूत या गतिशील टाइपिंग। व्याख्या या संकलित। 1970 और कई परे।
  • फोरट्रान: मजबूत टाइपिंग। संकलित। 1960 या उससे पहले का।
  • Algol68: मजबूत टाइपिंग। संकलित। 1960।
  • पीएल / 1: मजबूत टाइपिंग। संकलित। 1960।
  • पास्कल: मजबूत टाइपिंग। संकलित। 1970। (लेकिन 1980 के दशक में P-System कंपाइलर JIT कंपाइलर के समान थे!)
  • डीईसी द्वारा शुरुआती दिनों में फोरट्रान और अन्य के कुछ कार्यान्वयन आंशिक रूप से संकलित और आंशिक रूप से व्याख्या किए गए थे।
  • स्मालटाक: डायनामिक टाइपिंग। बाइटकोड का संकलन जो व्याख्यायित है। 1980।
  • प्रोलॉग: अधिक विचित्रता। कार्यात्मक। संकलित (टर्बो प्रोलोग, कोई भी?)। 1980।
  • सी: मजबूत (हा हा) टाइपिंग। संकलित। 1960's..today।
  • Ada: uber-strong टाइपिंग। संकलित। 1980।
  • पर्ल: डायनेमिक टाइपिंग। (मजबूत वाक्यविन्यास)। व्याख्या की। 1990 (?)।

मैं जा सकता था।

  • नाइटपिकर कॉर्नर: जिस समय स्रोत लोड / रीड-इन होता है, उस समय कई व्याख्या की गई भाषाओं को टोकन या "बाइट संकलित" किया जाता है। यह दुभाषिया के बाद के ऑपरेशन को बहुत सरल बनाता है। कभी-कभी आप कोड के बाइट-संकलित संस्करण को सहेज सकते हैं। कभी-कभी आप नहीं कर सकते। इसकी फिर भी व्याख्या की।

अपडेट: क्योंकि मैं पर्याप्त स्पष्ट नहीं था।

टाइपिंग व्यापक रूप से भिन्न हो सकती है।

संकलन-समय निश्चित स्थिर टाइपिंग आम है (उदाहरण के लिए, C, Ada, C ++, Fortan, आदि)। यह वह जगह है जहाँ आप एक प्रकार की बात की घोषणा करते हैं और यह हमेशा के लिए इस तरह है।

डायनामिक टाइपिंग करना भी संभव है, जहां चीज़ उस प्रकार को चुनती है जो उसे सौंपा गया है। उदाहरण के लिए, PHP और कुछ प्रारंभिक BASIC, और APL, जहां आप एक पूर्णांक को एक चर में असाइन करेंगे और तब से यह पूर्णांक प्रकार था। यदि आपने बाद में इसे एक स्ट्रिंग सौंपी, तो यह एक स्ट्रिंग प्रकार था। और इसी तरह।

और फिर ढीली टाइपिंग है, उदाहरण के लिए PHP जहां आप सही मायने में विचित्र चीजें कर सकते हैं जैसे कि एक संख्यात्मक पूर्णांक (उद्धृत, इसलिए इसकी एक स्ट्रिंग) को एक चर में असाइन करें और फिर इसमें एक संख्या जोड़ें। (उदाहरण के लिए '5' + 5 का परिणाम 10 होगा)। यह विचित्र की भूमि है, लेकिन कई बार बहुत उपयोगी भी है।

कैसे ये एक भाषा में डिज़ाइन की गई विशेषताएं हैं। कार्यान्वयन सिर्फ ऐसा होता है।


13
मजबूत टाइपिंग डायनामिक टाइपिंग का प्रतिरूप नहीं है। यह कमजोर टाइपिंग का प्रतिपक्ष है। डायनेमिक टाइपिंग का प्रतिरूप स्थिर टाइपिंग है: एक में, एक प्रोग्राम में अभिव्यक्तियों के प्रकारों को स्टेटिक रूप से जाना जा सकता है (यानी प्रोग्राम को चलाए बिना); अन्य प्रकारों में केवल गतिशील रूप से पता किया जा सकता है (अर्थात प्रोग्राम को चलाया जाना चाहिए)।
आर। मार्टिनो फर्नांडीस

हाँ और दोनों BASIC और APL के कुछ वेरिएंट 1970 के दशक के उत्तरार्ध में ऐसा कर रहे थे। एपीएल प्रकार काफी नहीं हैं जैसा कि हम आज उन्हें समझते हैं (सार्वभौमिक रूप से टाइप किए गए पूर्णांक / फ्लोट जैसी चीजें हैं लेकिन वेक्टर, स्ट्रिंग्स और बहुआयामी मैट्रिक्स भी हो सकते हैं)।
जल्‍दी से जल्‍द से जल्‍दी

एक फोरट्रान दुभाषिया अभी भी व्यापक रूप से उपयोग किया जाता है (Cernlib और PAW देखें)। और इसके वंशज, ROOT को C ++ दुभाषिया पर बनाया गया है।
एसके-लॉजिक

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

@Vatine - मैं वास्तव में संकलित समय में मजबूत कहूंगा, गैर-मौजूद रन समय पर - यदि आप इसे इस तरह चाहते हैं। आप कई भाषाओं में संकेत और उनके समकक्ष का उपयोग कर सकते हैं। यह वैरिएंट रिकॉर्ड का उपयोग करके शास्त्रीय पास्कल में भी संभव है, और अडा में UNCHECKED_CONVERSION (हालांकि मुश्किल, इसके संभव) का उपयोग करके।
जल्‍दी से जल्‍द से जल्‍दी

2

मुझे लगता है कि यह दूसरा तरीका है: कार्यान्वयन सिंटैक्स पर निर्भर करता है। उदाहरण के लिए, यदि आपका सिंटैक्स प्रतिबिंब के लिए अनुमति देता है, तो कार्यान्वयन को एक रनटाइम प्रदान करना होगा जो इसका समर्थन करता है।


@IntermediateHacker: लेकिन यह जावा में है, इसलिए मुझे कमाल होना चाहिए
sehe

2

मैं आमतौर पर जल्दी_ इस बात से सहमत हूं कि आपका अवलोकन मुख्य रूप से इतिहास का परिणाम है। उस ने कहा, अंतर्निहित तर्क कुछ इस तरह से उबलता है:

The more modern a language is, the more comfortable it should be to use.

(वास्तव में कोई उद्धरण नहीं, सिर्फ मेरा अपना सूत्रीकरण।) जब मैं comfortableयहां लिखता हूं, तो आप जो कहते हैं उसे संदर्भित करता हूं best features of both। अधिक सटीक रूप से, मैं स्थिर / गतिशील टाइपिंग या सख्त / उदार वाक्य रचना के लिए या उसके खिलाफ नहीं बोलना चाहता हूं। इसके बजाय, यह महत्वपूर्ण है कि डेवलपर्स पर ध्यान केंद्रित किया जाए और भाषा के साथ काम करते समय उनका आराम-स्तर बढ़ाया जाए।

यहाँ कुछ कारण दिए गए हैं, जिनका पिछले उत्तर में उल्लेख नहीं किया गया है, जो आपको कुछ विचार प्रदान कर सकते हैं कि आप इन बातों का पालन क्यों करते हैं (और प्रोग्रामिंग लानुग विकास के इतिहास पर आधारित हैं):

  • हमारे पास इन दिनों सैकड़ों प्रोग्रामिंग लैनगेज हैं। जब कोई नया आता है, तो उसे व्यापक दर्शक कैसे मिल सकते हैं? यह मुख्य कारण है, क्यों नई भाषाएँ हमेशा डेवलपर्स के आराम-स्तर को बढ़ाने की कोशिश करती हैं। यदि भाषा एक पुरानी के रूप में ही कर सकती है, लेकिन यह बहुत आसान / सरल / अधिक सुरुचिपूर्ण / आदि कर सकती है। आप वास्तव में स्विच करने पर विचार कर सकते हैं।

  • लर्निंग कर्व उसी के साथ हाथ से जाता है। अतीत में, हमारे पास कुछ भाषाएँ थीं और सीखने के लिए निवेश करने का समय इसके लायक था। भले ही इसका मतलब है कि बहुत समय का निवेश। आराम फिर से बढ़ जाता है, यदि आप एक ऐसी भाषा के साथ आते हैं जो डेवलपर्स बहुत जल्दी सीख सकते हैं। किसी भी तरह की जटिलता (f.ex., जटिल शामिल वाक्यविन्यास) इस के लिए हानिकारक हैं, और इसलिए, नई भाषाओं में अधिक से अधिक कम हो जाते हैं।

  • तकनीकी विकास (यहां एक प्रत्यक्ष ऐतिहासिक कारण) जिम्मेदार है कि कंपाइलर बिल्डर्स अब डेवलपर आराम पर अधिक ध्यान केंद्रित कर सकते हैं। शुरुआती दिनों में, हम एक कंपाइलर का निर्माण करने में सक्षम होने के लिए खुश थे। हालाँकि, यह अक्सर भारी प्रतिबंधों को निहित करता है। जैसे-जैसे तकनीकी जानकारी बढ़ी, हम इन प्रतिबंधों को फिर से उठाने में सक्षम हुए।

इसलिए सामान्य तौर पर, प्रोग्रामिंग लैंग्वेज और कंपाइलर्स में विशिष्ट एंड-यूज़र एप्लिकेशन के समान विकास देखा गया है:

  1. प्रारंभिक चरण: यह एक ठंडी चीज है, लेकिन रक्तस्रावी धार तकनीक मुश्किल से इसे आराम / उपयोगिता की कीमत पर काम करती है / क्या नहीं।
  2. तकनीकी सुधार: हम इन चीजों को अधिक मजबूत, तेज और आसान बना सकते हैं।
  3. उपयोगकर्ता पर ध्यान केंद्रित करता है: इसी तरह Web2.0 आंदोलन उपयोगकर्ता अनुभव पर ध्यान केंद्रित करता है, नई प्रोग्रामिंग भाषाएं डेवलपर परिप्रेक्ष्य पर ध्यान केंद्रित करती हैं।

(Not a quote really, just my own formulation.)ठीक है, आपने इसे कोड के रूप में प्रारूपित किया, ना कि एक ब्लॉकचोट के रूप में, इसलिए मुझे नहीं लगता कि किसी ने सोचा था कि यह एक उद्धरण है :)
yannis

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

1
आराम भी उद्देश्य पर निर्भर करता है। वॉशिंग मशीन नियंत्रक के लिए 8k एम्बेडेड माइक्रो पर PHP या प्रोलॉग चलाना प्रोग्राम को "आरामदायक" हो सकता है, लेकिन वास्तव में इसे फिट बनाने और स्वीकार्य प्रदर्शन के साथ चलाने के लिए कठिन है।
जल्‍दी से जल्‍दी से जल्‍दी

0

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

जैसा कि कंपाइलर होशियार हो जाते हैं, वे उन संभावित भाषाओं के लिए निष्पादन योग्य कोड उत्पन्न करने के लिए पर्याप्त जानकारी का अनुमान लगाने या प्रोफाइल करने में सक्षम हो सकते हैं, यहां तक ​​कि उन भाषाओं के लिए भी, जो स्पष्ट रूप से उन निर्णयों को उजागर या विवश करने के लिए डिज़ाइन नहीं किए गए थे।

हालाँकि, ऐसी भाषाएँ जहाँ कोड (evalString ()) रनटाइम पर बनाया जा सकता है या दर्ज किया जा सकता है (और अन्य सामान जो कंपाइलर घटा या अनुमान नहीं कर सकता है) को रन-टाइम पर उपलब्ध होने के प्रयासों के साथ एक दुभाषिया या JIT कंपाइलर की आवश्यकता हो सकती है। उन्हें संकलित करें।

अतीत में, एक प्रोग्रामिंग भाषा और इसका कार्यान्वयन विकसित हो सकता है ताकि कुछ हार्डवेयर अवरोधों को फिट किया जा सके, जैसे कि दुभाषिया 4k या 16k में फिट हो सकता है, या क्या कंपाइलर CPU समय के एक मिनट से भी कम समय में समाप्त हो सकता है। जैसे-जैसे मशीनें तेज़ होती जाती हैं, यह संभव हो गया है (पुनः) कुछ पूर्व में व्याख्या किए गए कार्यक्रमों को तेजी से संकलित करें जैसा कि प्रोग्रामर रिटर्न कुंजी को हिट कर सकता है, या पूर्व संकलित प्रोग्राम सोर्स कोड को तेजी से व्याख्या कर सकता है, जो पुराने हार्डवेयर की तुलना में अनुकूलित संकलित निष्पादन योग्य चल सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.