📘 CodingMarble Learn

प्रोग्रामिंग भाषाएँ और अनुवादक (Translators)

CPU सिर्फ़ मशीन कोड चला सकता है: बाइनरी निर्देश। निम्न-स्तरीय भाषाएँ हैं मशीन कोड और असेंबली (LOAD, ADD जैसे छोटे शब्द, हर एक मशीन निर्देश के बराबर)। Python, Java, C जैसी उच्च-स्तरीय भाषाएँ लोगों के लिए पढ़ने-लिखने में आसान हैं, और एक पंक्ति कई मशीन निर्देश बन सकती है। अनुवादक कोड बदलते हैं: असेंबलर असेंबली को मशीन कोड में; कंपाइलर पूरे प्रोग्राम को चलने से पहले एक्ज़ीक्यूटेबल में; इंटरप्रेटर एक-एक पंक्ति अनुवाद करके चलाता है। कुछ भाषाएँ बाइटकोड बनाती हैं, जिसे वर्चुअल मशीन चलाती है।

🎬 कदम-दर-कदम कहानी

  1. CPU सिर्फ़ मशीन कोड समझता है: 0 और 1 के पैटर्न। इसके सिवा कुछ भी सीधे नहीं चलता।
  2. असेंबली भाषा में LOAD, ADD जैसे छोटे शब्द होते हैं। हर शब्द एक मशीन निर्देश है। असेंबलर अनुवाद करता है।
  3. Python जैसी उच्च-स्तरीय भाषाएँ अंग्रेज़ी जैसी दिखती हैं। पढ़ना आसान है, और एक पंक्ति कई मशीन निर्देश बनती है।
  4. कंपाइलर पूरा प्रोग्राम एक साथ अनुवाद करके एक्ज़ीक्यूटेबल फ़ाइल बनाता है। फिर फ़ाइल बार-बार तेज़ चलती है।
  5. इंटरप्रेटर एक पंक्ति अनुवाद करता है, चलाता है, फिर अगली पर जाता है। पहली ग़लती पर रुक जाता है।
  6. खुद आज़माइए: अनुवादक चुनिए, ग़लती डालिए या हटाइए, और चलाइए दबाकर देखिए।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

CPU सीधे Python क्यों नहीं पढ़ सकता?

CPU के सर्किट सिर्फ़ बाइनरी निर्देश पैटर्न पर काम करते हैं। कदम 1 में सिर्फ़ बिट की पंक्तियाँ CPU तक पहुँचती हैं।

क्या असेंबली और मशीन कोड एक ही हैं?

नहीं, पर बहुत पास हैं: हर न्यूमॉनिक एक मशीन निर्देश है। असेंबलर 1 के बदले 1 बदलता है, जैसा कदम 2 में।

जब अनुवाद करना ही है तो उच्च-स्तरीय कोड आसान क्यों?

क्योंकि लोग उसे बहुत जल्दी लिखते और सुधारते हैं। हर पंक्ति से कई मशीन निर्देश बनाने का कठिन काम अनुवादक करता है, जैसा कदम 3 में।

कंपाइल किया प्रोग्राम तेज़ क्यों चलता है?

अनुवाद एक ही बार, चलने से पहले होता है। उसके बाद फ़ाइल शुद्ध मशीन कोड है, अनुवाद में समय नहीं जाता। कदम 4 में नारंगी फ़ाइल देखिए।

शुरुआती लोग अक्सर इंटरप्रेटेड भाषाएँ क्यों लेते हैं?

इंटरप्रेटर ग़लती वाली पंक्ति पर ही रुकता है, तो ढूँढना और सुधारना आसान है। कदम 5 में वह पंक्ति 2 पर रुकता है।

कंपाइल होने वाले प्रोग्राम में ग़लती हो तो?

कंपाइलर ग़लतियों की सूची देता है और एक्ज़ीक्यूटेबल नहीं बनती, तो कुछ नहीं चलता। कदम 6 में ग़लती चालू करके कंपाइलर आज़माइए।

निम्न-स्तरीय भाषाएँ: मशीन कोड और असेंबली

मशीन कोड ही वह भाषा है जिसे CPU चला सकता है। हर निर्देश एक बाइनरी पैटर्न है, जैसे 10110001। इसका एक भाग बताता है क्या करना है (ऑपकोड), दूसरा भाग किस पर (ऑपरेंड)।

असेंबली भाषा बाइनरी की जगह छोटे याद रखने वाले शब्द, न्यूमॉनिक (mnemonics), इस्तेमाल करती है: LOAD, ADD, STORE। हर असेंबली निर्देश एक मशीन निर्देश के बराबर है (1 : 1)।

निम्न-स्तरीय कोड क्यों?

कमियाँ

उच्च-स्तरीय भाषाएँ

