प्रोग्रामिंग लैंग्वेज क्या है यह कैसे कार्य करती है

Programming Language Image

संसार में हजारों तरह की लैंग्वेज अलग-अलग तरह से बोली व लिखी जाती हैं। इनमें से कुछ लैंग्वेज किन्‍हीं देश या प्रदेश त‍क ही सीमित हैं। जबकि अंग्रेजी अंतर्राष्‍ट्रीय रूप से बोली जाने वाली लैंग्वेज है। इसलिए कंप्‍यूटर में प्रोग्रामिंग की लैंग्वेज के रूप में अंग्रेजी का प्रयोग किया जाता है।

What is Programming Language?

प्रोग्रामिंग भाषा (Programming Language) कंप्यूटर प्रोग्राम बनाने के लिए उपयोग किए जाने वाले नियमों (commands) का एक समूह है।

प्रोग्रामिंग भाषा मशीन को निर्देशों को संप्रेषित  (communicate) करने का एक तरीका है। कई अलग-अलग प्रकार की प्रोग्रामिंग भाषाएं हैं, जिनमें से प्रत्येक का अपना सिंटैक्स  (syntax) और शब्दार्थ  (semantics) होता है।

प्रोग्रामिंग लैंग्वेज कंप्यूटर आधारित भाषाएं हैं, जो प्रोग्रामर्स को कंप्यूटर के अनुसरण के लिए निर्देश लिखने की अनुमति देती हैं। ये निर्देश कंप्यूटर को बताते हैं कि क्या करना है और कुछ कार्यों को कैसे करना है। प्रोग्रामिंग भाषाएं उनके सिंटैक्स (Syntax), शब्दार्थ (semantics) और प्रकार प्रणाली (type system) के आधार पर भिन्न होती हैं।

  • सिंटेक्स (Syntax), कोड को लिखे जाने के तरीके को संदर्भित करता है|
  • शब्दार्थ (semantics), कोड के अर्थ को संदर्भित करता है।
  • टाइप सिस्टम (type system) यह निर्धारित करता है कि क्या प्रोग्राम स्थिर रूप से टाइप किया गया है| (कंपाइलर जांचता है कि क्या वेरिएबल में सही डेटा टाइप हैं) या dynamically रूप से टाइप किया गया है।
  • C++, Java, Python, Ruby, PHP, JavaScript, Perl और अन्य सहित कई अलग-अलग प्रोग्रामिंग भाषाएं हैं।

प्रोग्रामिंग भाषा का इतिहास (History of programming language)

प्रोग्रामिंग लैंग्वेज का एक लंबा और जटिल इतिहास है। पहली प्रोग्रामिंग लैंग्वेज 1843 में एक अंग्रेजी गणितज्ञ और लेखक एडा लवलेस द्वारा बनाई गई थी। उसने चार्ल्स बैबेज के analytical engine के लिए पहला एल्गोरिथम विकसित किया था।

पहले तो प्रोग्रामिंग लैंग्वेज का प्रयोग सिर्फ उपकरणों (devices) के साथ तेज़ी से काम करने के लिए किया जाता था| लेकिन समय के साथ, उपयोगकर्ताओं के लिए प्रोग्रामिंग लैंग्वेज शक्तिशाली टूल में विकसित हो गई हैं जो विशिष्ट एप्लिकेशन (sophisticated application) और सिस्टम बनाने की सुविधा प्रदान करता है।


1. BASIC – बेसिक भाषा को 1964 में MIT में डार्टमाउथ कॉलेज के प्रोफेसर विलियम एफ गिल्बर्ट जूनियर द्वारा बनाया गया था, जो एक ऐसी सरल प्रोग्रामिंग भाषा बनाना चाहते थे जिसे छात्र आसानी से समझ सकें। उन्होंने अपनी रचना का नाम “Beginner’s All-purpose Symbolic Instruction Code” (BASIC) शब्दों के पहले अक्षरों के नाम पर रखा। 1965 में, उन्होंने अपनी पहली पुस्तक, “प्रोग्रामिंग का परिचय” प्रकाशित की, जहाँ उन्होंने दुनिया को उस शब्द से परिचित कराया जिसे आज हम बेसिक के रूप में जानते हैं। 1966 में, उन्होंने कंप्यूटर प्रोग्रामिंग यूजिंग बेसिक नामक पुस्तक प्रकाशित की।

