सबसे पुरानी प्रोग्रामिंग भाषा. प्रोग्रामिंग भाषाओं का विकास

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

साठ के दशक के मध्य तक पर्सनल कंप्यूटर एक अत्यधिक महंगी मशीन थी जिसका उपयोग विशेष रूप से विशिष्ट कार्यों के लिए किया जाता था और जो एक समय में केवल एक ही कार्य करता था।

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

हालाँकि, साठ के दशक के दौरान लागत में गिरावट शुरू हुई और वह समय आया जब छोटी कंपनियाँ भी इस आनंद को वहन कर सकती थीं। इसके अलावा, गति बढ़ गई और मशीनें बिना कोई कार्य किए लंबे समय तक बेकार खड़ी रहीं। और इसे रोकने के लिए टाइम-शेयरिंग सिस्टम की शुरुआत की गई।

इन प्रणालियों में प्रोसेसर का समय, इसे कैसे कहें, "कटा हुआ" था, और उपयोगकर्ता इसी समय के वैकल्पिक रूप से छोटे खंड प्राप्त कर सकते थे। कंप्यूटर उपकरण बहुत तेजी से काम करने लगा, जिससे उपयोगकर्ता को टर्मिनल पर ऐसा महसूस होने लगा जैसे वह अकेले सिस्टम के साथ अपनी गतिविधियाँ कर रहा हो। डिवाइस, बदले में, कम निष्क्रिय था, क्योंकि यह एक नहीं, बल्कि कई कार्यों को एक साथ पूरा करता था। समय साझा करने से हार्डवेयर समय की लागत काफी कम हो गई, और यह सब इस तथ्य के कारण था कि एक डिवाइस को एक उपयोगकर्ता या दो नहीं, बल्कि सैकड़ों द्वारा साझा किया जा सकता था।

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

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

अब हम इस प्रश्न का स्पष्ट उत्तर देंगे। प्रोग्रामिंग भाषा एक औपचारिक संकेत प्रणाली है जिसका उद्देश्य कलाकार के लिए अधिक सुविधाजनक रूप में एल्गोरिदम का वर्णन करना है, उदाहरण के लिए, निजी कंप्यूटर. एक प्रोग्रामिंग भाषा में सिमेंटिक, सिंटैक्टिक और लेक्सिकल नियमों का एक पैकेज शामिल होता है जिसका उपयोग कंप्यूटर प्रोग्राम बनाने के लिए किया जाता है। ऐसी भाषा का उपयोग करके, प्रोग्रामर सटीक रूप से यह निर्धारित करने में सक्षम होगा कि पीसी किन घटनाओं पर प्रतिक्रिया करेगा, जानकारी कैसे संग्रहीत और प्रसारित की जाएगी, साथ ही इन विभिन्न प्रकार की परिस्थितियों पर क्या कार्रवाई करने की आवश्यकता है।

पहले प्रोग्राम योग्य उपकरणों के निर्माण के दौरान लगभग तीन हजार प्रोग्रामिंग भाषाओं का आविष्कार किया गया था। हर साल उनकी संख्या बढ़ती है, और सूची में नए जोड़े जाते हैं। कुछ भाषाएँ ऐसी हैं जिनका उपयोग केवल कुछ रचनाकार ही कर सकते हैं जिन्होंने उन्हें विकसित किया है, जबकि अन्य भाषाएँ बड़ी संख्या में उपयोगकर्ताओं को ज्ञात हो जाती हैं। विशेषज्ञ प्रोग्रामर अपने काम में दस से अधिक विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करते हैं।

प्रोग्रामिंग भाषाओं की आवश्यकता क्यों है?

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

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

प्रोग्रामिंग भाषाओं को 2 समूहों में बांटा गया है

ऐसी भाषाएँ हैं जिनका स्तर निम्न है और ऐसी भाषाएँ हैं जिनका स्तर ऊँचा है।

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

लेकिन, उच्च-स्तरीय प्रोग्रामिंग भाषाओं का उपयोग अक्सर प्रोग्राम बनाने वालों द्वारा किया जाता है। ऐसी भाषा, सिद्धांत रूप में, मानव भाषा की तरह, अपनी वर्णमाला होती है, अर्थात्, बड़ी संख्या में प्रतीक जो भाषाओं में उपयोग किए जाते हैं। भाषा के कीवर्ड लिखने के लिए ये प्रतीक आवश्यक हैं। प्रत्येक कीवर्ड का अपना कार्य होता है, ठीक वैसे ही जैसे हम जिस भाषा के आदी हैं, उसमें शब्द वर्णमाला के अक्षरों से बने होते हैं। भाषा के वाक्य-विन्यास नियमों का उपयोग करके कीवर्ड एक-दूसरे से वाक्यों में जुड़े होते हैं। सभी वाक्यों में से प्रत्येक उन क्रियाओं के अनुक्रम के लिए ज़िम्मेदार है जो पीसी निष्पादित करेगा।

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

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

खैर, कोई कह सकता है कि हम मुख्य बात पर आते हैं। अब हम आपको बताएंगे कि प्रोग्रामिंग लैंग्वेज कौन-कौन सी हैं।

विभिन्न प्रोग्रामिंग भाषाएँ क्या हैं?

फोरट्रान

पचास के दशक के मध्य में, वैज्ञानिकों ने प्रोग्रामिंग भाषाएँ बनाना शुरू किया। और इस प्रकार की सबसे पहली भाषा को फोरट्रान कहा जाता था, और इसे 1957 में विकसित किया गया था। इसका उपयोग डिजिटल कंप्यूटर का उपयोग करके वैज्ञानिक और तकनीकी समस्याओं को हल करने के लिए एक एल्गोरिदम का वर्णन करने के लिए किया जाता है। इसके अलावा, पहली कंप्यूटिंग इकाइयों की तरह, भाषा भी इस प्रकार काप्राकृतिक विज्ञान और गणितीय गणना करने के लिए उपयोग किया जाता है। यह भाषा, उन्नत रूप में, आज तक बची हुई है, और उच्च स्तर वाली आधुनिक भाषाओं में, यह वैज्ञानिक अनुसंधान करने में सबसे अधिक उपयोग की जाने वाली भाषा है। आज सबसे आम विकल्प: फोरट्रान-आई2, फोरट्रान-आई4, ईएएसआईसी फोरट्रान और उनके सामान्यीकरण।

