सिस्टम प्रोग्रामिंग भाषा
सिस्टम प्रोग्रामिंग भाषा ऐसी प्रोग्रामिंग भाषा है जिसका उपयोग सिस्टम प्रोग्राम करने के लिए किया जाता है, इस प्रकार की भाषाओं को सिस्टम सॉफ्ट्वेयर को उपयोग करने के लिए लिखने हेतु डिज़ाइन किया जाता है, जिन्हें सामान्यतः एप्लिकेशन सॉफ़्टवेयर की तुलना में अलग-अलग विकास दृष्टिकोणों की आवश्यकता होती है। एडजर डब्ल्यू डिज्कस्ट्रा इन भाषाओं को मशीन उन्मुख उच्च क्रम भाषाओं के रूप में संदर्भित करता है।[1]
सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषाएं सामान्य विशेषताओं पर ध्यान केंद्रित करती हैं, जिससे कि भाषा में लिखे गए कार्यक्रमों को विभिन्न प्लेटफार्मों पर समान कोड का उपयोग करने की अनुमति मिल सकते हैं। ऐसी भाषाओं के उदाहरणों में ऐल्गॉल और पास्कल (प्रोग्रामिंग भाषा) सम्मिलित होती हैं। यह सामान्य गुणवत्ता सामान्यतः मशीन की आंतरिक कार्यप्रणाली तक सीधी पहुंच से ना प्राप्त करने की कीमत पर आती है, और इसका अधिकांशतः इसके प्रदर्शन पर ऋणात्मक प्रभाव पड़ता है।
इसके विपरीत, सिस्टम भाषाओं को अनुकूलता के लिए डिज़ाइन नहीं किया गया है, इसके कारण संरचित प्रोग्रामिंग जैसी उच्च-स्तरीय प्रोग्रामिंग अवधारणाएँ प्रदान करते हुए अच्छा प्रदर्शन करती हैं, और अंतर्निहित हार्डवेयर तक सरलता से पहुँचने के लिए डिज़ाइन की जाती हैं। इस प्रकार इसके उदाहरणों में सिस्टम प्रोग्रामिंग भाषा और कार्यकारी प्रणाली समस्या उन्मुख भाषा सम्मिलित हैं, जो दोनों सिंटैक्स में एल्गोल के समान हैं किन्तु अपने संबंधित प्लेटफॉर्म पर ट्यून किया जाता हैं। अन्य क्रॉस-प्लेटफ़ॉर्म हैं किन्तु हार्डवेयर के समीप कार्य करने के लिए डिज़ाइन किए गए हैं, जैसे ब्लिस, जोवियल और बीसीपीएल इत्यादि।
कुछ भाषाएँ इन उपयोगों के बीच के रिक्त स्थान को खत्म करते हुए सिस्टम और एप्लिकेशन डोमेन का प्रसार करता हैं। विहित उदाहरण मुख्यतः सी (प्रोग्रामिंग भाषा) के लिए है, जो सिस्टम और एप्लिकेशन प्रोग्रामिंग दोनों के लिए व्यापक रूप से उपयोग किया जाता है। कुछ आधुनिक भाषाएँ भी ऐसा करती हैं जैसे रस्ट (प्रोग्रामिंग भाषा) और स्विफ्ट (प्रोग्रामिंग भाषा) इत्यादि।
सुविधाएँ
एप्लिकेशन भाषाओं के विपरीत, सिस्टम प्रोग्रामिंग भाषाएं सामान्यतः मशीन के भौतिक हार्डवेयर तक अधिक-सीधी पहुंच प्रदान करती हैं: इस अर्थ में एक आर्किटेपिकल सिस्टम प्रोग्रामिंग भाषा बीसीपीएल थी। सिस्टम प्रोग्रामिंग लैंग्वेज में अधिकांशतः बिल्ट-इन इनपुट/आउटपुट (I/O) सुविधाओं की कमी होती है क्योंकि एक सिस्टम-सॉफ्टवेयर प्रोजेक्ट सामान्यतः अपने स्वयं के I/O सिस्टम विकसित करता है या मौलिक मॉनिटर I/O या स्क्रीन प्रबंधन सुविधाओं पर बनाता है। पीएल/आई, सी (प्रोग्रामिंग लैंग्वेज) और पास्कल (प्रोग्रामिंग लैंग्वेज) की व्यापक लोकप्रियता के साथ सिस्टम प्रोग्रामिंग और एप्लिकेशन प्रोग्रामिंग के लिए उपयोग की जाने वाली भाषाओं के बीच का अंतर समय के साथ कम हो गया हैं।
इतिहास
प्रारंभिक सिस्टम सॉफ़्टवेयर मुख्य रूप से असेंबली भाषा में लिखा गया था क्योंकि इसका कोई विकल्प नहीं था, इसके अतिरिक्त ऑब्जेक्ट कोड की दक्षता, संकलन समय और डिबगिंग में सरलता सहित अन्य कारणों से भी लिखा गया था। फोरट्रान जैसी एप्लिकेशन भाषाओं का उपयोग सिस्टम प्रोग्रामिंग के लिए किया गया था, चूंकि उन्हें सामान्यतः असेंबली भाषा में लिखे जाने के लिए कुछ रूटीन की आवश्यकता होती है।[2]
मध्य स्तर की भाषाएं
मध्य-स्तरीय भाषाओं में उच्च स्तर की भाषा की अधिकांश वाक्य-विन्यास और सुविधाएं होती हैं, किन्तु मशीन सुविधाओं के लिए भाषा (साथ ही असेंबली भाषा प्रदान करने) में सीधी पहुंच भी प्रदान करती है।[2] इनमें से सबसे पहले लगभग 1960 में बरोज़ मेनफ्रेम पर एक्जीक्यूटिव सिस्टम प्रॉब्लम ओरिएंटेड भाषा थी, इसके पश्चात निकोलस विर्थ का पीएल360 (पहली बार एक क्रॉस कंपाइलर के रूप में बरोज़ सिस्टम पर लिखा गया था), जिसमें एल्गोल 60 का सामान्य सिंटैक्स था किन्तु जिनके कथन सीधे सीपीयू रजिस्टरों और स्मृति में परिवर्तन करते थे। इस श्रेणी की अन्य भाषाओं में एमओएल-360 और पीएल/एस सम्मिलित हैं।
उदाहरण के रूप में, विशिष्ट पीएल360 का कथन R9 := R8 and R7 shll 8 or R6
है जो यह दर्शाता है कि रजिस्टर 8 और 7 को एक साथ होना चाहिए, इसके परिणामस्वरूप 8 बिट्स को स्थानांतरित कर दिया गया है, इसका परिणाम रजिस्टर 6 की सामग्री के साथ है, और अंतिम परिणाम रजिस्टर 9 में रखा जाता है।[3]
उच्च स्तरीय भाषाएं
जबकि पीएल360 असेंबली लैंग्वेज के सिमेंटिक स्तर पर है, इसलिए अन्य प्रकार की सिस्टम प्रोग्रामिंग लैंग्वेज उच्च सिमेंटिक लेवल पर कार्य करती है, किन्तु सिस्टम प्रोग्रामिंग के लिए भाषा को उपयुक्त बनाने के लिए विशिष्ट एक्सटेंशन डिज़ाइन किए गए हैं। इस प्रकार की भाषा का प्रारंभिक उदाहरण एलआरएलट्रैन है,[4] जिसने फोरट्रान को चरित्र और बिट मैनिपुलेशन, पॉइंटर्स, और सीधे संबोधित जंप टेबल के लिए सुविधाओं के साथ विस्तारित की हैं।
इसके बाद, सी जैसी भाषाएं विकसित की गईं, जहां सुविधाओं का संयोजन सिस्टम सॉफ्टवेयर लिखने के लिए पर्याप्त था, और संकलक विकसित किया जा सकता था जो सरल से हार्डवेयर पर कुशल ऑब्जेक्ट प्रोग्राम उत्पन्न करता था। ऐसी भाषा सामान्यतः उन विशेषताओं को छोड़ देती है जिन्हें कुशलतापूर्वक लागू नहीं किया जा सकता है, और विशिष्ट हार्डवेयर क्षमताओं तक पहुँचने के लिए आवश्यक मशीन-निर्भर सुविधाओं की छोटी संख्या जोड़ती है; इनलाइन असेंबली कोड, जैसे सी asm
कथन, अधिकांशतः इस प्रयोजन के लिए प्रयोग किया जाता है। चूंकि ऐसी कई भाषाएँ विकसित की गईं,[1] जिसके कारण सी और सी ++ सुरक्षित की गई हैं।
सिस्टम प्रोग्रामिंग भाषा (एसपीएल) भी एचपी 3000 कंप्यूटर श्रृंखला पर विशिष्ट भाषा का नाम है, जिसका उपयोग इसके ऑपरेटिंग सिस्टम एचपी मल्टी-प्रोग्रामिंग एक्जीक्यूटिव (MPE) और इसके सिस्टम सॉफ्टवेयर के अन्य भागों के लिए किया जाता है।
प्रमुख भाषाएँ
भाषा | लेखक | जन्म दिवस | से प्रभावित | के लिए उपयोग होता है |
---|---|---|---|---|
एस्पाॅल | बरोज़ कॉर्पोरेशन | 1961 | एल्गोल 60 | एमसीपी |
पीएल/आई | आईबीएम, शेयर | 1964 | एल्गोल, फाॅर्ट्रैन, कोबोल | मॉलटिक्स |
पीएल/एस | आईबीएम | 1960's | पीएल/I | OS/360 |
पीएल360 | निक्लैस बर्थ | 1968 | एल्गोल 60 | एल्गोल W |
पास्कल | निक्लैस बर्थ | 1970 | एल्गोल W | अपोलो कंप्यूटर एजिस, एप्पल मैकऐप, यूसीएसडी पी-सिस्टम |
ब्लिस | कैर्नेजी मेलोन विश्वविद्यालय | 1970 | एल्गोल-पीएल/I[5] | वीएमएस (भाग) |
सिस्टम डेवलपमेंट के लिए भाषा (एलएसडी) | आर डैनियल बरोज एट एल ब्राउन विश्वविद्यालय | 1971 | पीएल/I | |
सी | Dennis Ritchie | 1972 | बीसीपीएल, बी (प्रोग्रामिंग भाषा) | यूनिक्स जैसे सिस्टम सहित अधिकांश ऑपरेटिंग सिस्टम कर्नेल |
नयूपी | बरोज | 1970’s | एस्पाॅल, एल्गोल | MCP |
पीएल/8 | आईबीएम | 1970's | पीएल/I | AIX |
पीएल-6 | हनीवेल, इंक। | 1970's | पीएल/I | CP-6 |
सिंपल | सीडीसी | 1970's | जोवियल | एनओएस सबसिस्टम, अधिकांश कंपाइलर, एफएसई संपादक |
C++ | बज़्ने स्ट्रॉस्ट्रुप | 1979 | सी, सिमुला | जीयूआई अनुप्रयोग (क्यूटी, विंडोज, आदि), खेल (अवास्तविक इंजन) |
एडीए | जीन इचबिआह, एस. टकर टैफ्ट | 1983 | एल्गोल 68, पास्कल, C++, आइफेल | |
डी | डिजिटल मार्स | 2001 | C++ | |
निम | एंड्र्यू रम्फ | 2006 | पायथन, एडीए , लिस्प, ओबेरॉन, सी++, मोडुला-3, ऑब्जेक्ट पास्कल | |
गो | गूगल | 2009 | पायथन, सी ++ डिस्लाइक, पास्कल से कुछ वाक्यविन्यास | डोकर, पॉडमैन |
रस्ट | मौजिला रिसर्च[6] | 2010 | सी ++, हास्केल, एरलांग, रूबी | सर्वो, रेडॉक्स ओएस |
स्विफ्ट | एप्पल इंक | 2014 | सी, ऑब्जेक्टिव-सी, डी, रस्ट | macOS, iOS, watchOS और TVOS बिल्कुल समान[lower-alpha 1] |
जिग | एंड्रयू कैली | 2016 | सी, सी ++, एलएलवीएम आईआर, गो, रस्ट |
यह भी देखें
- ऑस्टरहॉट का द्विभाजन
- पूर्वयोजना
टिप्पणियाँ
- ↑ Swift uses Automatic Reference Counting
संदर्भ
- ↑ 1.0 1.1 van der Poel, W. L.; Maarssen, L. A., eds. (27–31 August 1973). मशीन उन्मुख उच्च स्तरीय भाषाएं. IFIP Working Conference on Machine Oriented Higher Level Languages (MOHL). Trondheim, Norway: International Federation for Information Processing. Proceedings published 1974.
- ↑ 2.0 2.1 Sammet, Jean (October 1971). "सिस्टम कार्यान्वयन के लिए प्रयुक्त भाषाओं का संक्षिप्त सर्वेक्षण". ACM SIGPLAN Notices. 6 (9): 1–19. doi:10.1145/942596.807055.
- ↑ Wirth, Niklaus. "PL360, A Programming Language for the 360 Computers". Journal of the ACM. 15 (1): 37–74.
- ↑ Mendicino, Sam F.; Hughes, Robert A.; Martin, Jeanne T.; McMahon, Frank H.; Ranelletti, John E.; Zwakenberg, Richard G. "एलआरएलटीआरएन कंपाइलर". Communications of the ACM. 11 (11): 747–755.
- ↑ Wulf, W. A.; Russell, D. B.; Haberman, A. N. (December 1971). "BLISS: A Language for Systems Programming". Communications of the ACM. 14 (12): 780–790. CiteSeerX 10.1.1.691.9765. doi:10.1145/362919.362936.
- ↑ "Mozilla Research". 1 January 2014.
बाहरी संबंध
- Corbató, Fernando (1969-05-06). "PL/I as a Tool for System Programming". Datamation: 68–76. Retrieved 2012-01-23.
- System Programming Languages