2. C Programming – C को 1969 में बेल लैब्स में डेनिस रिची, केन थॉम्पसन और ब्रायन कर्निघन द्वारा विकसित किया गया था। C को मूल रूप से यूनिक्स सिस्टम के लिए लिखा गया था। C एक general purpose programming language है जो आज भी व्यापक रूप से उपयोग की जाती है। सी एक compile भाषा है जिसका अर्थ है कि यह C में लिखे गए कोड को लेता है और इसे मशीन कोड में compile करता है। प्रारंभ में इसे B बेल लैंग्वेज के रूप में जाना जाता था। इसे पिछली लैंग्वेजों की तुलना में कोडिंग को अधिक सुलभ, तेज और अधिक कुशल बनाने के लिए डिज़ाइन किया गया था।

3. COBOL – Vassar’s Grace Murray Hopper ने 1959 में COBOL बनाया। COBOL डेटा क्षमता के प्रबंधन (management) के लिए सामान्य व्यापार(business)-उन्मुख(oriented) लैंग्वेज(language) के लिए उपयोग में लाया जाता है। कोबोल मुख्य रूप से व्यापार के लिए उपयोग बनाया गया है।

4. FORTRAN – जॉन बैकस ने 1958 में आईबीएम में FORTRAN बनाया। FORTRAN को संख्यात्मक (numerical) एल्गोरिदम के कोड करने के लिए एक उच्च स्तरीय लैंग्वेज(high level language) होने के लिए डिज़ाइन किया गया था, जिसने प्रोग्रामर को तर्कसंगत (logical) रूप से प्रोग्राम लिखने की अनुमति दी थी।

5. PASCAL – पास्कल को 1968 में निकलॉस विर्थ (Niklaus Wirth) द्वारा विकसित किया गया था। वह एक ऐसी भाषा बनाना चाहते थे जो सीखने और उपयोग में आसान हो। पास्कल को एक general purpose programming language के रूप में डिजाइन किया गया था। यह पहली उच्च स्तरीय भाषा थी। विर्थ एक ऐसी भाषा बनाना चाहते थे जहां प्रोग्रामर निम्न-स्तरीय विवरणों की चिंता किए बिना प्रोग्राम लिख सकें। पास्कल को लोगों को कंप्यूटर प्रोग्राम करने में मदद करने के लिए डिज़ाइन किया गया था।

6. ALGOL 60 – अल्गोल 60 को 1959 में टोनी होरे और गेराल्ड जे सुस्मान (Tony Hoare and Gerald Jay Sussman) द्वारा बनाया गया था। अल्गोल 60 को एक शक्तिशाली भाषा के रूप में डिजाइन किया गया था। यह एक ऐसी भाषा थी जो जटिल गणनाओं को संभाल सकती थी। एल्गोल 60 को पहली ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज माना जाता है।


7. C++ Programming – C++ को 1979 में Bjarne Stroustrup द्वारा बनाया गया था। C++ एक general purpose programming language है जो C के समान है। C++ एक class आधारित भाषा है। इसका मतलब है कि objects में class होते हैं|

8. Java – जावा को 1995 में James Gosling द्वारा बनाया गया था। Java एक general purpose programming language है जो मोबाइल उपकरणों सहित कई अलग-अलग प्लेटफार्मों पर चलता है। जावा एक compile भाषा है जिसका अर्थ है कि यह जावा में लिखे गए कोड को लेता है और इसे मशीन कोड में compile करता है।