उच्च-स्तरीय भाषाएँ (Python, Java, C#, C, JavaScript) अंग्रेज़ी जैसे शब्द और गणित के चिह्न इस्तेमाल करती हैं। total = price * 3 जैसी एक पंक्ति कई मशीन निर्देश बन सकती है।

उच्च-स्तरीयनिम्न-स्तरीय
लोगों के लिए आसान?हाँनहीं
अलग CPU पर चले?हाँ, अनुवाद के बाद (पोर्टेबल)नहीं, एक CPU परिवार
हार्डवेयर पर नियंत्रणकमसीधा
अनुवाद चाहिए?हाँ (कंपाइलर या इंटरप्रेटर)असेंबली: हाँ (असेंबलर); मशीन कोड: नहीं

आज ज़्यादातर सॉफ़्टवेयर उच्च-स्तरीय भाषाओं में लिखा जाता है, क्योंकि प्रोग्रामर तेज़ी से और कम ग़लतियों के साथ काम करते हैं।

अनुवादक: असेंबलर, कंपाइलर और इंटरप्रेटर

असेंबलर

असेंबली भाषा को मशीन कोड में बदलता है, एक निर्देश के बदले एक।

कंपाइलर

इंटरप्रेटर

बाइटकोड और वर्चुअल मशीन

कुछ भाषाएँ दोनों तरीके मिलाती हैं। Java (और अंदर से Python भी) पहले सोर्स कोड को बाइटकोड में बदलती हैं: बीच का सरल कोड जो किसी एक CPU से बँधा नहीं। फिर हर डिवाइस पर एक वर्चुअल मशीन (जैसे Java Virtual Machine) बाइटकोड चलाती है। इससे पोर्टेबिलिटी मिलती है: वही बाइटकोड Windows, Android या Linux पर चलता है, बस वहाँ वर्चुअल मशीन होनी चाहिए।

खुद आज़माइए: इंटरप्रेटर बनिए

दोस्त के लिए 5 पंक्तियों का "प्रोग्राम" लिखिए (1. खड़े हो। 2. दो ताली। 3. कूदोो। 4. बैठो। 5. मुस्कुराओ)। पहले इंटरप्रेटर बनिए: एक-एक पंक्ति पढ़कर कीजिए और वर्तनी की ग़लती पर रुकिए। फिर कंपाइलर बनिए: पहले पाँचों पंक्तियाँ पढ़िए, सारी ग़लतियों की सूची बनाइए और ठीक होने के बाद ही कीजिए। किस तरीके से ग़लती जल्दी मिली? ठीक होने के बाद कौन तेज़ चला?

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. एक कंपनी गेम बेचती है पर ग्राहकों को सोर्स कोड नहीं दिखाना चाहती। कौन-सा अनुवादक लें?

कंपाइलर। यह एक्ज़ीक्यूटेबल फ़ाइल बनाता है जो सोर्स कोड के बिना बाँटी जा सकती है और तेज़ चलती है।

2. एक विद्यार्थी प्रोग्रामिंग सीख रहा है और ग़लतियाँ जल्दी ढूँढना चाहता है। कौन-सा अनुवादक बेहतर है?

इंटरप्रेटर। यह एक-एक पंक्ति चलाता है और पहली ग़लती पर रुककर जगह दिखाता है, तो तुरंत सुधारकर फिर चला सकते हैं।

3. डिवाइस ड्राइवर असेंबली में लिखने का एक कारण बताइए।

असेंबली से हार्डवेयर और रजिस्टर पर सीधा नियंत्रण मिलता है और कोड छोटा व तेज़ बनता है, जो ड्राइवर को चाहिए।

4. एक ही Java बाइटकोड अलग CPU वाले फ़ोन और लैपटॉप पर कैसे चलता है?

बाइटकोड किसी एक CPU का मशीन कोड नहीं है। हर डिवाइस की अपनी Java Virtual Machine उसे अपने मशीन कोड में बदलती है।

आम गलतियाँ

अभ्यास क्विज़

1. CPU कौन-सी भाषा सीधे चला सकता है?
2. असेंबली को मशीन कोड में कौन बदलता है?
3. कौन-सा अनुवादक एक्ज़ीक्यूटेबल फ़ाइल बनाता है?
4. ग़लती मिलने पर इंटरप्रेटर:
5. उच्च-स्तरीय भाषा का एक फ़ायदा:

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

कंपाइलर और इंटरप्रेटर में क्या अंतर है?

कंपाइलर पहले पूरा प्रोग्राम अनुवाद करके एक्ज़ीक्यूटेबल बनाता है; इंटरप्रेटर एक-एक पंक्ति अनुवाद करके चलाता है।

असेंबलर क्या करता है?

असेंबली भाषा के न्यूमॉनिक को मशीन कोड में बदलता है, एक निर्देश के बदले एक।

Python कंपाइल होती है या इंटरप्रेट?

आमतौर पर इसे इंटरप्रेटेड कहते हैं। अंदर से सामान्य Python पहले कोड को बाइटकोड में बदलती है, फिर वर्चुअल मशीन उसे चलाती है।

यह कहाँ पढ़ाया जाता है

इंग्लैंडYear 113.4 Computer systems
इंग्लैंडYear 124.6 Fundamentals of computer systems

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