अल्गोल

हम प्रोग्रामिंग भाषाओं के अपने विषय को जारी रखते हैं। जैसा कि आप पहले ही समझ चुके हैं, अब हम अल्गोल जैसी प्रोग्रामिंग भाषा के बारे में बात करेंगे, जो 1958-1960 में सामने आई थी। 1964-1968 में इसमें सुधार किया गया और ALGOL-68 सामने आया, इस प्रकार की एक भाषा एक समिति द्वारा विकसित की गई जिसमें अमेरिका और यूरोप के वैज्ञानिक शामिल थे, और इसे उच्च स्तरीय भाषा के रूप में वर्गीकृत किया गया था। इस प्रकार की भाषा का उपयोग करके, बीजगणितीय सूत्रों को आसानी से प्रोग्राम कमांड में अनुवादित किया जा सकता है। अल्गोल न केवल यूरोपीय देशों में, बल्कि रूस में भी लोकप्रिय था। इस प्रकार की भाषा का कुछ समय बाद बनी सभी प्रोग्रामिंग भाषाओं पर उल्लेखनीय प्रभाव पड़ा और विशेष रूप से इसका प्रभाव पास्कल भाषा पर पड़ा। इस प्रकारभाषाएँ, सैद्धांतिक रूप से, फोरट्रान भाषा की तरह, वैज्ञानिक और तकनीकी समस्याओं को हल करने के लिए बनाई गई थीं। इसके अलावा, भाषा का उपयोग प्रोग्रामिंग की मूल बातें, यानी सॉफ्टवेयर बनाने की कला सिखाने के साधन के रूप में किया गया था।

कोबोल

कोबोल प्रोग्रामिंग भाषा 1959-1960 में बनाई गई थी और यह भाषा तीसरी पीढ़ी की है। सबसे पहले, इसका उद्देश्य व्यवसाय के लिए एप्लिकेशन विकसित करना और आर्थिक समस्याओं को हल करना, बैंकिंग डेटा संसाधित करना, बीमा कंपनियों और अन्य संस्थानों के लिए है। कोबोल के "आविष्कारक" ग्रेस हॉपर हैं। आमतौर पर, COBOL की इसकी बोझिलता और वाचालता के लिए आलोचना की जाती है, क्योंकि इस भाषा के रचनाकारों का एक लक्ष्य जितना संभव हो उतना करीब पहुंचना था। अंग्रेजी भाषा. उसी समय, प्रोग्रामिंग भाषा में, अपने समय के लिए, डेटा संरचनाओं और फ़ाइलों के साथ काम करने के लिए उत्कृष्ट उपकरण थे, और इसने, व्यावसायिक अनुप्रयोगों में इसके लंबे जीवन को सुनिश्चित किया। कम से कम संयुक्त राज्य अमेरिका में - निश्चित रूप से।

तुतलाना

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

लिस्प में बनाए गए प्रोग्राम में अभिव्यक्तियों के अनुक्रम यानी फॉर्म होते हैं। कार्यक्रम का परिणाम इन अभिव्यक्तियों की गणना है, जो एक सूची के रूप में लिखी गई है - इस प्रकार की भाषा की मुख्य संरचनाओं में से एक। लिस्प कार्यक्रम का मुख्य बिंदु प्रतीकात्मक स्थान में "जीवन" है।

बुनियादी

बेसिक प्रोग्रामिंग भाषा को साठ के दशक के मध्य में संयुक्त राज्य अमेरिका के डार्टमाउथ कॉलेज के प्रोग्रामर्स द्वारा विकसित किया गया था। भाषा आंशिक रूप से फोरट्रान 2 पर और आंशिक रूप से ALGOL-60 पर आधारित थी, इसमें कुछ अतिरिक्त भी किए गए जिससे इसे समय-साझाकरण मोड में काम करने के लिए और अधिक सुविधाजनक बना दिया गया, और कई वर्षों के बाद यह वर्ड प्रोसेसिंग और मैट्रिक्स अंकगणित के लिए सुविधाजनक हो गया। इस प्रकार की प्रोग्रामिंग भाषा प्रारंभ में GE-265 मेनफ्रेम पर लागू की गई थी, जो बड़ी संख्या में टर्मिनलों का समर्थन करती है। अपनी उपस्थिति के समय, आम धारणा के विपरीत, यह एक संकलित भाषा थी।

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

किला

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

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

पास्कल

विषय को जारी रखते हुए, कोई भी इस प्रकार की प्रोग्रामिंग भाषा को पास्कल के रूप में नोट करने में विफल नहीं हो सकता है। पास्कल 1972 में बनाया गया था और इसका नाम ब्लेज़ पास्कल के नाम पर रखा गया था, जो एक समय महान गणितज्ञ और दुनिया की पहली अंकगणितीय इकाई के आविष्कारक थे। स्विस वैज्ञानिक और कंप्यूटर वैज्ञानिक निकोलस विर्थ को भाषा का निर्माता माना जाता है। प्रोग्रामिंग विधियों को सिखाने के लिए नवाचार का उपयोग किया गया था। पास्कल एक सामान्य प्रयोजन प्रोग्रामिंग भाषा है।

इसकी सभी विशेषताओं में से, मुख्य का नाम लिया जा सकता है - यह सबसे सख्त टाइपिंग और संरचनात्मक प्रकार के प्रोग्रामिंग टूल की उपस्थिति है। पास्कल ऐसी पहली भाषाओं में से एक बन गई। पास्कल प्रोग्रामिंग भाषा आपको सिखाती है कि किसी प्रोग्राम को सही ढंग से कैसे लिखा जाए और समस्याओं को हल करने के तरीकों को सही ढंग से कैसे विकसित किया जाए, और यह आपको यह सीखने में भी मदद करती है कि किसी समस्या में उपयोग किए जाने वाले डेटा को प्रस्तुत करने और व्यवस्थित करने के लिए सही विकल्प कैसे चुनें। पास्कल भाषा को 1983 से माध्यमिक कंप्यूटर विज्ञान पाठ्यक्रमों में पेश किया गया है। शैक्षणिक विद्यालययूएसए।

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

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