9. JavaScript – जावास्क्रिप्ट को ब्रेंडन ईच (Brendan Eich) द्वारा 1995 में बनाया गया था। जावास्क्रिप्ट एक स्क्रिप्टिंग भाषा है जिसका उपयोग आमतौर पर वेब पेजों के लिए किया जाता है। जावास्क्रिप्ट एक dynamic भाषा है जिसका अर्थ है कि इसे compile करने की आवश्यकता नहीं है। जावास्क्रिप्ट एक interpreted language है जिसका अर्थ है कि यह स्क्रिप्ट को लाइन दर लाइन पढ़ता है।

आज, दर्जनों प्रोग्रामिंग लैंग्वेज उपलब्ध हैं,जटिल सॉफ्टवेयर प्रोग्राम के लिए सरल स्क्रिप्ट बनाने के लिए इन लैंग्वेजों का उपयोग किया जाता हैं। भविष्य में विशेष रूप से एआई (AI) और मशीन लर्निंग कार्यों (application) के लिए और भी प्रोग्रामिंग लैंग्वेजएं देखने को मिलेगी।

प्रोग्रामिंग भाषा की श्रेणियाँ (Categories of programming language)

सामान्यतः हम प्रोग्रामिंग लैंग्वेज को निम्न प्रकार से विभाजित कर सकते हैं

  1. Low Level Programming Language
  2. Assembly Programming Language
  3. High level Programming language

1. लो लेवल लैंग्वेज /मशीन लैंग्वेज (Low Level Programming Language)

निम्न-स्तरीय भाषा को निम्न माना जाता है क्योंकि यह मशीन के स्तर पर जाती है और यह निर्धारित कर सकती है कि कंप्यूटर के हार्डवेयर तत्व वास्तव में कैसे इंटरैक्ट करते हैं। इन निम्न-स्तरीय भाषाओं को हार्डवेयर कंपोनेंट्स और उनके कॉन्फ़िगरेशन के विस्तृत ज्ञान की आवश्यकता होती है। मशीन स्तर भाषा और असेंबली भाषा को निम्न-स्तरीय भाषाओं के अंतर्गत वर्गीकृत किया जाता है।

मशीन भाषा को कंप्यूटर की प्राकृतिक भाषा माना जाता है, जिसे इलेक्ट्रॉनिक मशीनों द्वारा सीधे पहचाना जा सकता है। यह एक गैर-पोर्टेबल और मशीन पर निर्भर भाषा है जिसमें केवल दो बाइनरी नंबर 0 और 1 शामिल हैं। कंप्यूटर में प्रत्येक निर्देश बाइनरी कोड के रूप में मौजूद है। हालांकि, एक बाइनरी भाषा में एक कंप्यूटर को निर्देश देना काफी कठिन है, जिसका अर्थ है कि बाइनरी भाषा में कंप्यूटर के साथ बातचीत करना या मशीन स्तर की भाषा में प्रोग्राम लिखना। मशीन की भाषा में लेखन, परीक्षण और डिबगिंग की गति धीमी है और अव्यवस्थित त्रुटियां बहुत आम हैं। मशीन की भाषा उस हार्डवेयर प्लेटफ़ॉर्म के हार्डवेयर डिज़ाइन द्वारा परिभाषित की जाती है। यह थकाऊ और समय लेने वाली है।

निम्न-स्तरीय भाषा का एक और प्रकार असेंबली भाषा है। इस भाषा में प्रोग्रामर उन कमांड्स का उपयोग करते हैं जो सामान्य अंग्रेजी से थोड़े मिलते-जुलते हैं जो कुछ हद तक समझ में आता है और प्रोग्रामर द्वारा व्याख्या की जाती है। प्रोग्रामों का निर्माण 0 और 1 के बजाय अल्फ़ान्यूमेरिक प्रतीकों (Mnemonics के रूप में भी जाना जाता है) का उपयोग करके किया जाता है। इसमें ADD, SUB, MUL, DIV, RLC और RAL प्रतीक या Mnemonics के रूप में शामिल हैं।

