सामान्य प्रयोजन प्रोग्रामिंग भाषा: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 4: Line 4:
== इतिहास ==
== इतिहास ==


इस प्रकार से प्रारंभिक प्रोग्रामिंग भाषाओं को या तो वैज्ञानिक कंप्यूटिंग (संख्यात्मक गणना) या व्यावसायिक डेटा प्रोसेसिंग के लिए डिज़ाइन किया गया था, जैसा कि कंप्यूटर हार्डवेयर था। अतः [[फोरट्रान]] और एएलजीओएल जैसी वैज्ञानिक भाषाएँ फ़्लोटिंग-पॉइंट गणनाओं और बहुआयामी सरणियों का समर्थन करती हैं, जबकि व्यावसायिक भाषाएँ जैसे [[COBOL|कोबोल]] फिक्स्ड-फ़ील्ड फ़ाइल स्वरूपों और [[रिकॉर्ड (कंप्यूटर विज्ञान)]] का समर्थन करती हैं। इस प्रकार से सूची के लिए [[आईपीएल-वी]] और एलआईएसपी (अमूर्त डेटा प्रकार) जैसी विशिष्ट भाषाएं बहुत कम व्यापक रूप से उपयोग की गईं; स्ट्रिंग अन्तःक्षेप के लिए [[COMIT|कोमित]]; [[संख्यात्मक नियंत्रण]] के लिए [[एपीटी (प्रोग्रामिंग भाषा)]] हैं। अतः [[ सूचक (कंप्यूटर प्रोग्रामिंग) |सूचक (कंप्यूटर प्रोग्रामिंग)]] की आवश्यकता वाली [[सिस्टम प्रोग्रामिंग]] सामान्यतः असेंबली भाषा में की जाती थी, यद्यपि कुछ सैन्य अनुप्रयोगों के लिए [[JOVIAL|जोविअल]] का उपयोग किया जाता था।<ref name="sammet">Jean E. Sammet, "Programming Languages: History and Future", ''Communications of the ACM'' '''15''':7:601-610 (July 1972) {{doi|10.1145/361454.361485}}</ref>
इस प्रकार से प्रारंभिक प्रोग्रामिंग भाषाओं को या तो वैज्ञानिक कंप्यूटिंग (संख्यात्मक गणना) या व्यावसायिक डेटा प्रोसेसिंग के लिए डिज़ाइन किया गया था, जैसा कि कंप्यूटर हार्डवेयर था। अतः [[फोरट्रान]] और एएलजीओएल जैसी वैज्ञानिक भाषाएँ फ़्लोटिंग-पॉइंट गणनाओं और बहुआयामी सरणियों का समर्थन करती हैं, जबकि व्यावसायिक भाषाएँ जैसे [[COBOL|कोबोल]] फिक्स्ड-फ़ील्ड फ़ाइल स्वरूपों और [[रिकॉर्ड (कंप्यूटर विज्ञान)]] का समर्थन करती हैं। इस प्रकार से सूची के लिए [[आईपीएल-वी]] और एलआईएसपी (अमूर्त डेटा प्रकार) जैसी विशिष्ट भाषाएं बहुत कम व्यापक रूप से उपयोग की गईं; स्ट्रिंग अन्तःक्षेप के लिए [[COMIT|'''कोमिट''']]; [[संख्यात्मक नियंत्रण]] के लिए [[एपीटी (प्रोग्रामिंग भाषा)]] हैं। अतः [[ सूचक (कंप्यूटर प्रोग्रामिंग) |सूचक (कंप्यूटर प्रोग्रामिंग)]] की आवश्यकता वाली [[सिस्टम प्रोग्रामिंग]] सामान्यतः असेंबली भाषा में की जाती थी, यद्यपि कुछ सैन्य अनुप्रयोगों के लिए [[JOVIAL|जोविअल]] का उपयोग किया जाता था।<ref name="sammet">Jean E. Sammet, "Programming Languages: History and Future", ''Communications of the ACM'' '''15''':7:601-610 (July 1972) {{doi|10.1145/361454.361485}}</ref>