C प्रोग्रामिंग भाषा अब तक प्रोग्रामर्स के बीच सबसे लोकप्रिय और उपयोग की जाने वाली भाषा है। इस प्रकार की प्रोग्रामिंग भाषा की उत्पत्ति दो भाषाओं से हुई है, अर्थात् बीसीपीएल और बी। मार्टिन रिचर्ड्स ने 1967 में बीसीपीएल को एक ऐसी भाषा के रूप में बनाया था जिसका उद्देश्य सिस्टम सॉफ्टवेयर और कंपाइलर लिखना था। हम आपको नीचे बताएंगे कि यह क्या है। 1970 में केन थॉम्पसन ने और अधिक बनाने के लिए पहले के संस्करण UNIX OS का उपयोग DEC PDP-7 PC पर किया जाता है। पहली और दूसरी दोनों भाषाओं में, चर को प्रकारों में विभाजित नहीं किया गया था - प्रत्येक डेटा मान की स्मृति में एक शब्द था।

SI प्रोग्रामिंग भाषा को पहली बार 1972 में DEC PDP-11 PC पर लागू किया गया था। लेकिन यह UNIX ऑपरेटिंग सिस्टम के रूप में अपनी लोकप्रियता और प्रसिद्धि हासिल करने में कामयाब रहा। आज सभी प्रमुख ऑपरेटिंग सिस्टम C या C++ में लिखे गए हैं। सी प्रोग्रामिंग भाषा कई दशकों के बाद बड़ी संख्या में पीसी पर उपलब्ध है। और वैसे, यह ध्यान देने योग्य बात है कि यह हार्डवेयर से पूरी तरह स्वतंत्र है।

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

प्रस्ताव

खैर, हम अंत तक आ गए हैं। हम प्रोग्रामिंग भाषाओं के अपने विषय को इस क्षेत्र की नवीनतम भाषा के बारे में एक कहानी के साथ समाप्त करेंगे - और इसे प्रोलॉग कहा जाता है। इस प्रकार की भाषा को भविष्य की प्रोग्रामिंग भाषा माना जाता है और इसे सत्तर के दशक की शुरुआत में बनाया गया था। मार्सिले विश्वविद्यालय के विशेषज्ञों ने विकास में भाग लिया। उन्होंने इसका नाम "LOGIC की भाषा में प्रोग्रामिंग" शब्दों से रखा। प्रोग्रामिंग भाषा गणितीय तर्क के नियमों के आधार पर बनाई गई थी। इस प्रकार की भाषा, ऊपर वर्णित प्रोग्रामिंग भाषाओं के विपरीत, एल्गोरिथम नहीं है और यह तथाकथित वर्णनात्मक भाषाओं, यानी वर्णनात्मक प्रकार की भाषाओं से संबंधित है।

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

संकलक एवं दुभाषिया

ऐसी भाषा विकसित करना जो प्रोग्राम लिखने के लिए सुविधाजनक हो, पर्याप्त नहीं है। प्रत्येक भाषा में एक अनुवादक होना चाहिए, जो एक विशेष कार्यक्रम है - एक अनुवादक।

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

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

तो, इससे हम यह निष्कर्ष निकाल सकते हैं कि व्याख्या एक ऐसा कार्यक्रम है जो पंक्ति-दर-पंक्ति अनुवाद और मूल कार्यक्रम के लिए अभिप्रेत है।

खैर, ऐसा लगता है कि यह सब आज के लिए है, अब आप जानते हैं कि वे क्या हैं प्रोग्रामिंग भाषा, और वे क्या हैं।

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

मुझे यह लेख लिखने के लिए एक चर्चा द्वारा प्रेरित किया गया था जो dotSITE मंचों में से एक पर एक संदेश आने के बाद भड़क उठी थी जिसमें C# की तीखी आलोचना की गई थी, जो Microsoft के नए .NET प्लेटफ़ॉर्म के मुख्य घटकों में से एक है। संदेश में पहले से ही सामान्य और विशेष रूप से माइक्रोसॉफ्ट की काफी सामान्य आलोचना शामिल थी (मैं यहां यह नहीं कह रहा हूं कि माइक्रोसॉफ्ट की आलोचना करने के लिए कुछ भी नहीं है, यह सिर्फ इतना है कि इस आलोचना ने पहले ही दांतों को किनारे कर दिया है), साथ ही साथ विशेष रूप से कुछ बयान भी दिए गए हैं सी#। आगामी चर्चा के दौरान, कई दिलचस्प टिप्पणियाँ की गईं, लेकिन कुछ प्रश्न अनसुलझे रह गए। इस सब ने मुझे एक लेख लिखने के लिए प्रेरित किया जिसमें किसी विशेष प्रोग्रामिंग भाषा की विशिष्टता के बारे में राय रखने वालों को किसी तरह से "सामंजस्य बिठाने" का प्रयास किया गया है। मैं विभिन्न भाषाओं के विकास की कुछ ऐतिहासिक रूपरेखा देने और कुछ सामान्य प्रवृत्तियों को उदाहरणों के साथ समझाने का प्रयास करूँगा। शायद मैं किसी को उपरोक्त जैसी चर्चा आयोजित करने की निरर्थकता के बारे में समझा सकता हूँ। मैं न तो निष्पक्षता का दावा करता हूं (हालांकि मैं ऐसा करने की कोशिश करूंगा) या प्रस्तुति की पूर्णता का। यह केवल "पैरों के बल खड़े होकर चारों ओर देखने" का एक प्रयास है...

1. पहली सार्वभौमिक भाषाएँ

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

2. असेंबलर