यद्यपि मशीन भाषा के अलावा किसी अन्य भाषा में लिखे गए प्रत्येक प्रोग्राम का मशीनी भाषा में ट्रांसलेट किया जाता है। असेंबलर का उपयोग गैर-मशीन भाषा को मशीन भाषा में ट्रांसलेट करने के लिए इस तरह के संचालन के लिए किया जाता है। हर प्रोसेसर अपनी असेंबली भाषा के साथ सक्षम होता है जैसे कि 8085, 8086, 80186 प्रोसेसर की अपनी असेंबली भाषा होती है।

मशीन लैंग्वेज कैसे कार्य करती है ? (How machine language works?)

कंप्‍यूटर हमारे आदेशों के अनुसार कार्य करता है लेकिन मशीन होने के कारण हमारे आदेशों को समझने के लिए वह पहले उन्‍हें मशीन लैंग्‍वेज़ में बदलता है। जैसा कि हम पढ़ चुके हैं, मशीन लैंग्‍वेज़ का अर्थ है किसी भी जानकारी को विद्युत पल्‍स होने या न होने यानि क्रमश: 0 व 1 में बदल लेना। प्रत्‍येक कंप्‍यूटर का मशीन कोड उसमें प्रयोग की जाने वाली चिप द्वारा निर्धारित होता है। मशीन कोड में दिये गये आदेश को हम एक उदाहरण से समझ सकते है।

मान लीजिए कि मशीन कोड का एक आदेश 0011, 1000, 1001 है। इसमें पहले ‘निब्‍बल’ (चार अंकों) 0011 का अर्थ है ‘जोड़ो’। दूसरे निब्‍बल 1000 का अर्थ है 8 और तीसरे निब्‍बल 1001 का अर्थ है 9। इस तरह इस आदेश का अर्थ है कि लोकेशन संख्‍या 8 के डेटा को लोकेशन संख्‍या 9 के डेटा से जोड़ कर (Cumulative result) को लोकेशन संख्‍या 8 पर लिखिए। कंप्‍यूटर की सेन्‍ट्रल प्रॅासेसिंग यूनिट इन बाइनरी संकेतो को विद्युत पल्‍सों (Power pulse) के होने या न होने के अनुसार ग्रहण कर लेता है। कंप्‍यूटर की क्लॉक से ये पल्‍स जारी होती हैं जो फिर इलेक्‍ट्रॉनिक गेट्स (Gates) से गुजरती हैं। कंप्‍यूटर में एक सेकंड में औसतन 8 मेगाहर्ट्ज यानि 80 लाख पल्‍स जारी होती है।

मशीन कोड के अनुदेश कैसे बनाये जाते हैं व कंप्‍यूटर कैसे काम करता है, इसके लिए हम सेन्‍ट्रल प्रॉसेसिंग यूनिट के बारे में कुछ समझेंगे। सेन्‍ट्रल प्रॉसेसिंग यूनिट के निम्‍न भाग इस काम में अलग-अलग भूमिकायें निभाते हैं-

  • अं‍कगणितीय और लॉजिकल यूनिट (ALU)
  • मेन मेमोरी
  • कंट्रोल यूनिट
  • डिजिटल क्लॉक
  • रजिस्‍टर

रि‍जस्‍टर भी चार तरह के होते हैं-

  • मेमोरी डेटा रजिस्‍टर
  • करैंट इन्‍स्‍ट्रक्‍शन रजिस्‍टर
  • मेमोरी ऐर्डेस रजिस्‍टर
  • सीक्‍वेंस कन्‍ट्रोल रजिस्‍टर

डेटा पर काम करते समय उन्‍हें मेन मेमोरी से निकाकलर इन रजिस्‍टरों में कुछ समय के लिए रख दिया जाता है। कुछ समय के लिए डेटा रखे जाने के कारण ही इन रजिस्‍टरों को टेम्‍प्रेरी मेमोरी कहते हैं। इसके अलावा ALU के अंदर एक एक्‍यूमुलेटर (Accumulator) भी होता है जिसमें गणना के बाद मिलने वाले परिणामों को कुछ समय के लिए रखा जाता है।

कंप्‍यूटर इंस्‍ट्रक्‍शन्‍स

