कंप्यूटर वास्तव में आपके द्वारा लिखे गए कोड को नहीं चला सकते हैं जावास्क्रिप्ट (या उस मामले के लिए कोई अन्य भाषा)। कंप्यूटर केवल मशीन कोड चला सकते हैं। मशीन कोड जिसे एक विशेष कंप्यूटर चला सकता है, उस प्रोसेसर के भीतर परिभाषित किया जाता है जो उन कमांड को चलाने वाला है और विभिन्न प्रोसेसर के लिए अलग हो सकता है।
जाहिर है, लेखन मशीन कोड लोगों के लिए करना मुश्किल था (125 एक ऐड कमांड है या यह 126 या शायद 27 है)। उस समस्या को हल करने के लिए जिसे असेंबली लैंग्वेज के रूप में जाना जाता है। इन भाषाओं ने आदेशों के लिए अधिक स्पष्ट नामों का उपयोग किया (जैसे जोड़ने के लिए ADD) और इस प्रकार सटीक मशीन कोड को याद रखने की आवश्यकता के साथ दूर किया। असेंबली भाषाओं का अभी भी एक विशेष प्रोसेसर और मशीन कोड के साथ एक से एक संबंध है जो कंप्यूटर उन आदेशों को परिवर्तित करता है।
असेंबली लैंग्वेजेज को संकलित या व्याख्या किया जाना चाहिए
इस पर बहुत जल्दी एहसास हुआ कि लिखना आसान है भाषाओं जरूरत थी और यह कि कंप्यूटर का उपयोग उन मशीन कोड निर्देशों में अनुवाद करने के लिए किया जा सकता है जिन्हें कंप्यूटर वास्तव में समझ सकता है। इस अनुवाद के साथ दो दृष्टिकोण लिए जा सकते थे और दोनों विकल्पों को चुना गया था (या तो एक या दूसरे का इस्तेमाल की जा रही भाषा के आधार पर किया जाएगा और जहां इसे चलाया जा रहा है)।
एक संकलित भाषा वह है जहां एक बार कार्यक्रम लिखा गया है आप एक प्रोग्राम के माध्यम से कोड को फ़ीड करते हैं जिसे ए संकलक और जो प्रोग्राम का एक मशीन कोड संस्करण तैयार करता है। जब आप प्रोग्राम को चलाना चाहते हैं तब आप मशीन कोड संस्करण को कॉल करते हैं। यदि आप परिवर्तित किए गए कोड का परीक्षण करने में सक्षम होने से पहले उस प्रोग्राम में परिवर्तन करते हैं, जिसे आपको उसे पुन: स्थापित करने की आवश्यकता है।
एक व्याख्या की गई भाषा वह है जिसमें निर्देश आपके द्वारा मशीन कोड में लिखे गए से बदल दिए जाते हैं क्योंकि प्रोग्राम चलाया जा रहा है। एक व्याख्या की गई भाषा मूल रूप से कार्यक्रम स्रोत से एक निर्देश प्राप्त करती है, इसे मशीन में परिवर्तित करती है कोड, उस मशीन कोड को चलाता है और फिर दोहराने के लिए स्रोत से अगला निर्देश देता है प्रक्रिया।
संकलन और व्याख्या पर दो वेरिएंट
एक संस्करण एक दो-चरण प्रक्रिया का उपयोग करता है। इस संस्करण के साथ, आपके कार्यक्रम का स्रोत सीधे मशीन कोड में नहीं बल्कि संकलित है इसके बजाय एक विधानसभा जैसी भाषा में परिवर्तित किया जाता है जो अभी भी विशेष से स्वतंत्र है प्रोसेसर। जब आप कोड को चलाना चाहते हैं तो प्रोसेसर के लिए एक दुभाषिया के माध्यम से कोड संकलित करता है ताकि मशीन कोड उस प्रोसेसर के लिए उपयुक्त हो सके। यह दृष्टिकोण प्रोसेसर स्वतंत्रता को बनाए रखते हुए संकलन के कई फायदे हैं क्योंकि एक ही संकलित कोड को कई अलग-अलग प्रोसेसर द्वारा व्याख्या किया जा सकता है। जावा एक भाषा है जो अक्सर इस प्रकार का उपयोग करती है।
दूसरे संस्करण को जस्ट इन टाइम कंपाइलर (या JIT) कहा जाता है। इस दृष्टिकोण के साथ, आपने अपना कोड लिखने के बाद वास्तव में कंपाइलर नहीं चलाया है। इसके बजाय, जब आप कोड चलाते हैं तो स्वचालित रूप से होता है। जस्ट इन टाइम कंपाइलर का उपयोग करके कोड को स्टेटमेंट द्वारा व्याख्या नहीं किया जाता है, यह सभी को एक में संकलित किया जाता है हर बार जब इसे चलाने के लिए बुलाया जाता है और तब संकलित संस्करण जो इसे बनाया जाता है, जो मिलता है Daud। यह दृष्टिकोण ऐसा दिखता है कि कोड की व्याख्या की जा रही है सिवाय इसके कि त्रुटियों के बजाय केवल जब कथन के साथ पाया जा रहा है त्रुटि तक पहुँच गया है, संकलक द्वारा किसी भी त्रुटि का पता लगाया कोड में से कोई भी उस बिंदु तक कोड के बजाय चलाया जा रहा है Daud। पीएचपी एक ऐसी भाषा का उदाहरण है जो आमतौर पर सिर्फ समय संकलन में उपयोग होती है।
जावास्क्रिप्ट संकलित या व्याख्या की गई है?
तो अब हम जानते हैं कि कोड और संकलित कोड का अर्थ क्या है, हमें अगले सवाल का जवाब देने की आवश्यकता है कि इसका सभी को जावास्क्रिप्ट के साथ क्या करना है? इस पर निर्भर करते हुए कि आप अपना जावास्क्रिप्ट कहां चलाते हैं, कोड को संकलित या व्याख्यायित किया जा सकता है या उल्लेखित अन्य दो वेरिएंट में से किसी एक का उपयोग किया जा सकता है। अधिकांश समय आप हैंएक वेब ब्राउज़र में अपने जावास्क्रिप्ट को चलाने और आमतौर पर जावास्क्रिप्ट की व्याख्या की जाती है।
व्याख्या की गई भाषाएं आमतौर पर संकलित भाषाओं की तुलना में धीमी होती हैं। इसके लिए दो कारण हैं। सबसे पहले कोड की वास्तव में व्याख्या की जानी चाहिए, इससे पहले कि इसे चलाया जा सके और दूसरा, जो है हर बार यह होने के लिए कि कथन को चलाया जाना है (न केवल हर बार जब आप जावास्क्रिप्ट चलाते हैं, लेकिन यदि यह अंदर है तो ए पाश फिर इसे लूप के चारों ओर हर बार किया जाना चाहिए)। इसका अर्थ है कि जावास्क्रिप्ट में लिखा गया कोड कई अन्य भाषाओं में लिखे गए कोड की तुलना में धीमा होगा।
यह जानने में हमारी मदद करता है कि जावास्क्रिप्ट हमारे लिए सभी वेब ब्राउज़रों में चलाने के लिए एकमात्र भाषा कहां उपलब्ध है? जावास्क्रिप्ट दुभाषिया ही वेब ब्राउज़र में बनाया गया है जावास्क्रिप्ट में लिखा नहीं है। इसके बजाय, यह किसी अन्य भाषा में लिखा गया है जिसे तब संकलित किया गया था। इसका मतलब यह है कि आप अपने जावास्क्रिप्ट को तेजी से चला सकते हैं यदि आप किसी भी कमांड का लाभ उठा सकते हैं जो जावास्क्रिप्ट प्रदान करता है जो आपको जावास्क्रिप्ट इंजन में ही कार्य को लोड करने की अनुमति देता है।
जावास्क्रिप्ट को चलाने के लिए तेजी से चलाने के उदाहरण हैं
इसका एक उदाहरण है कि कुछ लेकिन सभी ब्राउज़रों ने JavaScript इंजन के भीतर एक डॉक्यूमेंट .getElementsByClassName () पद्धति को लागू नहीं किया है जबकि अन्य को ऐसा करना अभी बाकी है। जब हमें इस विशेष कार्यक्षमता की आवश्यकता होती है तो हम उन ब्राउज़रों में कोड को तेजी से चला सकते हैं जहां जावास्क्रिप्ट इंजन इसे सुविधा का उपयोग करके प्रदान करता है यह देखने के लिए कि क्या विधि पहले से मौजूद है और केवल जावास्क्रिप्ट इंजन के लिए इसे प्रदान नहीं करता है, जब जावास्क्रिप्ट में उस कोड का अपना संस्करण बनाना होश में है हमें। जहां जावास्क्रिप्ट इंजन उस कार्यक्षमता को प्रदान करता है, उसे तेजी से चलाना चाहिए यदि हम जावास्क्रिप्ट में लिखे गए अपने स्वयं के संस्करण को चलाने के बजाय इसका उपयोग करते हैं। यही बात किसी भी प्रसंस्करण पर लागू होती है जो जावास्क्रिप्ट इंजन हमें सीधे कॉल करने के लिए उपलब्ध कराता है।
ऐसे उदाहरण भी होंगे जहां जावास्क्रिप्ट एक ही अनुरोध करने के कई तरीके प्रदान करता है। उन उदाहरणों में, जानकारी तक पहुँचने के तरीकों में से एक अन्य की तुलना में अधिक विशिष्ट हो सकता है। उदाहरण के लिए document.getElementsByTagName ('table') [0] .tBodies और document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') दोनों। वेब पेज में पहली तालिका में tbody टैग के एक ही नोडेलिस्ट को पुनः प्राप्त करें, हालांकि इनमें से सबसे पहले प्राप्त करने के लिए एक विशिष्ट विवरण है tbody टैग जहां दूसरा पहचानता है कि हम एक पैरामीटर में tbody टैग प्राप्त कर रहे हैं और अन्य मूल्यों को दूसरे को पुनः प्राप्त करने के लिए प्रतिस्थापित किया जा सकता है टैग। अधिकांश ब्राउज़रों में, कोड का छोटा और अधिक विशिष्ट संस्करण तेजी से (कुछ उदाहरणों में) चलेगा दूसरे संस्करण की तुलना में बहुत तेज़) और इसलिए यह छोटे और अधिक विशिष्ट का उपयोग करने के लिए समझ में आता है संस्करण। यह कोड को पढ़ने और बनाए रखने में आसान बनाता है।
अब इनमें से कई मामलों में, प्रसंस्करण समय में वास्तविक अंतर बहुत कम होगा और यह तभी होगा जब आप एक साथ कई ऐसे कोड विकल्प जोड़ते हैं जिससे आपको अपने कोड में लगने वाले समय में कोई फर्क नहीं पड़ेगा Daud। यह काफी दुर्लभ है, हालांकि इसे तेजी से चलाने के लिए आपके कोड को बदलना कोड को बनाए रखने के लिए काफी लंबा या कठिन बनाने वाला है, और अक्सर रिवर्स सच होगा। अतिरिक्त लाभ यह भी है कि जावास्क्रिप्ट इंजन के भविष्य के संस्करणों को बनाया जा सकता है जो कि अधिक विशिष्ट संस्करण को भी गति देता है आगे ताकि विशिष्ट संस्करण का उपयोग करने का मतलब यह हो सकता है कि आपका कोड भविष्य में तेजी से चलेगा, इसके बिना आपको कुछ भी बदलना होगा।