पहला महत्वपूर्ण कदम असेंबली भाषा में परिवर्तन प्रतीत होता है (आइए हम अपने आप को एक छोटे से गीतात्मक विषयांतर की अनुमति दें: अंग्रेजी नाम असेंबली भाषा, या असेंबलर, का रूसी में ठीक उसी शब्द द्वारा अनुवाद किया गया है जो ऊपर इस्तेमाल किया गया था। उसी समय, नौसिखिया को यह आभास होता है कि भाषा का नाम असेंबलर द्वारा एक निश्चित व्यक्ति के नाम पर रखा गया है, यह एक अजीब स्थिति है, है ना?) एक प्रतीत होता है कि बहुत अधिक ध्यान देने योग्य कदम नहीं - मशीन निर्देशों के प्रतीकात्मक एन्कोडिंग में परिवर्तन - वास्तव में बहुत महत्वपूर्ण था। प्रोग्रामर को अब हार्डवेयर स्तर पर कमांड एन्कोडिंग के सरल तरीकों में नहीं उलझना पड़ा। इसके अलावा, अक्सर अनिवार्य रूप से समान कमांड को उनके मापदंडों के आधार पर पूरी तरह से अलग-अलग तरीकों से एन्कोड किया गया था (आधुनिक कंप्यूटर की दुनिया से एक प्रसिद्ध उदाहरण mov निर्देश का एन्कोडिंग है) इंटेल प्रोसेसर: कमांड के कई पूरी तरह से अलग-अलग एन्कोडेड वेरिएंट हैं; एक या दूसरे विकल्प का चुनाव ऑपरेंड पर निर्भर करता है, हालांकि ऑपरेशन का सार अपरिवर्तित है: दूसरे ऑपरेंड की सामग्री (या मान) को पहले में रखें)। मैक्रोज़ और लेबल का उपयोग करना भी संभव हो गया, जिससे प्रोग्रामों का निर्माण, संशोधन और डिबगिंग भी सरल हो गई। पोर्टेबिलिटी की कुछ झलक भी थी - बाइनरी संगतता सुनिश्चित करने की आवश्यकता के बिना, समान निर्देश प्रणाली और उनके लिए कुछ प्रकार के सामान्य असेंबलर के साथ मशीनों के एक पूरे परिवार को विकसित करना संभव था।

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

3. फोरट्रान

1954 में, जॉन बैकस के नेतृत्व में डेवलपर्स के एक समूह द्वारा आईबीएम कॉर्पोरेशन की गहराई में फोरट्रान प्रोग्रामिंग भाषा बनाई गई थी।

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

फोरट्रान में निम्नलिखित निर्माण का वर्णन है " पाश के लिएसूचकांक को 1 से 100 में बदलते समय 10 को चिह्नित करने के लिए: DO 10 I=1.100 यदि आप यहां अल्पविराम को बिंदु से बदलते हैं, तो आपको असाइनमेंट ऑपरेटर मिलता है: DO10I = 1.100 उनका कहना है कि ऐसी त्रुटि के कारण लॉन्च के दौरान रॉकेट में विस्फोट हो गया। !

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

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

4.कोबोल

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

1964 में, उसी IBM कॉर्पोरेशन ने PL/1 भाषा बनाई, जिसका उद्देश्य अधिकांश अनुप्रयोगों में कोबोल और फोरट्रान को प्रतिस्थापित करना था। भाषा में वाक्यात्मक संरचनाओं की असाधारण संपदा थी। इसने पहली बार अपवाद प्रबंधन और समानता समर्थन की शुरुआत की। यह ध्यान दिया जाना चाहिए कि भाषा की वाक्यात्मक संरचना अत्यंत जटिल थी। रिक्त स्थान का उपयोग पहले से ही वाक्यात्मक सीमांकक के रूप में किया जा चुका है, लेकिन कीवर्डआरक्षित नहीं थे. विशेष रूप से, अगली पंक्ति- यह PL/1 में एक पूरी तरह से सामान्य ऑपरेटर है: यदि अन्यथा=तब तब; अन्यथा अन्य

इन विशेषताओं के कारण, PL/1 के लिए एक कंपाइलर विकसित करना बेहद कठिन था। यह भाषा आईबीएम जगत के बाहर कभी भी लोकप्रिय नहीं हुई।

6.बुनियादी

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

7. अल्गोल

1960 में, पीटर नौर के नेतृत्व में एक टीम ने अल्गोल प्रोग्रामिंग भाषा बनाई। इस भाषा ने अल्गोल जैसी भाषाओं के एक पूरे परिवार को जन्म दिया (सबसे महत्वपूर्ण प्रतिनिधि पास्कल है)। 1968 में यह सामने आया एक नया संस्करणभाषा। उसे यह इतना विस्तृत नहीं लगा व्यावहारिक अनुप्रयोग, पहले संस्करण की तरह, लेकिन सिद्धांतवादी हलकों में बहुत लोकप्रिय था। यह भाषा काफी दिलचस्प थी, क्योंकि उस समय इसमें कई अनूठी विशेषताएं थीं।

8. इससे आगे का विकासप्रोग्रामिंग भाषा

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

मैं बाद की भाषाओं के बारे में जानकारी भाषाओं के परिवारों के विवरण के रूप में प्रस्तुत करूंगा। इससे हमें अलग-अलग भाषाओं के बीच संबंधों का बेहतर पता लगाने में मदद मिलेगी।

9. पास्कल जैसी भाषाएँ

यह भाषा 1970 में निकलॉस विर्थ द्वारा बनाई गई थी पास्कल प्रोग्रामिंग. यह भाषा इस मायने में उल्लेखनीय है कि यह संरचित प्रोग्रामिंग के लिए व्यापक रूप से उपयोग की जाने वाली पहली भाषा है (पहली, सख्ती से कहें तो, अल्गोल थी, लेकिन इसका इतना व्यापक रूप से उपयोग नहीं किया गया था)। पहली बार, बिना शर्त जंप ऑपरेटर अब बयानों के निष्पादन के क्रम को नियंत्रित करने में मौलिक भूमिका नहीं निभाता है। इस भाषा ने सख्त प्रकार की जाँच भी शुरू की, जिससे संकलन चरण में कई त्रुटियों की पहचान करना संभव हो गया।

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

10. सी-जैसी भाषाएँ