मेन मेमोरी में डेटा को रखने के लिए लाखों शब्‍द-लोकेशन बने होते है जिनका आकार एक-सा होता है। इस तरह कुछ लोकेशन 8 बिट के, कुछ 16 के, तो कुछ 32 बिट के होते हैं। हर शब्‍द लोकेशन का एक सीरियल नंबर होता है जिसे उसका एड्रेस कहते हैं। इस एड्रेस के जरिये उस लोकेशन में भरें हुए डेटा तक आसानी से पहुंचा जा सकता है।

मशीन लैंग्वेज में दिये गये इंस्‍ट्रक्‍शन्‍स के दो भाग होते हैं-

  1. ऑपरेशन या फंक्‍शन कोड तथा
  2. ऑपरेंड एड्रेस

ऑपरेशन या फंक्‍शन कोड का अर्थ है डेटा पर किया जाने वाला कार्य जैसे जोड़, घटाना, गुणा ,भाग आदि |

ऑपरेन्‍ड एड्रेस

ऑपरेन्‍ड एड्रेस, जिसे संक्षेप में ओ.पी.कोड कहते हैं, का अर्थ है वह डेटा, जिन पर काम किया जाना है, के लोकेशन वाली संख्‍या को बाइनरी कोड में प्रस्‍तुत करना। सरल अर्थो में एक ऑपरेंड एड्रेस मेमोरी में भौतिक स्थान है जहां एलिमेंट की जानकारी संग्रहित है।

फंक्‍शन कोड

फंक्‍शन कोड को आधुनिक कंप्‍यूटरों में हेक्‍स विधि से लिखा जाता है। यहां पर हम एक काल्‍पनिक आदेश का उदाहरण लेंगे जिसे बाइनरी विधि से लिखा गया है। एक्‍यूमुलेटर (अब तक के गणना कार्यो के परिणाम वाले स्‍थान) में दी गई संख्‍या में से मेमोरी लोकेशन 910 में दी गई संख्‍या को घटाने के लिए आदेश (instruction) इस तरह दिया जाएगा-

फंक्‍शन कोड ऑपरेन्‍ड कोड

0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1

फंक्‍शन कोड यानि 0011 का मतलब है घटाओं और 0000 0000 1001 बाइनरी संख्‍या का मतलब है डेसीमल लोकेशन संख्‍या 9

जैसा कि हमने पहले पढ़ा ‘प्रत्‍येक डेटा’ जिस पर कार्य किया जाता है, के लिए एक लोकेशन निर्धारित करना होता है। मान लिया जाये कि एड्रेस बाइनरी पद्धति मे लिखा जाना है और इसके लिए हमने आदेश में चार बिट निर्धारित की हैं तो कुल मिलाकर 24 अर्थात 16 आदेशों को लोकेशन संख्‍या मिल सकेगी। इस तरह ऑपरेंड एड्रेस के 12 स्‍थानों में 212 यानि 4096 मेमोरी एड्रेस दिये जा सकेंगे। इस मेमारी एड्रेस को दूसरे शब्‍दों में हम 4 किलोबाइट कह सकते हैं। ( 1k = 1024 बाइट)

मान लीजिए हमें मेमोरी लोकेशन 1980 और 2142 में स्टोर दो संख्‍याओं का गुणा कर उनके गुणनफल को एड्रेस 0042 में रखना है। इसके लिए तीन कार्य करने होंगे-

  1. मेमोरी एड्रेस 1980 के डेटा को एक्‍यूमुलेटर में भेजना
  2. गुणा करने का आदेश व संबधित एड्रेस देना
  3. गुणनफल को एक्‍यूमुलेटर से स्‍थानान्‍तरित कर मेमोरी लोकेशन में भेजना।

इन तीन कार्यो के लिए निम्‍न आदेश दिये जाएंगे।

ओ.पी.कोड एड्रेस

(ऑपरेंड एड्रेस)

आदेश 1

0011

1980

आदेश 2

0100

2142

आदेश 3 0110

0042