[[IBM|आईबीएम]] का आईबीएम सिस्टम/360, जिसकी घोषणा 1964 में की गई थी, जिसको एकीकृत हार्डवेयर संरचना के रूप में डिज़ाइन किया गया था जो वैज्ञानिक और व्यावसायिक दोनों अनुप्रयोगों का समर्थन करता है, और आईबीएम ने इसके लिए पीएल/आई को एकल, सामान्य-उद्देश्य वाली भाषा के रूप में विकसित किया जो वैज्ञानिक, वाणिज्यिक, और सिस्टम प्रोग्रामिंग हैं। वस्तुतः, पीएल/आई के उपसमुच्चय का उपयोग [[ मॉलटिक्स |मॉलटिक्स]] ऑपरेटिंग सिस्टम के लिए मानक सिस्टम प्रोग्रामिंग भाषा के रूप में किया गया था।
[[IBM|आईबीएम]] का आईबीएम सिस्टम/360, जिसकी घोषणा 1964 में की गई थी, जिसको एकीकृत हार्डवेयर संरचना के रूप में डिज़ाइन किया गया था जो वैज्ञानिक और व्यावसायिक दोनों अनुप्रयोगों का समर्थन करता है, और आईबीएम ने इसके लिए पीएल/आई को एकल, सामान्य-उद्देश्य वाली भाषा के रूप में विकसित किया जो वैज्ञानिक, वाणिज्यिक, और सिस्टम प्रोग्रामिंग हैं। वस्तुतः, पीएल/आई के उपसमुच्चय का उपयोग [[ मॉलटिक्स |मॉलटिक्स]] ऑपरेटिंग सिस्टम के लिए मानक सिस्टम प्रोग्रामिंग भाषा के रूप में किया गया था।
Line 10: Line 10:
इस प्रकार पीएल/आई के बाद से, वैज्ञानिक और वाणिज्यिक प्रोग्रामिंग भाषाओं के बीच का अंतर कम हो गया है, अधिकांश भाषाएं दोनों के लिए आवश्यक मूलभूत सुविधाओं का समर्थन करती हैं, और विशेष डेटाबेस प्रबंधन प्रणाली को प्रत्यायोजित विशेष फ़ाइल प्रारूप का संचालन करती हैं।
इस प्रकार पीएल/आई के बाद से, वैज्ञानिक और वाणिज्यिक प्रोग्रामिंग भाषाओं के बीच का अंतर कम हो गया है, अधिकांश भाषाएं दोनों के लिए आवश्यक मूलभूत सुविधाओं का समर्थन करती हैं, और विशेष डेटाबेस प्रबंधन प्रणाली को प्रत्यायोजित विशेष फ़ाइल प्रारूप का संचालन करती हैं।


