सामान्य उद्देश्य प्रोग्रामिंग भाषा

From alpha
Jump to navigation Jump to search

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

इतिहास

प्रारंभिक प्रोग्रामिंग भाषाओं को या तो वैज्ञानिक कंप्यूटिंग (संख्यात्मक गणना) या वाणिज्यिक डेटा प्रसंस्करण के लिए डिज़ाइन किया गया था, जैसा कि कंप्यूटर हार्डवेयर था।फोरट्रान और एल्गोल जैसी वैज्ञानिक भाषाओं ने फ्लोटिंग-पॉइंट गणना और बहुआयामी सरणियों का समर्थन किया, जबकि COBOL जैसी व्यावसायिक भाषाओं ने फिक्स्ड-फील्ड फ़ाइल प्रारूपों और रिकॉर्ड (कंप्यूटर विज्ञान) का समर्थन किया।बहुत कम व्यापक रूप से उपयोग किए जाने वाले विशेष भाषाएं जैसे कि आईपीएल-वी और एलआईएसपी फॉर लिस्प (अमूर्त डेटा प्रकार);स्ट्रिंग हेरफेर के लिए वादा करना;संख्यात्मक नियंत्रण के लिए APT (प्रोग्रामिंग भाषा)।संकेतक की आवश्यकता वाले तंत्र प्रोग्रामन आमतौर पर सभा की भाषा में की गई थी, हालांकि कुछ सैन्य अनुप्रयोगों के लिए Jovial का उपयोग किया गया था।[1] IBM का IBM सिस्टम/360 | सिस्टम/360, 1964 में घोषित किया गया था, एक एकीकृत हार्डवेयर आर्किटेक्चर के रूप में डिज़ाइन किया गया था, जो वैज्ञानिक और वाणिज्यिक दोनों अनुप्रयोगों का समर्थन करता है, और IBM ने PL/I को एक एकल, सामान्य-उद्देश्य भाषा के रूप में विकसित किया है जो वैज्ञानिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिक, वाणिज्यिकऔर सिस्टम प्रोग्रामिंग।दरअसल, PL/I का एक सबसेट मल्टीस ऑपरेटिंग सिस्टम के लिए मानक सिस्टम प्रोग्रामिंग भाषा के रूप में उपयोग किया गया था।

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

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


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