पहले कोडेड आदेश के अनुसार कंप्‍यूटर मेमोरी लोकेशन 1980 में संचित (Accumulated) संख्‍या को एक्‍यूमुलेटर में भेजेगा। यदि एक्‍यूमुलेटर में पहले से कोई संख्‍या है तो वह मिल जाएगी। दूसरे आदेश के अनुसार एक्‍यूमुलेटर में आयी इस संख्‍या को मेमोरी लोकेशन 2142 में संचित (Accumulated) संख्‍या से गुणा किया जाएगा व गुणनफल को एक्‍यूमुलेटर में एक्‍यूमुलेट कर लिया जाएगा। तीसरे आदेश के अनुसार यह गुणनफल एक्‍यूमुलेटर से स्‍थानान्‍तरित कर लोकेशन 0042 में भेज दिया जाएगा। यदि लोकेशन 0042 में पहले से कोई संख्‍या होगी, तो वह अपने आप मिट जायेगी।

2. असेम्बली लैंग्वेज (Assembly Programming Language)

मशीनी भाषा में प्रोग्राम लिखने में आने वाली कठिनाइयों को दूर करने के लिए असेंबली भाषा का निर्माण किया गया क्योंकि मशीनी भाषा में 0 और 1 में लिखे जाने वाले संकेतों को समझना हमारे लिए बहुत ही मुश्किल था। असेंबली भाषा में भी संकेतों का ही प्रयोग किया गया लेकिन यह संकेत हमारी समझ में आ सकने वाले शब्दों से किया गया जिसे निमोनिक कोड (Mnemonic code) कहते हैं इन्हीं निमोनिक कोड का उपयोग करके असेंबली भाषा में प्रोग्राम को लिखना आसान हो गया।

निमोनिक कोड के उदाहरण हैं।

Mnemonic Code

Machine Code

ADD

0101

SUB

0110

MUL

0111

DIV

1000

असेंबली लैंग्वेज में लिखा प्रोग्राम कैसे कार्य करता हैं?

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

इसे हम उसी तरह से समझते हैं जैसे हम किसी दुसरे देश में जाते हैं और हमें हिंदी आती है और जिस देश में जा रहे हैं वह के लोग इंग्लिश में बात करते हैं तो हमें एक ऐसे बन्दे की जरुरत पड़ेगी जो हमें उस देश के लोगो के साथ बात करने के लिए इंग्लिश को हिंदी और हिंदी को इंग्लिश में बात करने में मदद कर सके उसे हम ट्रांसलेटर या अनुवादक कहेंगे। ऐसा करने के लिए अनुवादक को दोनों भाषाओँ का ज्ञान होना अति अवश्यक है ताकि वह बातचीत करने में सहायता कर सके।

3. हाई लेवल लैंग्वेज (High Level Programming Language)

उच्च-स्तरीय भाषाएं प्रोग्रामिंग भाषाएं हैं जो गणितीय प्रतीकों, प्राकृतिक भाषा करेक्टर और प्रतीकों के संयोजन द्वारा निर्मित हैं और वास्तविक-दुनिया के परिदृश्यों द्वारा निर्मित हैं। सामान्य तरीके से, आधुनिक प्रक्रिया उन्मुख प्रोग्रामिंग भाषाओं (Modern Procedure-Oriented Programming Languages) को उच्च-स्तरीय भाषाओं के रूप में जाना जाता है। ये मुख्य रूप से एक प्रोग्राम के तेज और आसान विकास के लिए लागू किए जाते हैं। यह एक प्रोग्राम के विकास के लिए सीपीयू की आर्किटेक्चर और रजिस्टरों को याद करने की आवश्यकता नहीं है। कम्पाइलर का उपयोग उच्च-स्तरीय भाषा प्रोग्राम को मशीन भाषा में ट्रांसलेट करने के लिए किया जाता है। COBOL, FORTRAN, BASIC, C और C ++, Java, आदि विभिन्न उच्च-स्तरीय भाषाएँ हैं।

 


error: Content is protected !!