1972 में, कर्निघन और रिची ने C प्रोग्रामिंग भाषा बनाई, इसे UNIX ऑपरेटिंग सिस्टम विकसित करने के लिए एक भाषा के रूप में बनाया गया था। सी को अक्सर "पोर्टेबल असेंबलर" कहा जाता है, जिसका अर्थ है कि यह आपको संरचित नियंत्रण संरचनाओं और उच्च-स्तरीय अमूर्त (संरचनाएं और सरणी) प्रदान करते हुए लगभग एक असेंबली भाषा के रूप में डेटा के साथ काम करने की अनुमति देता है। यही बात उनकी आज तक की अपार लोकप्रियता का कारण है। और यह बिल्कुल उसकी दुखती रग है। सी कंपाइलर में बहुत कम प्रकार का नियंत्रण होता है, इसलिए ऐसा प्रोग्राम लिखना बहुत आसान है जो बिल्कुल सही दिखता है लेकिन तार्किक रूप से त्रुटिपूर्ण है।

1986 में, बर्जने स्ट्रॉस्ट्रुप ने C++ भाषा का पहला संस्करण बनाया, जिसमें सिमुला (नीचे देखें) से ली गई ऑब्जेक्ट-ओरिएंटेड सुविधाओं को C भाषा में जोड़ा गया और भाषा की कुछ बग और खराब निर्णयों को ठीक किया गया। C++ में आज भी सुधार जारी है; 1998 में मानक का एक नया (तीसरा) संस्करण जारी किया गया, जिसमें कुछ महत्वपूर्ण परिवर्तन शामिल थे। भाषा आधुनिक बड़ी और जटिल परियोजनाओं के विकास का आधार बन गई है। हालाँकि, उसके पास भी है कमजोर पक्ष, दक्षता आवश्यकताओं से उत्पन्न।

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

1999-2000 में, Microsoft ने C# भाषा बनाई। यह काफी हद तक जावा के समान है (और इसका उद्देश्य जावा के विकल्प के रूप में था), लेकिन इसमें विशिष्ट विशेषताएं भी हैं। मुख्य रूप से बहु-घटक इंटरनेट अनुप्रयोगों के विकास पर ध्यान केंद्रित किया गया।

11. एडा और एडा 95 भाषाएँ

1983 में, अमेरिकी रक्षा विभाग के तत्वावधान में, एडा भाषा बनाई गई थी। यह भाषा इस मायने में उल्लेखनीय है कि संकलन चरण में कई त्रुटियों का पता लगाया जा सकता है। इसके अलावा, प्रोग्रामिंग के कई पहलू जो अक्सर ऑपरेटिंग सिस्टम (संगामिति, अपवाद हैंडलिंग) पर छोड़ दिए जाते हैं, समर्थित हैं। 1995 में, Ada 95 भाषा मानक को अपनाया गया, जो विकसित होता है पिछला संस्करण, इसमें ऑब्जेक्ट-ओरिएंटेशन जोड़ना और कुछ अशुद्धियों को ठीक करना। इन दोनों भाषाओं का सैन्य और अन्य बड़े पैमाने की परियोजनाओं (विमानन, रेल परिवहन) के बाहर व्यापक रूप से उपयोग नहीं किया जाता है। मुख्य कारण भाषा में महारत हासिल करने की कठिनाई और इसका बोझिल वाक्यविन्यास (पास्कल से कहीं अधिक बोझिल) है।

12. डाटा प्रोसेसिंग भाषाएँ

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

1957 में, गणितीय डेटा प्रोसेसिंग का वर्णन करने के लिए एक भाषा बनाने का प्रयास किया गया था। भाषा का नाम APL (एप्लिकेशन प्रोग्रामिंग लैंग्वेज) रखा गया। इसकी विशिष्ट विशेषता गणितीय प्रतीकों का उपयोग था (जिससे पाठ टर्मिनलों पर इसका उपयोग करना मुश्किल हो गया; उपस्थिति ग्राफ़िकल इंटरफ़ेसइस समस्या को समाप्त कर दिया) और एक बहुत शक्तिशाली वाक्यविन्यास जिसने जटिल वस्तुओं पर सीधे कई गैर-तुच्छ संचालन करना संभव बना दिया, उन्हें घटकों में तोड़ने का सहारा लिए बिना। जैसा कि पहले ही उल्लेख किया गया है, वाक्य रचना के तत्वों के रूप में गैर-मानक प्रतीकों के उपयोग से व्यापक उपयोग को रोका गया था।

14. स्नोबोल और चिह्न

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

15.सेटल

1969 में, SETL भाषा बनाई गई - सेट पर संचालन का वर्णन करने के लिए एक भाषा। भाषा में मुख्य डेटा संरचना एक सेट है, और संचालन सेट पर गणितीय संचालन के समान हैं। जटिल अमूर्त वस्तुओं से निपटने वाले प्रोग्राम लिखते समय उपयोगी।

16. लिस्प और इसी तरह की भाषाएँ

1958 में, लिस्प भाषा सामने आई - सूचियों के प्रसंस्करण के लिए एक भाषा। यह कृत्रिम बुद्धिमत्ता प्रणालियों में काफी व्यापक हो गया है। इसके कई वंशज हैं: प्लानर (1967), स्कीम (1975), कॉमन लिस्प (1984)। उनके कई गुण विरासत में मिले थे आधुनिक भाषाएंकार्यात्मक प्रोग्रामिंग.

17. स्क्रिप्टिंग भाषाएँ

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

18. जावास्क्रिप्ट

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

19. वीबीस्क्रिप्ट

यह भाषा मुख्यतः जावास्क्रिप्ट के विकल्प के रूप में Microsoft Corporation द्वारा बनाई गई थी। एक समान दायरा है. वाक्यात्मक रूप से विज़ुअल बेसिक भाषा के समान (और बाद वाले का एक छोटा संस्करण है)। जैकस्क्रिप्ट की तरह, इसे वेब पेज प्रदर्शित करते समय ब्राउज़र द्वारा निष्पादित किया जाता है और इसमें ऑब्जेक्ट-ओरिएंटेशन की समान डिग्री होती है।

20. पर्ल