इस प्रकार से 1960 के दशक के [[शुरुआत|प्रारंभ]] में कई विशिष्ट भाषाएं भी विकसित की गईं: असतत घटना अनुकरण के लिए [[जीपीएसएस]] और सिमुला आदि हैं; अतः प्रोग्रामिंग सिखाने के लिए मैड (प्रोग्रामिंग भाषा), [[ बुनियादी |बेसिक]], [[ लोगो (प्रोग्रामिंग भाषा) |लोगो (प्रोग्रामिंग भाषा)]], और [[ पास्कल (प्रोग्रामिंग भाषा) |पास्कल (प्रोग्रामिंग भाषा)]] ; [[सी (प्रोग्रामिंग भाषा)]] सिस्टम प्रोग्रामिंग के लिए हैं; और इंटरैक्टिव प्रोग्रामिंग के लिए [[JOSS|जोस]] और एपीएल\360 हैं।<ref name="sammet" />
इस प्रकार से 1960 के दशक के [[शुरुआत|प्रारंभ]] में कई विशिष्ट भाषाएं भी विकसित की गईं: असतत घटना अनुकरण के लिए [[जीपीएसएस]] और सिमुला आदि हैं; अतः प्रोग्रामिंग सिखाने के लिए मैड (प्रोग्रामिंग भाषा), [[ बुनियादी |'''बेसिक''']], [[ लोगो (प्रोग्रामिंग भाषा) |लोगो (प्रोग्रामिंग भाषा)]], और [[ पास्कल (प्रोग्रामिंग भाषा) |पास्कल (प्रोग्रामिंग भाषा)]] ; [[सी (प्रोग्रामिंग भाषा)]] सिस्टम प्रोग्रामिंग के लिए हैं; और इंटरैक्टिव प्रोग्रामिंग के लिए [[JOSS|जोस]] और एपीएल\360 हैं।<ref name="sammet" />
== जीपीएल बनाम डीएसएल ==
== जीपीएल बनाम डीएसएल ==
इस प्रकार से सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषाओं और डोमेन-विशिष्ट प्रोग्रामिंग भाषाओं के बीच अंतर सदैव स्पष्ट नहीं होता है।<ref>{{Cite web |title=Domain-Specific Languages: An Annotated Bibliography* |citeseerx=10.1.1.33.8207}}</ref> प्रोग्रामिंग भाषा विशिष्ट कार्य के लिए बनाई जा सकती है, परन्तु उस मूल डोमेन के अतिरिक्त उपयोग की जाती है और इस प्रकार इसे सामान्य प्रयोजन प्रोग्रामिंग भाषा माना जाता है। उदाहरण के लिए, कोबोल, फोरट्रान और [[ लिस्प (प्रोग्रामिंग भाषा) |लिस्प (प्रोग्रामिंग भाषा)]] को डीएसएल (बिजनेस प्रोसेसिंग, न्यूमेरिक कम्प्यूटेशन और सिंबॉलिक प्रोसेसिंग के लिए) के रूप में बनाया गया था, परन्तु समय के साथ जीपीएल बन गया था। इस प्रकार विपरीत रूप से, भाषा को सामान्य उपयोग के लिए डिज़ाइन किया जा सकता है परन्तु व्यवहार में मात्र विशिष्ट क्षेत्र में ही लागू किया जाता है।<ref>{{Cite journal |last=Berry |first=Gerard |date=May 2006 |title=Real time programming: special purpose or general purpose languages |url=https://hal.inria.fr/inria-00075494/document |journal=HAL Open Science}}</ref> प्रोग्रामिंग भाषा जो किसी समस्या के लिए ठीक रूप से अनुकूल है, चाहे वह सामान्य-उद्देश्य वाली भाषा हो या डीएसएल, समस्या के क्षेत्र में अभी भी पर्याप्त अभिव्यंजक होने के समय आवश्यक विवरण के स्तर को कम करना चाहिए।<ref name=":0">{{Cite journal |last=Kosar |first=Tomaz |date=May 2010 |title=Comparing General-Purpose and Domain-Specific Languages: An Empirical Study |url=http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf |journal=Computer Science and Information Systems|volume=7 |issue=2 |pages=247–264 |doi=10.2298/CSIS1002247K }}</ref> अतः जैसा कि नाम से पता चलता है, सामान्य-उद्देश्य वाली भाषा "सामान्य" है जिसमें यह डोमेन-विशिष्ट संकेतन के लिए समर्थन प्रदान नहीं कर सकती है जबकि डीएसएल को इस समस्या को संभालने के लिए विविध समस्या डोमेन में डिज़ाइन किया जा सकता है।<ref name=":0" /> इस प्रकार से डीएसएल के लिए सामान्य-उद्देश्य वाली भाषाओं को प्राथमिकता दी जाती है जब एप्लिकेशन डोमेन अपनी भाषा को वारंट करने के लिए पर्याप्त रूप से ठीक रूप से समझा नहीं जाता है। इस स्थिति में, इसके अतिरिक्त डोमेन के लिए डेटा प्रकारों और फंक्शन्स के उपयुक्त लाइब्रेरी के साथ सामान्य-उद्देश्य वाली भाषा का उपयोग किया जा सकता है।<ref>{{Cite journal |last=van Deursen |first=Arie |date=December 1998 |title=Little languages: little maintenance? |url=https://onlinelibrary.wiley.com/doi/pdf/10.1002/%28SICI%291096-908X%28199803/04%2910%3A2%3C75%3A%3AAID-SMR168%3E3.0.CO%3B2-5 |journal=Journal of Software Maintenance: Research and Practice|volume=10 |issue=2 |pages=75–92 |doi=10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5 }}</ref> जबकि डीएसएल सामान्यतः जीपीएल से छोटे होते हैं, जिसमें वे सार की छोटी सी श्रेणी की प्रस्तुति करते हैं, कुछ डीएसएल में वस्तुतः संपूर्ण जीपीएल उपभाषा के रूप में होता है। इस प्रकार से इन उदाहरणों में, डीएसएल जीपीएल की अभिव्यंजक शक्ति के साथ-साथ डोमेन-विशिष्ट अभिव्यंजक शक्ति प्रदान करने में सक्षम हैं।<ref>{{Cite journal |last1=van Deursen |first1=Arie |last2=Klint |first2=Paul |last3=Visser |first3=Joost |date=June 2000 |title=Domain-specific languages: an annotated bibliography |url=https://dl.acm.org/doi/10.1145/352029.352035 |journal=ACM SIGPLAN Notices |language=en |volume=35 |issue=6 |pages=26–36 |doi=10.1145/352029.352035 |s2cid=1049872 |issn=0362-1340}}</ref>
इस प्रकार से सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषाओं और डोमेन-विशिष्ट प्रोग्रामिंग भाषाओं के बीच अंतर सदैव स्पष्ट नहीं होता है।<ref>{{Cite web |title=Domain-Specific Languages: An Annotated Bibliography* |citeseerx=10.1.1.33.8207}}</ref> प्रोग्रामिंग भाषा विशिष्ट कार्य के लिए बनाई जा सकती है, परन्तु उस मूल डोमेन के अतिरिक्त उपयोग की जाती है और इस प्रकार इसे सामान्य प्रयोजन प्रोग्रामिंग भाषा माना जाता है। उदाहरण के लिए, कोबोल, फोरट्रान और [[ लिस्प (प्रोग्रामिंग भाषा) |लिस्प (प्रोग्रामिंग भाषा)]] को डीएसएल (बिजनेस प्रोसेसिंग, न्यूमेरिक कम्प्यूटेशन और सिंबॉलिक प्रोसेसिंग के लिए) के रूप में बनाया गया था, परन्तु समय के साथ जीपीएल बन गया था। इस प्रकार विपरीत रूप से, भाषा को सामान्य उपयोग के लिए डिज़ाइन किया जा सकता है परन्तु व्यवहार में मात्र विशिष्ट क्षेत्र में ही लागू किया जाता है।<ref>{{Cite journal |last=Berry |first=Gerard |date=May 2006 |title=Real time programming: special purpose or general purpose languages |url=https://hal.inria.fr/inria-00075494/document |journal=HAL Open Science}}</ref> प्रोग्रामिंग भाषा जो किसी समस्या के लिए ठीक रूप से अनुकूल है, चाहे वह सामान्य-उद्देश्य वाली भाषा हो या डीएसएल, समस्या के क्षेत्र में अभी भी पर्याप्त अभिव्यंजक होने के समय आवश्यक विवरण के स्तर को कम करना चाहिए।<ref name=":0">{{Cite journal |last=Kosar |first=Tomaz |date=May 2010 |title=Comparing General-Purpose and Domain-Specific Languages: An Empirical Study |url=http://www.doiserbia.nb.rs/img/doi/1820-0214/2010/1820-02141002247K.pdf |journal=Computer Science and Information Systems|volume=7 |issue=2 |pages=247–264 |doi=10.2298/CSIS1002247K }}</ref> अतः जैसा कि नाम से पता चलता है, सामान्य-उद्देश्य वाली भाषा "सामान्य" है जिसमें यह डोमेन-विशिष्ट संकेतन के लिए समर्थन प्रदान नहीं कर सकती है जबकि डीएसएल को इस समस्या को संभालने के लिए विविध समस्या डोमेन में डिज़ाइन किया जा सकता है।<ref name=":0" /> इस प्रकार से डीएसएल के लिए सामान्य-उद्देश्य वाली भाषाओं को प्राथमिकता दी जाती है जब एप्लिकेशन डोमेन अपनी भाषा को वारंट करने के लिए पर्याप्त रूप से ठीक रूप से समझा नहीं जाता है। इस स्थिति में, इसके अतिरिक्त डोमेन के लिए डेटा प्रकारों और फंक्शन्स के उपयुक्त लाइब्रेरी के साथ सामान्य-उद्देश्य वाली भाषा का उपयोग किया जा सकता है।<ref>{{Cite journal |last=van Deursen |first=Arie |date=December 1998 |title=Little languages: little maintenance? |url=https://onlinelibrary.wiley.com/doi/pdf/10.1002/%28SICI%291096-908X%28199803/04%2910%3A2%3C75%3A%3AAID-SMR168%3E3.0.CO%3B2-5 |journal=Journal of Software Maintenance: Research and Practice|volume=10 |issue=2 |pages=75–92 |doi=10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5 }}</ref> जबकि डीएसएल सामान्यतः जीपीएल से छोटे होते हैं, जिसमें वे सार की छोटी सी श्रेणी की प्रस्तुति करते हैं, कुछ डीएसएल में वस्तुतः संपूर्ण जीपीएल उपभाषा के रूप में होता है। इस प्रकार से इन उदाहरणों में, डीएसएल जीपीएल की अभिव्यंजक शक्ति के साथ-साथ डोमेन-विशिष्ट अभिव्यंजक शक्ति प्रदान करने में सक्षम हैं।<ref>{{Cite journal |last1=van Deursen |first1=Arie |last2=Klint |first2=Paul |last3=Visser |first3=Joost |date=June 2000 |title=Domain-specific languages: an annotated bibliography |url=https://dl.acm.org/doi/10.1145/352029.352035 |journal=ACM SIGPLAN Notices |language=en |volume=35 |issue=6 |pages=26–36 |doi=10.1145/352029.352035 |s2cid=1049872 |issn=0362-1340}}</ref>
Line 21: Line 21:
अतः इसके अतिरिक्त, कई फंक्शन्स के लिए (जैसे, सांख्यिकीय विश्लेषण, मशीन लर्निंग, आदि) ऐसे पुस्तकालय हैं जिनका बड़े पैमाने पर परीक्षण और अनुकूलन किया जाता है। इस प्रकार सैद्धांतिक रूप से, इन लाइब्रेरी की उपस्थिति को सामान्य-उद्देश्य और डोमेन-विशिष्ट भाषाओं के अंतराल के बीच की सेतु को रखना चाहिए।<ref name=":0" />
अतः इसके अतिरिक्त, कई फंक्शन्स के लिए (जैसे, सांख्यिकीय विश्लेषण, मशीन लर्निंग, आदि) ऐसे पुस्तकालय हैं जिनका बड़े पैमाने पर परीक्षण और अनुकूलन किया जाता है। इस प्रकार सैद्धांतिक रूप से, इन लाइब्रेरी की उपस्थिति को सामान्य-उद्देश्य और डोमेन-विशिष्ट भाषाओं के अंतराल के बीच की सेतु को रखना चाहिए।<ref name=":0" />


अतः 2010 में अनुभवजन्य अध्ययन ने जीपीएल (C# (प्रोग्रामिंग भाषा)) से परिचित और डीएसएल ([[एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज|एक्स्टेंसिबल एप्लिकेशन मार्कअप भाषा]]) से अपरिचित उपयोगकर्ताओं की समस्याएं देकर जीपीएल और डीएसएल के बीच समस्या-हल और उत्पादकता को मापने का अनुरोध किया था। अंततः, इस विशिष्ट डोमेन-विशिष्ट भाषा के उपयोगकर्ताओं ने 15% के कारक से ठीक निष्पादन किया,यद्यपि वे जीपीएल से अधिक परिचित थे, आगे की शोध की आवश्यकता थी।<ref name=":0" />
अतः 2010 में अनुभवजन्य अध्ययन ने जीपीएल (C# (प्रोग्रामिंग भाषा)) से परिचित और डीएसएल ([[एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज|'''एक्स्टेंसिबल एप्लिकेशन मार्कअप भाषा''']]) से अपरिचित उपयोगकर्ताओं की समस्याएं देकर जीपीएल और डीएसएल के बीच समस्या-हल और उत्पादकता को मापने का अनुरोध किया था। अंततः, इस विशिष्ट डोमेन-विशिष्ट भाषा के उपयोगकर्ताओं ने 15% के कारक से ठीक निष्पादन किया,यद्यपि वे जीपीएल से अधिक परिचित थे, आगे की शोध की आवश्यकता थी।<ref name=":0" />
== उदाहरण ==
== उदाहरण ==


Line 36: Line 36:
* वेब डेवलपमेंट: दीजांगो (वेब ​​संरचना) और [[फ्लास्क (वेब ​​फ्रेमवर्क)|फ्लास्क (वेब ​​संरचना)]] जैसे संरचना ने वेब डेवलपर्स को स्ट्रिक्ट वेब सर्वर बनाने की अनुमति दी है जो व्यापक पायथन पारिस्थितिकी तंत्र का लाभ उठा सकते हैं।
* वेब डेवलपमेंट: दीजांगो (वेब ​​संरचना) और [[फ्लास्क (वेब ​​फ्रेमवर्क)|फ्लास्क (वेब ​​संरचना)]] जैसे संरचना ने वेब डेवलपर्स को स्ट्रिक्ट वेब सर्वर बनाने की अनुमति दी है जो व्यापक पायथन पारिस्थितिकी तंत्र का लाभ उठा सकते हैं।
* विज्ञान और शिक्षा: [[SciPy|साईपाई]] और [[पांडा (सॉफ्टवेयर)]] जैसे वैज्ञानिक और डेटा लाइब्रेरी ने वैज्ञानिक अनुसंधान में पायथन के उपयोग को सक्षम किया है।<ref>{{Cite web |title=Programming Languages Popularity in 12,086 Research Papers – Quantifying Health |url=https://quantifyinghealth.com/programming-languages-popularity-in-research/ |access-date=2022-06-03 |language=en-US}}</ref>
* विज्ञान और शिक्षा: [[SciPy|साईपाई]] और [[पांडा (सॉफ्टवेयर)]] जैसे वैज्ञानिक और डेटा लाइब्रेरी ने वैज्ञानिक अनुसंधान में पायथन के उपयोग को सक्षम किया है।<ref>{{Cite web |title=Programming Languages Popularity in 12,086 Research Papers – Quantifying Health |url=https://quantifyinghealth.com/programming-languages-popularity-in-research/ |access-date=2022-06-03 |language=en-US}}</ref>
* मशीन लर्निंग: साईकिट[[scikit-सीखें|-सीखें]] और [[टेंसरफ्लो]] जैसी लाइब्रेरी ने डेवलपर्स के लिए मशीन लर्निंग की पहुंच बढ़ा दी है।<ref>{{Cite journal |last=Pedregosa |first=Fabian |date=2011 |title=Scikit-learn: Machine learning in Python |url=https://www.jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf?ref=https://githubhelp.com |journal=The Journal of Machine Learning Research|arxiv=1201.0490 }}</ref>
* मशीन लर्निंग: साईकिट[[scikit-सीखें|-लर्निंग]] और [[टेंसरफ्लो]] जैसी लाइब्रेरी ने डेवलपर्स के लिए मशीन लर्निंग की पहुंच बढ़ा दी है।<ref>{{Cite journal |last=Pedregosa |first=Fabian |date=2011 |title=Scikit-learn: Machine learning in Python |url=https://www.jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf?ref=https://githubhelp.com |journal=The Journal of Machine Learning Research|arxiv=1201.0490 }}</ref>
* सामान्य सॉफ़्टवेयर विकास: उपयोगकर्ता एप्लिकेशन, वेब स्क्रैपिंग प्रोग्राम, गेम और अन्य सामान्य सॉफ़्टवेयर विकसित करना था।
* सामान्य सॉफ़्टवेयर विकास: उपयोगकर्ता एप्लिकेशन, वेब स्क्रैपिंग प्रोग्राम, गेम और अन्य सामान्य सॉफ़्टवेयर विकसित करना था।


== सूची ==
== '''सूची''' ==
{{Main|प्रोग्रामिंग भाषाओं की सूची}}
{{Main|प्रोग्रामिंग भाषाओं की सूची}}



Revision as of 11:24, 27 June 2023

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

इतिहास

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

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

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

इस प्रकार से 1960 के दशक के प्रारंभ में कई विशिष्ट भाषाएं भी विकसित की गईं: असतत घटना अनुकरण के लिए जीपीएसएस और सिमुला आदि हैं; अतः प्रोग्रामिंग सिखाने के लिए मैड (प्रोग्रामिंग भाषा), बेसिक, लोगो (प्रोग्रामिंग भाषा), और पास्कल (प्रोग्रामिंग भाषा) ; सी (प्रोग्रामिंग भाषा) सिस्टम प्रोग्रामिंग के लिए हैं; और इंटरैक्टिव प्रोग्रामिंग के लिए जोस और एपीएल\360 हैं।[1]

जीपीएल बनाम डीएसएल

इस प्रकार से सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषाओं और डोमेन-विशिष्ट प्रोग्रामिंग भाषाओं के बीच अंतर सदैव स्पष्ट नहीं होता है।[2] प्रोग्रामिंग भाषा विशिष्ट कार्य के लिए बनाई जा सकती है, परन्तु उस मूल डोमेन के अतिरिक्त उपयोग की जाती है और इस प्रकार इसे सामान्य प्रयोजन प्रोग्रामिंग भाषा माना जाता है। उदाहरण के लिए, कोबोल, फोरट्रान और लिस्प (प्रोग्रामिंग भाषा) को डीएसएल (बिजनेस प्रोसेसिंग, न्यूमेरिक कम्प्यूटेशन और सिंबॉलिक प्रोसेसिंग के लिए) के रूप में बनाया गया था, परन्तु समय के साथ जीपीएल बन गया था। इस प्रकार विपरीत रूप से, भाषा को सामान्य उपयोग के लिए डिज़ाइन किया जा सकता है परन्तु व्यवहार में मात्र विशिष्ट क्षेत्र में ही लागू किया जाता है।[3] प्रोग्रामिंग भाषा जो किसी समस्या के लिए ठीक रूप से अनुकूल है, चाहे वह सामान्य-उद्देश्य वाली भाषा हो या डीएसएल, समस्या के क्षेत्र में अभी भी पर्याप्त अभिव्यंजक होने के समय आवश्यक विवरण के स्तर को कम करना चाहिए।[4] अतः जैसा कि नाम से पता चलता है, सामान्य-उद्देश्य वाली भाषा "सामान्य" है जिसमें यह डोमेन-विशिष्ट संकेतन के लिए समर्थन प्रदान नहीं कर सकती है जबकि डीएसएल को इस समस्या को संभालने के लिए विविध समस्या डोमेन में डिज़ाइन किया जा सकता है।[4] इस प्रकार से डीएसएल के लिए सामान्य-उद्देश्य वाली भाषाओं को प्राथमिकता दी जाती है जब एप्लिकेशन डोमेन अपनी भाषा को वारंट करने के लिए पर्याप्त रूप से ठीक रूप से समझा नहीं जाता है। इस स्थिति में, इसके अतिरिक्त डोमेन के लिए डेटा प्रकारों और फंक्शन्स के उपयुक्त लाइब्रेरी के साथ सामान्य-उद्देश्य वाली भाषा का उपयोग किया जा सकता है।[5] जबकि डीएसएल सामान्यतः जीपीएल से छोटे होते हैं, जिसमें वे सार की छोटी सी श्रेणी की प्रस्तुति करते हैं, कुछ डीएसएल में वस्तुतः संपूर्ण जीपीएल उपभाषा के रूप में होता है। इस प्रकार से इन उदाहरणों में, डीएसएल जीपीएल की अभिव्यंजक शक्ति के साथ-साथ डोमेन-विशिष्ट अभिव्यंजक शक्ति प्रदान करने में सक्षम हैं।[6]

अतः सामान्य प्रयोजन प्रोग्रामिंग भाषाएँ सभी ट्यूरिंग पूर्णता हैं, जिसका अर्थ है कि वे सैद्धांतिक रूप से किसी भी कम्प्यूटेशनल समस्या को हल कर सकते हैं। इस प्रकार से डोमेन-विशिष्ट भाषाएं प्रायः समान रूप से ट्यूरिंग पूर्ण होती हैं परन्तु विशेष रूप से ऐसा नहीं है।

लाभ और हानि

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

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

अतः 2010 में अनुभवजन्य अध्ययन ने जीपीएल (C# (प्रोग्रामिंग भाषा)) से परिचित और डीएसएल (एक्स्टेंसिबल एप्लिकेशन मार्कअप भाषा) से अपरिचित उपयोगकर्ताओं की समस्याएं देकर जीपीएल और डीएसएल के बीच समस्या-हल और उत्पादकता को मापने का अनुरोध किया था। अंततः, इस विशिष्ट डोमेन-विशिष्ट भाषा के उपयोगकर्ताओं ने 15% के कारक से ठीक निष्पादन किया,यद्यपि वे जीपीएल से अधिक परिचित थे, आगे की शोध की आवश्यकता थी।[4]

उदाहरण

सी (प्रोग्रामिंग भाषा)

इस प्रकार से C (प्रोग्रामिंग भाषा), B (प्रोग्रामिंग भाषा) के पूर्ववर्ती को बड़े पैमाने पर विशिष्ट उद्देश्य के लिए विकसित किया गया था: सिस्टम प्रोग्रामिंग।[8] अतः इसके विपरीत, सी ने विभिन्न कम्प्यूटेशनल डोमेन जैसे ऑपरेटिंग सिस्टम, डिवाइस ड्राइवर, एप्लीकेशन प्रोग्राम और अंतः स्थापित प्रणाली में उपयोग पाया है।

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

सी ++

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

पायथन (प्रोग्रामिंग भाषा)

इस प्रकार से पायथन (प्रोग्रामिंग भाषा) की कल्पना ऐसी भाषा के रूप में की गई थी जो कोड पठनीयता और विस्तारशीलता पर बल देती थी।[14][15] पूर्व ने गैर-सॉफ्टवेयर इंजीनियरों को सरलता से कंप्यूटर प्रोग्राम सीखने और लिखने की अनुमति दी, जबकि बाद वाले ने डोमेन विशेषज्ञों को अपने स्वयं के उपयोग की स्थितियों के अनुकूल लाइब्रेरी को सरलता से बनाने की अनुमति दी थी। अतः इन कारणों से, पायथन का उपयोग डोमेन की विस्तृत श्रृंखला में किया गया है।

इस प्रकार से नीचे कुछ ऐसे क्षेत्र हैं जहाँ पायथन का उपयोग किया जाता है:[16]

  • वेब डेवलपमेंट: दीजांगो (वेब ​​संरचना) और फ्लास्क (वेब ​​संरचना) जैसे संरचना ने वेब डेवलपर्स को स्ट्रिक्ट वेब सर्वर बनाने की अनुमति दी है जो व्यापक पायथन पारिस्थितिकी तंत्र का लाभ उठा सकते हैं।
  • विज्ञान और शिक्षा: साईपाई और पांडा (सॉफ्टवेयर) जैसे वैज्ञानिक और डेटा लाइब्रेरी ने वैज्ञानिक अनुसंधान में पायथन के उपयोग को सक्षम किया है।[17]
  • मशीन लर्निंग: साईकिट-लर्निंग और टेंसरफ्लो जैसी लाइब्रेरी ने डेवलपर्स के लिए मशीन लर्निंग की पहुंच बढ़ा दी है।[18]
  • सामान्य सॉफ़्टवेयर विकास: उपयोगकर्ता एप्लिकेशन, वेब स्क्रैपिंग प्रोग्राम, गेम और अन्य सामान्य सॉफ़्टवेयर विकसित करना था।

सूची

इस प्रकार से निम्नलिखित कुछ सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषाएँ हैं:

टिप्पणियाँ

  1. 1.0 1.1 Jean E. Sammet, "Programming Languages: History and Future", Communications of the ACM 15:7:601-610 (July 1972) doi:10.1145/361454.361485
  2. "Domain-Specific Languages: An Annotated Bibliography*". CiteSeerX 10.1.1.33.8207. {{cite web}}: Missing or empty |url= (help)
  3. Berry, Gerard (May 2006). "Real time programming: special purpose or general purpose languages". HAL Open Science.
  4. 4.0 4.1 4.2 4.3 Kosar, Tomaz (May 2010). "Comparing General-Purpose and Domain-Specific Languages: An Empirical Study" (PDF). Computer Science and Information Systems. 7 (2): 247–264. doi:10.2298/CSIS1002247K.
  5. van Deursen, Arie (December 1998). "Little languages: little maintenance?". Journal of Software Maintenance: Research and Practice. 10 (2): 75–92. doi:10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5.
  6. van Deursen, Arie; Klint, Paul; Visser, Joost (June 2000). "Domain-specific languages: an annotated bibliography". ACM SIGPLAN Notices (in English). 35 (6): 26–36. doi:10.1145/352029.352035. ISSN 0362-1340. S2CID 1049872.
  7. "The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data". statisticsanddata.org. Retrieved 2022-06-03.
  8. (PDF) https://web.archive.org/web/20150611114427/https://www.bell-labs.com/usr/dmr/www/kbman.pdf. Archived from the original (PDF) on 2015-06-11. Retrieved 2022-06-03. {{cite web}}: Missing or empty |title= (help)
  9. W., Kernighan, Brian (2016). सी प्रोग्रामिंग भाषा. Prentice Hall. ISBN 978-0-13-110370-2. OCLC 1004153413.{{cite book}}: CS1 maint: multiple names: authors list (link)
  10. Ritchie, Dennis (April 1993). "सी भाषा का विकास" (PDF). ACM SIGPLAN Notices. 28 (3): 201–208. doi:10.1145/155360.155580.
  11. "टीआईओबीई सूचकांक". TIOBE (in English). Retrieved 2022-06-03.
  12. Stroustrup, Bjarne (1995). सी ++ प्रोग्रामिंग भाषा. Addison-Wesley.
  13. 13.0 13.1 "सी ++ अनुप्रयोग". www.stroustrup.com. Retrieved 2022-06-03.
  14. "आर्टिमा - द मेकिंग ऑफ पायथन". www.artima.com. Retrieved 2022-06-03.
  15. "General Python FAQ — Python 3.10.4 documentation". docs.python.org. Retrieved 2022-06-03.
  16. "पायथन के लिए आवेदन". Python.org (in English). Retrieved 2022-06-03.
  17. "Programming Languages Popularity in 12,086 Research Papers – Quantifying Health" (in English). Retrieved 2022-06-03.
  18. Pedregosa, Fabian (2011). "Scikit-learn: Machine learning in Python" (PDF). The Journal of Machine Learning Research. arXiv:1201.0490.


यह भी देखें

श्रेणी:प्रोग्रामिंग भाषाएँ