सामान्य-उद्देश्य प्रोग्रामिंग भाषाओं और डोमेन-विशिष्ट प्रोग्रामिंग भाषाओं के बीच अंतर हमेशा स्पष्ट नहीं होता है।[2] एक विशिष्ट कार्य के लिए लिस्प (प्रोग्रामिंग भाषा) बनाई जा सकती है, लेकिन उस मूल डोमेन से परे उपयोग किया जाता है और इस प्रकार इसे एक सामान्य उद्देश्य प्रोग्रामिंग भाषा माना जाता है।उदाहरण के लिए, COBOL, FORTRAN, और LISP (प्रोग्रामिंग लैंग्वेज) को DSLs (व्यावसायिक प्रसंस्करण, संख्यात्मक गणना और प्रतीकात्मक प्रसंस्करण के लिए) के रूप में बनाया गया था, लेकिन समय के साथ GPL बन गया।[dubious ] इसके विपरीत, एक भाषा सामान्य उपयोग के लिए डिज़ाइन की जा सकती है, लेकिन केवल व्यवहार में एक विशिष्ट क्षेत्र में लागू होती है।[3] एक प्रोग्रामिंग भाषा जो एक समस्या के लिए अच्छी तरह से अनुकूल है, चाहे वह सामान्य-उद्देश्य भाषा हो या डीएसएल, समस्या डोमेन में पर्याप्त रूप से अभिव्यंजक होने के दौरान आवश्यक विस्तार के स्तर को कम करना चाहिए।[4] जैसा कि नाम से पता चलता है, सामान्य-उद्देश्य भाषा "सामान्य" है कि यह डोमेन-विशिष्ट संकेतन के लिए समर्थन प्रदान नहीं कर सकता है जबकि डीएसएल को इस समस्या को संभालने के लिए विविध समस्या डोमेन में डिज़ाइन किया जा सकता है।[4]सामान्य-उद्देश्य वाली भाषाओं को डीएसएल के लिए पसंद किया जाता है जब एक एप्लिकेशन डोमेन को अपनी भाषा को वारंट करने के लिए पर्याप्त रूप से समझा नहीं जाता है।इस मामले में, डोमेन के लिए डेटा प्रकारों और कार्यों की एक उपयुक्त लाइब्रेरी के साथ एक सामान्य-उद्देश्य भाषा का उपयोग किया जा सकता है।[5] जबकि DSL आमतौर पर GPL से छोटे होते हैं कि वे अमूर्तता के अंकन की एक छोटी श्रृंखला प्रदान करते हैं, कुछ DSL वास्तव में एक संपूर्ण GPL को एक सबलुंगेज के रूप में होते हैं।इन उदाहरणों में, DSLs GPL की अभिव्यंजक शक्ति के साथ-साथ डोमेन-विशिष्ट अभिव्यंजक शक्ति प्रदान करने में सक्षम हैं।[6] सामान्य प्रयोजन प्रोग्रामिंग भाषाएं सभी ट्यूरिंग पूर्णता हैं, जिसका अर्थ है कि वे सैद्धांतिक रूप से किसी भी कम्प्यूटेशनल समस्या को हल कर सकते हैं।डोमेन-विशिष्ट भाषाएं अक्सर समान रूप से पूरी तरह से ट्यूरिंग होती हैं, लेकिन विशेष रूप से ऐसा नहीं होती हैं।

फायदे और नुकसान

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

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

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


उदाहरण

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

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

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


C ++

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


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

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

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

  • वेब डेवलपमेंट: Django (वेब फ्रेमवर्क) और फ़्लास्क (वेब फ्रेमवर्क) जैसे फ्रेमवर्क ने वेब डेवलपर्स को मजबूत वेब सर्वर बनाने की अनुमति दी है जो व्यापक पायथन पारिस्थितिकी तंत्र का लाभ भी उठा सकते हैं।
  • विज्ञान और शिक्षाविद: वैज्ञानिक और डेटा लाइब्रेरी, जैसे Scipy और Pandas (सॉफ्टवेयर), ने वैज्ञानिक अनुसंधान में पायथन के उपयोग को सक्षम किया है।[17]
  • मशीन लर्निंग: Scikit-Learn और Tensorflow जैसे पुस्तकालयों ने डेवलपर्स के लिए मशीन लर्निंग की पहुंच बढ़ गई है।[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. 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). The C programming language. Prentice Hall. ISBN 978-0-13-110370-2. OCLC 1004153413.
  10. Ritchie, Dennis (April 1993). "The development of the C language" (PDF). ACM SIGPLAN Notices. 28 (3): 201–208. doi:10.1145/155360.155580.
  11. "TIOBE Index". TIOBE. Retrieved 2022-06-03.
  12. Stroustrup, Bjarne (1995). The C++ Programming Language. Addison-Wesley.
  13. 13.0 13.1 "C++ Applications". www.stroustrup.com. Retrieved 2022-06-03.
  14. "artima - The Making of Python". www.artima.com. Retrieved 2022-06-03.
  15. "General Python FAQ — Python 3.10.4 documentation". docs.python.org. Retrieved 2022-06-03.
  16. "Applications for Python". Python.org. Retrieved 2022-06-03.
  17. "Programming Languages Popularity in 12,086 Research Papers – Quantifying Health". Retrieved 2022-06-03.
  18. Pedregosa, Fabian (2011). "Scikit-learn: Machine learning in Python" (PDF). The Journal of Machine Learning Research. arXiv:1201.0490.


यह भी देखें

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