भाषा मदद के लिए बनाई गई थी कार्यकारी प्रबंधकविभिन्न प्रकार के टेक्स्ट को प्रोसेस करने और हाइलाइट करने के लिए यूनिक्स ऑपरेटिंग सिस्टम आवश्यक जानकारी. यह पाठों के साथ काम करने के लिए एक शक्तिशाली उपकरण के रूप में विकसित हुआ है। यह एक व्याख्यात्मक भाषा है और लगभग सभी में लागू होती है मौजूदा प्लेटफार्म. इसका उपयोग टेक्स्ट प्रोसेसिंग के साथ-साथ वेब सर्वर पर वेब पेजों की गतिशील पीढ़ी के लिए किया जाता है।

21.पायथन

एक व्याख्या की गई वस्तु-उन्मुख प्रोग्रामिंग भाषा। यह संरचना और दायरे में पर्ल के समान है, लेकिन कम व्यापक और अधिक सख्त और तार्किक है। अधिकांश मौजूदा प्लेटफार्मों के लिए कार्यान्वयन मौजूद हैं।

22. वस्तु-उन्मुख भाषाएँ

ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण, जिसने संरचनात्मक दृष्टिकोण को प्रतिस्थापित किया, पहली बार C++ में प्रकट नहीं हुआ, जैसा कि कुछ लोग मानते हैं। शुद्ध वस्तु-उन्मुख भाषाओं की एक पूरी श्रृंखला है, जिनके बारे में जानकारी के बिना हमारी समीक्षा अधूरी होगी।

23. सिमुला

पहली वस्तु-उन्मुख भाषा सिमुला (1967) थी। यह भाषा विभिन्न वस्तुओं और प्रक्रियाओं के मॉडलिंग के लिए बनाई गई थी, और मॉडल वस्तुओं के गुणों का सटीक वर्णन करने के लिए इसमें वस्तु-उन्मुख विशेषताएं दिखाई दीं।

24. छोटी बात

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की लोकप्रियता 1972 में बनाई गई स्मॉलटॉक भाषा द्वारा लाई गई थी। इस भाषा का उद्देश्य जटिल ग्राफ़िकल इंटरफ़ेस डिज़ाइन करना था और यह पहली वास्तविक ऑब्जेक्ट-ओरिएंटेड भाषा थी। इसमें, कक्षाएं और ऑब्जेक्ट ही एकमात्र प्रोग्रामिंग संरचनाएं हैं। स्मॉलटॉक का बड़ा नुकसान इसकी बड़ी मेमोरी आवश्यकताएं हैं और कम प्रदर्शनप्राप्त कार्यक्रम. यह ऑब्जेक्ट-ओरिएंटेड सुविधाओं के बहुत सफल कार्यान्वयन नहीं होने के कारण है। C++ और Ada 95 भाषाओं की लोकप्रियता इस तथ्य के कारण है कि ऑब्जेक्ट-ओरिएंटेशन को प्रदर्शन में उल्लेखनीय कमी के बिना लागू किया जाता है।

25. एफिल

ऑब्जेक्ट ओरिएंटेशन के बहुत अच्छे कार्यान्वयन वाली एक भाषा है, जो किसी अन्य भाषा पर अधिरचना नहीं है। यह एफिल (1986) की भाषा है। एक शुद्ध ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा होने के कारण, यह "कंट्रोल स्टेटमेंट्स" के उपयोग के माध्यम से प्रोग्राम की विश्वसनीयता में भी सुधार करती है।

26. समानांतर प्रोग्रामिंग भाषाएँ

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

27. ओकाम भाषा

ओकाम भाषा 1982 में बनाई गई थी और इसका उद्देश्य प्रोग्रामिंग ट्रांसप्यूटर्स - मल्टीप्रोसेसर वितरित डेटा प्रोसेसिंग सिस्टम के लिए है। यह चैनलों के रूप में समानांतर प्रक्रियाओं की अंतःक्रिया का वर्णन करता है - एक प्रक्रिया से दूसरी प्रक्रिया में सूचना प्रसारित करने के तरीके। आइए Shccam भाषा के सिंटैक्स की एक विशेषता पर ध्यान दें - इसमें, ऑपरेटरों के निष्पादन के अनुक्रमिक और समानांतर क्रम समान हैं, और उन्हें PAR और SEQ कीवर्ड के साथ स्पष्ट रूप से इंगित किया जाना चाहिए।

28. लिंडा समानांतर कंप्यूटिंग मॉडल

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

29. गैर-अनिवार्य भाषाएँ

पहले चर्चा की गई सभी भाषाओं में एक बात समान है: वे अनिवार्य हैं। इसका मतलब यह है कि उन पर प्रोग्राम अंततः प्रतिनिधित्व करते हैं चरण दर चरण विवरणइस या उस समस्या को हल करना। आप केवल समस्या के विवरण का वर्णन करने का प्रयास कर सकते हैं, और समस्या को हल करने के लिए संकलक को सौंप सकते हैं। इस विचार को विकसित करने वाले दो मुख्य दृष्टिकोण हैं: कार्यात्मक और तार्किक प्रोग्रामिंग।

30. कार्यात्मक भाषाएँ

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

