सामान्य प्रयोजन प्रोग्रामिंग भाषा: Difference between revisions
(Created page with "{{Short description|Programming language used in many domains}} कंप्यूटर सॉफ्टवेयर में, एक सामान्य-उद्द...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Programming language used in many domains}} | {{Short description|Programming language used in many domains}} | ||
[[कंप्यूटर सॉफ्टवेयर]] में, | [[कंप्यूटर सॉफ्टवेयर|'''कंप्यूटर सॉफ्टवेयर''']] में, '''सामान्य-उद्देश्य [[प्रोग्रामिंग भाषा]] (जीपीएल)''' विभिन्न प्रकार के एप्लिकेशन डोमेन ([[सॉफ़्टवेयर]] इंजीनियरिंग) में सॉफ़्टवेयर बनाने के लिए प्रोग्रामिंग भाषा है। इसके विपरीत, विशिष्ट क्षेत्र के भीतर '''[[डोमेन-विशिष्ट प्रोग्रामिंग भाषा]] (डीएसएल)''' का उपयोग किया जाता है। उदाहरण के लिए, [[पायथन (प्रोग्रामिंग भाषा)]] जीपीएल है, जबकि [[SQL|एसक्यूएल]] क्वेरी भाषा के लिए डीएसएल है। | ||
== इतिहास == | == इतिहास == | ||
प्रारंभिक प्रोग्रामिंग भाषाओं को या तो वैज्ञानिक कंप्यूटिंग (संख्यात्मक गणना) या व्यावसायिक डेटा प्रोसेसिंग के लिए डिज़ाइन किया गया था, जैसा कि कंप्यूटर हार्डवेयर था। [[फोरट्रान]] और एएलजीओएल जैसी वैज्ञानिक भाषाएँ फ़्लोटिंग-पॉइंट गणनाओं और बहुआयामी सरणियों का समर्थन करती हैं, जबकि व्यावसायिक भाषाएँ जैसे [[COBOL]] फिक्स्ड-फ़ील्ड फ़ाइल स्वरूपों और [[रिकॉर्ड (कंप्यूटर विज्ञान)]] का समर्थन करती हैं। सूची के लिए [[आईपीएल-वी]] और एलआईएसपी (अमूर्त डेटा प्रकार) जैसी विशिष्ट भाषाएं बहुत कम व्यापक रूप से | प्रारंभिक प्रोग्रामिंग भाषाओं को या तो वैज्ञानिक कंप्यूटिंग (संख्यात्मक गणना) या व्यावसायिक डेटा प्रोसेसिंग के लिए डिज़ाइन किया गया था, जैसा कि कंप्यूटर हार्डवेयर था। [[फोरट्रान]] और एएलजीओएल जैसी वैज्ञानिक भाषाएँ फ़्लोटिंग-पॉइंट गणनाओं और बहुआयामी सरणियों का समर्थन करती हैं, जबकि व्यावसायिक भाषाएँ जैसे [[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 में की गई थी, जिसको एकीकृत हार्डवेयर आर्किटेक्चर के रूप में डिज़ाइन किया गया था जो वैज्ञानिक और व्यावसायिक दोनों अनुप्रयोगों का समर्थन करता है, और आईबीएम ने इसके लिए पीएल/आई को एकल, सामान्य-उद्देश्य वाली भाषा के रूप में विकसित किया जो वैज्ञानिक, वाणिज्यिक, और सिस्टम प्रोग्रामिंग हैं। वस्तुतः, पीएल/आई के उपसमुच्चय का उपयोग [[ मॉलटिक्स |मॉलटिक्स]] ऑपरेटिंग सिस्टम के लिए मानक सिस्टम प्रोग्रामिंग भाषा के रूप में किया गया था। | |||
पीएल/आई के बाद से, वैज्ञानिक और वाणिज्यिक प्रोग्रामिंग भाषाओं के बीच का अंतर कम हो गया है, अधिकांश भाषाएं दोनों के लिए आवश्यक मूलभूत सुविधाओं का समर्थन करती हैं, और विशेष डेटाबेस प्रबंधन प्रणाली को प्रत्यायोजित विशेष फ़ाइल प्रारूप का संचालन करती हैं। | |||
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> | ||
सामान्य प्रयोजन प्रोग्रामिंग भाषाएँ सभी [[ट्यूरिंग पूर्णता]] हैं, जिसका अर्थ है कि वे सैद्धांतिक रूप से किसी भी कम्प्यूटेशनल समस्या को हल कर सकते हैं। डोमेन-विशिष्ट भाषाएं प्रायः समान रूप से ट्यूरिंग पूर्ण होती हैं परन्तु विशेष रूप से ऐसा नहीं है। | |||
=== लाभ और हानि === | |||
प्रोग्रामर द्वारा सामान्य-उद्देश्य प्रोग्रामिंग भाषाओं का अधिक उपयोग किया जाता है। अध्ययन के अनुसार, सी (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग भाषा), और [[ जावा (प्रोग्रामिंग भाषा) |जावा (प्रोग्रामिंग भाषा)]] 2021 में सबसे अधिक उपयोग की जाने वाली प्रोग्रामिंग भाषा थीं।<ref>{{Cite web |title=The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data |url=https://statisticsanddata.org/data/the-most-popular-programming-languages-1965-2021/#:~:text=The%20most%20popular%20programming%20languages%20in%202021%20(TIOBE%20Index)&text=The%20most%20popular%20programming%20language,third%20place%20with%20a%2010.31%25 |access-date=2022-06-03 |website=statisticsanddata.org}}</ref> डोमेन-विशिष्ट भाषाओं पर सामान्य-उद्देश्य प्रोग्रामिंग भाषाओं का उपयोग करने के पक्ष में तर्क यह है कि अधिक लोग इन भाषाओं से परिचित होंगे, नवीन भाषा सीखने की आवश्यकता पर काबू पा लेंगे। | |||
इसके अतिरिक्त, कई फंक्शन्स के लिए (जैसे, सांख्यिकीय विश्लेषण, मशीन लर्निंग, आदि) ऐसे पुस्तकालय हैं जिनका बड़े पैमाने पर परीक्षण और अनुकूलन किया जाता है। सैद्धांतिक रूप से, इन लाइब्रेरी की उपस्थिति को सामान्य-उद्देश्य और डोमेन-विशिष्ट भाषाओं के अंतराल के बीच की सेतु को रखना चाहिए।<ref name=":0" /> | |||
2010 में अनुभवजन्य अध्ययन ने जीपीएल (C# (प्रोग्रामिंग भाषा)) से परिचित और डीएसएल ([[एक्स्टेंसिबल एप्लिकेशन मार्कअप लैंग्वेज|एक्स्टेंसिबल एप्लिकेशन मार्कअप भाषा]]) से अपरिचित उपयोगकर्ताओं की समस्याएं देकर जीपीएल और डीएसएल के बीच समस्या-हल और उत्पादकता को मापने का अनुरोध किया था। अंततः, इस विशिष्ट डोमेन-विशिष्ट भाषा के उपयोगकर्ताओं ने 15% के कारक से ठीक निष्पादन किया,यद्यपि वे जीपीएल से अधिक परिचित थे, आगे की शोध की आवश्यकता थी।<ref name=":0" /> | |||
== उदाहरण == | == उदाहरण == | ||
=== सी (प्रोग्रामिंग भाषा) === | === सी (प्रोग्रामिंग भाषा) === | ||
C (प्रोग्रामिंग | C (प्रोग्रामिंग भाषा), B (प्रोग्रामिंग भाषा) के पूर्ववर्ती को बड़े पैमाने पर विशिष्ट उद्देश्य के लिए विकसित किया गया था: सिस्टम प्रोग्रामिंग।<ref>{{Cite web |title= |url=https://www.bell-labs.com/usr/dmr/www/kbman.pdf |access-date=2022-06-03 |archive-url=https://web.archive.org/web/20150611114427/https://www.bell-labs.com/usr/dmr/www/kbman.pdf |archive-date=2015-06-11 }}</ref> इसके विपरीत, सी ने विभिन्न कम्प्यूटेशनल डोमेन जैसे [[ऑपरेटिंग सिस्टम]], [[डिवाइस ड्राइवर]], [[अनुप्रयोग प्रक्रिया सामग्री|एप्लीकेशन प्रोग्राम]] और [[ अंतः स्थापित प्रणाली |अंतः स्थापित प्रणाली]] में उपयोग पाया है। | ||
सी अपनी व्यापकता के कारण विभिन्न क्षेत्रों में उपयोग के लिए उपयुक्त है। यह अभिव्यक्ति की अर्थव्यवस्था, प्रवाह नियंत्रण, डेटा संरचना और ऑपरेटरों का समृद्ध समूह प्रदान करता है, परन्तु अपने उपयोगकर्ताओं को किसी संदर्भ में इसका उपयोग करने के लिए बाध्य नहीं करता है।<ref>{{Cite book |last=W. |first=Kernighan, Brian |url=http://worldcat.org/oclc/1004153413 |title=सी प्रोग्रामिंग भाषा|date=2016 |publisher=Prentice Hall |isbn=978-0-13-110370-2 |oclc=1004153413}}</ref> परिणामस्वरूप, यद्यपि इसे इसके रचनाकारों द्वारा पहली बार [[यूनिक्स]] ऑपरेटिंग सिस्टम के कर्नेल को फिर से लिखने के लिए उपयोग किया गया था,<ref>{{Cite journal |last=Ritchie |first=Dennis |date=April 1993 |title=सी भाषा का विकास|url=https://www.bell-labs.com/usr/dmr/www/chist.pdf |journal=ACM SIGPLAN Notices|volume=28 |issue=3 |pages=201–208 |doi=10.1145/155360.155580 }}</ref> इसे एप्लिकेशन डेवलपमेंट, एम्बेडेड सिस्टम (जैसे, माइक्रोप्रोसेसर प्रोग्रामिंग), वीडियो गेम (जैसे, डूम (फ़्रैंचाइज़ी)), और इसी प्रकार के उपयोग के लिए सरलता से अनुकूलित किया गया था। आज, C सबसे लोकप्रिय और व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषाओं में से है।<ref>{{Cite web |title=टीआईओबीई सूचकांक|url=https://www.tiobe.com/tiobe-index/ |access-date=2022-06-03 |website=TIOBE |language=en-US}}</ref> | |||
=== [[सी ++]] === | === [[सी ++]] === | ||
C (प्रोग्रामिंग | C (प्रोग्रामिंग भाषा) के विस्तार के रूप में अवधारित, C++ ने [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग |ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] |ऑब्जेक्ट-ओरिएंटेड सुविधाओं के साथ-साथ संदर्भ, ऑपरेटर ओवरलोडिंग और डिफ़ॉल्ट तर्क जैसी अन्य सुविधाएं प्रस्तुत कीं। C (प्रोग्रामिंग भाषा) की तरह, C++|C++ की व्यापकता ने इसे व्यापक क्षेत्रों में उपयोग करने की अनुमति दी। जबकि इसका C++ का मुख्य क्षेत्र सिस्टम प्रोग्रामिंग में है (क्योंकि निम्न-स्तरीय आर्किटेक्चर तक पहुंच प्रदान करने की C++ की क्षमता के कारण),<ref>{{Cite book |last=Stroustrup |first=Bjarne |title=सी ++ प्रोग्रामिंग भाषा|publisher=Addison-Wesley |year=1995}}</ref> डेस्कटॉप एप्लिकेशन, वीडियो गेम, डेटाबेस, वित्तीय प्रणाली और बहुत कुछ बनाने के लिए इसका बड़े पैमाने पर उपयोग किया गया है।<ref name=":1">{{Cite web |title=सी ++ अनुप्रयोग|url=https://www.stroustrup.com/applications.html |access-date=2022-06-03 |website=www.stroustrup.com}}</ref> [[Microsoft]], Apple Inc., Bloomberg L.P., और [[Morgan Stanley]] जैसी प्रमुख सॉफ्टवेयर और वित्त कंपनियाँ अभी भी अपने आंतरिक और बाह्य अनुप्रयोगों में व्यापक रूप से C++ का उपयोग करती हैं।<ref name=":1" /> | ||
=== पायथन (प्रोग्रामिंग भाषा) === | === पायथन (प्रोग्रामिंग भाषा) === | ||
पायथन (प्रोग्रामिंग | पायथन (प्रोग्रामिंग भाषा) की कल्पना ऐसी भाषा के रूप में की गई थी जो कोड पठनीयता और विस्तारशीलता पर जोर देती थी।<ref>{{Cite web |title=आर्टिमा - द मेकिंग ऑफ पायथन|url=https://www.artima.com/articles/the-making-of-python |access-date=2022-06-03 |website=www.artima.com}}</ref><ref>{{Cite web |title=General Python FAQ — Python 3.10.4 documentation |url=https://docs.python.org/3/faq/general.html#why-was-python-created-in-the-first-place |access-date=2022-06-03 |website=docs.python.org}}</ref> पूर्व ने गैर-सॉफ्टवेयर इंजीनियरों को सरलता से कंप्यूटर प्रोग्राम सीखने और लिखने की अनुमति दी, जबकि बाद वाले ने डोमेन विशेषज्ञों को अपने स्वयं के उपयोग के मामलों के अनुकूल लाइब्रेरी को सरलता से बनाने की अनुमति दी। इन कारणों से, पायथन का उपयोग डोमेन की विस्तृत श्रृंखला में किया गया है। | ||
नीचे कुछ ऐसे क्षेत्र हैं जहाँ Python का उपयोग किया जाता है:<ref>{{Cite web |title=पायथन के लिए आवेदन|url=https://www.python.org/about/apps/ |access-date=2022-06-03 |website=Python.org |language=en}}</ref> | नीचे कुछ ऐसे क्षेत्र हैं जहाँ Python का उपयोग किया जाता है:<ref>{{Cite web |title=पायथन के लिए आवेदन|url=https://www.python.org/about/apps/ |access-date=2022-06-03 |website=Python.org |language=en}}</ref> | ||
* वेब डेवलपमेंट: Django (वेब फ्रेमवर्क) और [[फ्लास्क (वेब फ्रेमवर्क)]] जैसे फ्रेमवर्क ने वेब डेवलपर्स को मजबूत वेब सर्वर बनाने की अनुमति दी है जो व्यापक पायथन पारिस्थितिकी तंत्र का लाभ उठा सकते हैं। | * वेब डेवलपमेंट: Django (वेब फ्रेमवर्क) और [[फ्लास्क (वेब फ्रेमवर्क)]] जैसे फ्रेमवर्क ने वेब डेवलपर्स को मजबूत वेब सर्वर बनाने की अनुमति दी है जो व्यापक पायथन पारिस्थितिकी तंत्र का लाभ उठा सकते हैं। | ||
* विज्ञान और शिक्षा: [[SciPy]] और [[पांडा (सॉफ्टवेयर)]] जैसे वैज्ञानिक और डेटा | * विज्ञान और शिक्षा: [[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> | ||
* सामान्य सॉफ़्टवेयर विकास: उपयोगकर्ता एप्लिकेशन, वेब स्क्रैपिंग प्रोग्राम, गेम और अन्य सामान्य सॉफ़्टवेयर विकसित करना। | * सामान्य सॉफ़्टवेयर विकास: उपयोगकर्ता एप्लिकेशन, वेब स्क्रैपिंग प्रोग्राम, गेम और अन्य सामान्य सॉफ़्टवेयर विकसित करना। |
Revision as of 11:10, 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++ का मुख्य क्षेत्र सिस्टम प्रोग्रामिंग में है (क्योंकि निम्न-स्तरीय आर्किटेक्चर तक पहुंच प्रदान करने की C++ की क्षमता के कारण),[12] डेस्कटॉप एप्लिकेशन, वीडियो गेम, डेटाबेस, वित्तीय प्रणाली और बहुत कुछ बनाने के लिए इसका बड़े पैमाने पर उपयोग किया गया है।[13] Microsoft, Apple Inc., Bloomberg L.P., और Morgan Stanley जैसी प्रमुख सॉफ्टवेयर और वित्त कंपनियाँ अभी भी अपने आंतरिक और बाह्य अनुप्रयोगों में व्यापक रूप से C++ का उपयोग करती हैं।[13]
पायथन (प्रोग्रामिंग भाषा)
पायथन (प्रोग्रामिंग भाषा) की कल्पना ऐसी भाषा के रूप में की गई थी जो कोड पठनीयता और विस्तारशीलता पर जोर देती थी।[14][15] पूर्व ने गैर-सॉफ्टवेयर इंजीनियरों को सरलता से कंप्यूटर प्रोग्राम सीखने और लिखने की अनुमति दी, जबकि बाद वाले ने डोमेन विशेषज्ञों को अपने स्वयं के उपयोग के मामलों के अनुकूल लाइब्रेरी को सरलता से बनाने की अनुमति दी। इन कारणों से, पायथन का उपयोग डोमेन की विस्तृत श्रृंखला में किया गया है।
नीचे कुछ ऐसे क्षेत्र हैं जहाँ Python का उपयोग किया जाता है:[16]
- वेब डेवलपमेंट: Django (वेब फ्रेमवर्क) और फ्लास्क (वेब फ्रेमवर्क) जैसे फ्रेमवर्क ने वेब डेवलपर्स को मजबूत वेब सर्वर बनाने की अनुमति दी है जो व्यापक पायथन पारिस्थितिकी तंत्र का लाभ उठा सकते हैं।
- विज्ञान और शिक्षा: SciPy और पांडा (सॉफ्टवेयर) जैसे वैज्ञानिक और डेटा लाइब्रेरी ने वैज्ञानिक अनुसंधान में पायथन के उपयोग को सक्षम किया है।[17]
- मशीन लर्निंग: scikit-सीखें और टेंसरफ्लो जैसी लाइब्रेरी ने डेवलपर्स के लिए मशीन लर्निंग की पहुंच बढ़ा दी है।[18]
- सामान्य सॉफ़्टवेयर विकास: उपयोगकर्ता एप्लिकेशन, वेब स्क्रैपिंग प्रोग्राम, गेम और अन्य सामान्य सॉफ़्टवेयर विकसित करना।
सूची
निम्नलिखित कुछ सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषाएँ हैं:
- सी (प्रोग्रामिंग भाषा)
- सी ++
- सी शार्प (प्रोग्रामिंग भाषा)|सी#
- क्लोजर
- क्रिस्टल (प्रोग्रामिंग भाषा)
- डी (प्रोग्रामिंग भाषा)
- डार्ट (प्रोग्रामिंग भाषा)
- डेल्फी (सॉफ्टवेयर)
- अमृत (प्रोग्रामिंग भाषा)
- एरलांग (प्रोग्रामिंग भाषा)
- एफ शार्प (प्रोग्रामिंग भाषा)|एफ#
- जाओ (प्रोग्रामिंग भाषा)
- हार्बर कंपाइलर
- हास्केल (प्रोग्रामिंग भाषा)
- जावा (प्रोग्रामिंग भाषा)
- जावास्क्रिप्ट (प्रोग्रामिंग भाषा)
- जूलिया (प्रोग्रामिंग भाषा)
- कोटलिन (प्रोग्रामिंग भाषा)
- लुआ (प्रोग्रामिंग भाषा)
- मॉड्यूल-2
- ओबेरॉन (प्रोग्रामिंग भाषा)
- उद्देश्य सी
- OCaml
- पर्ल
- पीएचपी
- पाईक (प्रोग्रामिंग भाषा)
- पीएल/आई
- पायथन (प्रोग्रामिंग भाषा)
- रैकेट (प्रोग्रामिंग भाषा)
- रूबी (प्रोग्रामिंग भाषा)
- जंग (प्रोग्रामिंग भाषा)
- स्काला (प्रोग्रामिंग भाषा)
- स्विफ्ट (प्रोग्रामिंग भाषा)
- टीसीएल
- मूल दृश्य
- विजुअल बेसिक .NET
- ज़िग (प्रोग्रामिंग भाषा)
टिप्पणियाँ
- ↑ 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
- ↑ "Domain-Specific Languages: An Annotated Bibliography*". CiteSeerX 10.1.1.33.8207.
{{cite web}}
: Missing or empty|url=
(help) - ↑ Berry, Gerard (May 2006). "Real time programming: special purpose or general purpose languages". HAL Open Science.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ "The Most Popular Programming Languages - 1965/2021 - New Update - Statistics and Data". statisticsanddata.org. Retrieved 2022-06-03.
- ↑ (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) - ↑ W., Kernighan, Brian (2016). सी प्रोग्रामिंग भाषा. Prentice Hall. ISBN 978-0-13-110370-2. OCLC 1004153413.
{{cite book}}
: CS1 maint: multiple names: authors list (link) - ↑ Ritchie, Dennis (April 1993). "सी भाषा का विकास" (PDF). ACM SIGPLAN Notices. 28 (3): 201–208. doi:10.1145/155360.155580.
- ↑ "टीआईओबीई सूचकांक". TIOBE (in English). Retrieved 2022-06-03.
- ↑ Stroustrup, Bjarne (1995). सी ++ प्रोग्रामिंग भाषा. Addison-Wesley.
- ↑ 13.0 13.1 "सी ++ अनुप्रयोग". www.stroustrup.com. Retrieved 2022-06-03.
- ↑ "आर्टिमा - द मेकिंग ऑफ पायथन". www.artima.com. Retrieved 2022-06-03.
- ↑ "General Python FAQ — Python 3.10.4 documentation". docs.python.org. Retrieved 2022-06-03.
- ↑ "पायथन के लिए आवेदन". Python.org (in English). Retrieved 2022-06-03.
- ↑ "Programming Languages Popularity in 12,086 Research Papers – Quantifying Health" (in English). Retrieved 2022-06-03.
- ↑ Pedregosa, Fabian (2011). "Scikit-learn: Machine learning in Python" (PDF). The Journal of Machine Learning Research. arXiv:1201.0490.
यह भी देखें
श्रेणी:प्रोग्रामिंग भाषाएँ