ऊर्जावान शब्दार्थ वाली भाषाओं में, हम एमएल और इसकी दो आधुनिक बोलियों - मानक एमएल (एसएमएल) और सीएएमएल का उल्लेख करते हैं। उत्तरार्द्ध का एक वस्तु-उन्मुख वंशज है - ऑब्जेक्टिव सीएएमएल (ओ'सीएएमएल)।

आलसी शब्दार्थ वाली भाषाओं में, दो सबसे आम हैं हास्केल और इसकी सरल बोली क्लीन।

कार्यात्मक भाषाओं के बारे में अधिक जानकारी यहां पाई जा सकती है:

31. तर्क प्रोग्रामिंग भाषाएँ

तर्क प्रोग्रामिंग भाषाओं में प्रोग्राम गणितीय तर्क सूत्रों के रूप में व्यक्त किए जाते हैं, और कंपाइलर उनसे परिणाम प्राप्त करने का प्रयास करता है।

अधिकांश तर्क प्रोग्रामिंग भाषाओं का पूर्वज प्रोलॉग (1971) है। इसके कई वंशज हैं - पारलॉग (1983, समानांतर कंप्यूटिंग पर केंद्रित), डेल्टा प्रोलॉग, आदि। तर्क प्रोग्रामिंग, कार्यात्मक प्रोग्रामिंग की तरह, प्रोग्रामिंग का एक अलग क्षेत्र है, और अधिक विस्तृत जानकारी के लिए हम पाठक को विशेष साहित्य का संदर्भ देते हैं .

32. निष्कर्ष के बजाय

मैं प्रोग्रामिंग भाषाओं के विकास में कुछ सामान्य रुझानों पर प्रकाश डालना चाहता हूँ। चतुर पाठक ने संभवतः बहुत पहले ही अनुमान लगा लिया होगा कि मैं क्या कहने जा रहा हूँ। भाषाएँ अधिक से अधिक अमूर्तता की ओर विकसित होती हैं। और इसके साथ ही कार्यकुशलता में भी गिरावट आती है। प्रश्न: क्या अमूर्तता इसके लायक है? उत्तर: इसके लायक. यह इसके लायक है, क्योंकि अमूर्तता के स्तर को बढ़ाने से प्रोग्रामिंग विश्वसनीयता के स्तर में वृद्धि होती है। अधिक सृजन करके कम दक्षता का मुकाबला किया जा सकता है तेज़ कंप्यूटर. यदि मेमोरी आवश्यकताएँ बहुत अधिक हैं, तो आप मेमोरी का आकार बढ़ा सकते हैं। बेशक, इसमें समय और पैसा लगता है, लेकिन इसे हल किया जा सकता है। लेकिन कार्यक्रमों में त्रुटियों से निपटने का केवल एक ही तरीका है: उन्हें ठीक किया जाना चाहिए। या इससे भी बेहतर, ऐसा न करें। इससे भी बेहतर, उन्हें प्रतिबद्ध करना जितना संभव हो उतना कठिन बना दें। और प्रोग्रामिंग भाषाओं के क्षेत्र में सभी शोधों का उद्देश्य ठीक यही है। और आपको कार्यकुशलता के नुकसान की भरपाई करनी होगी।

इस समीक्षा का उद्देश्य पाठक को मौजूदा प्रोग्रामिंग भाषाओं की विविधता का अंदाजा देने का प्रयास करना था। प्रोग्रामर के बीच अक्सर किसी विशेष भाषा (सी, सी++, पास्कल, आदि) की "सार्वभौमिक प्रयोज्यता" के बारे में एक राय होती है। यह राय कई कारणों से उत्पन्न होती है: जानकारी की कमी, आदत, सोच की जड़ता। मैंने पहले कारक की थोड़ी भरपाई करने की कोशिश की। बाकी के संबंध में, मैं केवल इतना ही कह सकता हूं कि एक सच्चे पेशेवर को अपनी पेशेवर योग्यताओं में सुधार के लिए लगातार प्रयास करना चाहिए। और इसके लिए आपको प्रयोग करने से डरने की जरूरत नहीं है। तो क्या होगा यदि आपके आस-पास हर कोई C/C++/VB/पास्कल/पर्ल/जावा/… में लिखता है (जैसा उपयुक्त हो रेखांकित करें)? कुछ नया क्यों न आज़माएँ? यदि यह अधिक प्रभावी हो गया तो क्या होगा? बेशक, किसी नई भाषा का उपयोग शुरू करने से पहले, आपको इसकी सभी विशेषताओं का सावधानीपूर्वक अध्ययन करना होगा, जिसमें प्रभावी कार्यान्वयन की उपलब्धता, मौजूदा मॉड्यूल के साथ बातचीत करने की क्षमता आदि शामिल है, और उसके बाद ही कोई निर्णय लेना होगा। बेशक, गलत रास्ते पर जाने का जोखिम हमेशा बना रहता है, लेकिन... केवल वे ही जो कुछ नहीं करते, कोई गलती नहीं करते।

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

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

सामग्री विकिपीडिया से

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

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

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

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

सुधार

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

प्रोग्रामिंग भाषाओं का मानकीकरण

कई व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषाओं के लिए अंतर्राष्ट्रीय मानक बनाए गए हैं। विशेष संगठन नियमित रूप से संबंधित भाषा की विशिष्टताओं और औपचारिक परिभाषाओं को अद्यतन और प्रकाशित करते हैं। ऐसी समितियों के ढांचे के भीतर, प्रोग्रामिंग भाषाओं का विकास और आधुनिकीकरण जारी रहता है और मौजूदा और नई भाषा निर्माणों के विस्तार या समर्थन के मुद्दों का समाधान किया जाता है।

डेटा के प्रकार

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

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

स्थिर रूप से टाइप की गई भाषाओं को आगे भाषाओं में विभाजित किया जा सकता है अनिवार्य घोषणा, जहां प्रत्येक वेरिएबल और फ़ंक्शन घोषणा में एक आवश्यक प्रकार की घोषणा और भाषाएं होती हैं अनुमानित प्रकार. गतिशील रूप से टाइप की गई भाषाओं को कभी-कभी कहा जाता है गुप्त रूप से टाइप किया गया.

डेटा संरचनाएं

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

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

प्रोग्रामिंग भाषाओं का शब्दार्थ

प्रोग्रामिंग भाषाओं के शब्दार्थ को परिभाषित करने के लिए कई दृष्टिकोण हैं।

सबसे व्यापक किस्में निम्नलिखित तीन हैं: परिचालन, व्युत्पन्न (स्वयंसिद्ध) और संकेतात्मक (गणितीय)।

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

प्रोग्रामिंग प्रतिमान

एक प्रोग्रामिंग भाषा किसी न किसी बुनियादी कंप्यूटिंग मॉडल और प्रोग्रामिंग प्रतिमान के अनुसार बनाई जाती है।

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

वर्तमान में, घोषणात्मक और दृश्य प्रोग्रामिंग भाषाएं भी सक्रिय रूप से विकसित हो रही हैं, साथ ही समस्या-विशिष्ट भाषाओं को विकसित करने के तरीके और उपकरण भी सक्रिय रूप से विकसित हो रहे हैं (भाषा-उन्मुख प्रोग्रामिंग देखें)।

भाषाओं को लागू करने के तरीके

प्रोग्रामिंग भाषाओं को संकलित, व्याख्या और एम्बेडेड के रूप में लागू किया जा सकता है।

कंपाइलर (एक विशेष प्रोग्राम) का उपयोग करके संकलित भाषा में एक प्रोग्राम को किसी दिए गए प्रकार के प्रोसेसर के लिए मशीन कोड (निर्देशों का एक सेट) में परिवर्तित (संकलित) किया जाता है और फिर एक निष्पादन योग्य मॉड्यूल में इकट्ठा किया जाता है, जिसे निष्पादन के लिए लॉन्च किया जा सकता है अलग कार्यक्रम. दूसरे शब्दों में, कंपाइलर प्रोग्राम स्रोत कोड को उच्च-स्तरीय प्रोग्रामिंग भाषा से प्रोसेसर निर्देशों के बाइनरी कोड में अनुवादित करता है।

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

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

किसी भी व्याख्या की गई भाषा के लिए एक कंपाइलर बनाया जा सकता है - उदाहरण के लिए, लिस्प भाषा, जिसकी मूल रूप से व्याख्या की जाती है, को बिना किसी प्रतिबंध के संकलित किया जा सकता है। प्रोग्राम निष्पादन के दौरान उत्पन्न कोड को निष्पादन के दौरान गतिशील रूप से संकलित भी किया जा सकता है।

आमतौर पर, संकलित प्रोग्राम तेजी से चलते हैं और इसकी आवश्यकता नहीं होती है अतिरिक्त कार्यक्रम, क्योंकि उनका पहले ही अनुवाद किया जा चुका है मशीन भाषा. साथ ही, हर बार जब प्रोग्राम टेक्स्ट बदला जाता है, तो उसे पुन: संकलित करने की आवश्यकता होती है, जो विकास प्रक्रिया को धीमा कर देती है। इसके अलावा, संकलित प्रोग्राम को केवल उसी प्रकार के कंप्यूटर पर और आमतौर पर उसी ऑपरेटिंग सिस्टम के तहत निष्पादित किया जा सकता है, जिसके लिए कंपाइलर डिज़ाइन किया गया था। किसी भिन्न प्रकार की मशीन के लिए निष्पादन योग्य बनाने के लिए, एक नए संकलन की आवश्यकता होती है।

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

हालाँकि, व्याख्या किए गए प्रोग्राम संकलित प्रोग्रामों की तुलना में काफी धीमी गति से चलते हैं, और उन्हें दुभाषिया प्रोग्राम के बिना निष्पादित नहीं किया जा सकता है।

यह दृष्टिकोण, एक अर्थ में, आपको दुभाषियों और संकलनकर्ताओं दोनों के लाभों का उपयोग करने की अनुमति देता है। यह उल्लेख किया जाना चाहिए कि ऐसी भाषाएँ हैं जिनमें एक दुभाषिया और एक संकलक (फोर्थ) दोनों हैं।

निम्न स्तरीय प्रोग्रामिंग भाषाएँ

पहले कंप्यूटरों को बाइनरी मशीन कोड का उपयोग करके प्रोग्राम किया जाना था। हालाँकि, इस तरह से प्रोग्रामिंग करना काफी समय लेने वाला और कठिन काम है। इस कार्य को सरल बनाने के लिए प्रोग्रामिंग भाषाएँ सामने आने लगीं कम स्तर, जिसने मशीन कमांड को मनुष्यों के लिए समझने योग्य रूप में निर्दिष्ट करना संभव बना दिया। उन्हें परिवर्तित करने के लिए बाइनरी कोडबनाये गये विशेष कार्यक्रम- अनुवादक।

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

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

उच्च स्तरीय प्रोग्रामिंग भाषाएँ

विशिष्ट कंप्यूटर आर्किटेक्चर की विशेषताओं को ध्यान में नहीं रखा जाता है, इसलिए बनाए गए एप्लिकेशन आसानी से कंप्यूटर से कंप्यूटर में स्थानांतरित हो जाते हैं। ज्यादातर मामलों में, किसी विशिष्ट कंप्यूटर आर्किटेक्चर के लिए प्रोग्राम को पुन: संकलित करना ही पर्याप्त है ऑपरेटिंग सिस्टम. ऐसी भाषाओं में प्रोग्राम विकसित करना बहुत आसान होता है और गलतियाँ कम होती हैं। प्रोग्राम विकास का समय काफी कम हो गया है, जो बड़े सॉफ्टवेयर प्रोजेक्ट्स पर काम करते समय विशेष रूप से महत्वपूर्ण है।

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

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

प्रतीकों का प्रयोग किया गया

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

6-बिट वर्णों के युग में उभरने वाली प्रारंभिक भाषाओं में अधिक सीमित सेट का उपयोग किया जाता था। उदाहरण के लिए, फोरट्रान वर्णमाला में 49 अक्षर हैं (स्पेस सहित): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / ()। , $ " :

एक उल्लेखनीय अपवाद एपीएल भाषा है, जो बहुत सारे विशेष वर्णों का उपयोग करती है।

गैर-ASCII वर्णों (जैसे KOI8-R वर्ण या यूनिकोड वर्ण) का उपयोग कार्यान्वयन पर निर्भर है: कभी-कभी उन्हें केवल टिप्पणियों और वर्ण/स्ट्रिंग स्थिरांक में और कभी-कभी पहचानकर्ताओं में अनुमति दी जाती है। यूएसएसआर में, ऐसी भाषाएँ थीं जहाँ सभी कीवर्ड रूसी अक्षरों में लिखे गए थे, लेकिन ऐसी भाषाओं को अधिक लोकप्रियता नहीं मिली (अपवाद 1C: एंटरप्राइज़ बिल्ट-इन प्रोग्रामिंग लैंग्वेज है)।

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

प्रोग्रामिंग भाषाओं की श्रेणियाँ

गणितीय आधारित प्रोग्रामिंग भाषाएँ

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



मित्रों को बताओ