सिस्टम प्रोग्रामिंग भाषा

एक सिस्टम प्रोग्रामिंग भाषा एक प्रोग्रामिंग भाषा है जिसका उपयोग सिस्टम प्रोग्रामिंग के लिए किया जाता है; ऐसी भाषाओं को सिस्टम सॉफ्ट्वेयर लिखने के लिए डिज़ाइन किया गया है, जिन्हें आमतौर पर एप्लिकेशन सॉफ़्टवेयर की तुलना में अलग-अलग विकास दृष्टिकोणों की आवश्यकता होती है। Edsger W. Dijkstra इन भाषाओं को मशीन उन्मुख उच्च क्रम भाषाओं, या मोहोल के रूप में संदर्भित करता है। सामान्य-उद्देश्य वाली प्रोग्रामिंग भाषाएं सामान्य विशेषताओं पर ध्यान केंद्रित करती हैं ताकि भाषा में लिखे गए कार्यक्रमों को विभिन्न प्लेटफार्मों पर समान कोड का उपयोग करने की अनुमति मिल सके। ऐसी भाषाओं के उदाहरणों में ALGOL और पास्कल (प्रोग्रामिंग भाषा) शामिल हैं। यह सामान्य गुणवत्ता आमतौर पर मशीन की आंतरिक कार्यप्रणाली तक सीधी पहुंच से इनकार करने की कीमत पर आती है, और इसका अक्सर प्रदर्शन पर नकारात्मक प्रभाव पड़ता है।

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

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

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

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

मध्य स्तर की भाषाएं
मध्य-स्तरीय भाषाओं में उच्च स्तर की भाषा की अधिकांश वाक्य-विन्यास और सुविधाएं होती हैं, लेकिन मशीन सुविधाओं के लिए भाषा (साथ ही असेंबली भाषा प्रदान करने) में सीधी पहुंच भी प्रदान करती है। इनमें से सबसे पहले लगभग 1960 में बरोज़ मेनफ्रेम पर एक्जीक्यूटिव सिस्टम प्रॉब्लम ओरिएंटेड लैंग्वेज थी, इसके बाद निकोलस विर्थ का PL360 (पहली बार एक क्रॉस कंपाइलर के रूप में बरोज़ सिस्टम पर लिखा गया था), जिसमें ALGOL 60 का सामान्य सिंटैक्स था लेकिन जिनके बयान सीधे CPU रजिस्टरों में हेरफेर करते थे। और स्मृति। इस श्रेणी की अन्य भाषाओं में MOL-360 और PL/S शामिल हैं।

एक उदाहरण के रूप में, एक विशिष्ट PL360 कथन है, यह दर्शाता है कि रजिस्टर 8 और 7 को एक साथ होना चाहिए, परिणाम 8 बिट्स को स्थानांतरित कर दिया गया है, इसका परिणाम रजिस्टर 6 की सामग्री के साथ है, और अंतिम परिणाम रजिस्टर 9 में रखा गया है।

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

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

सिस्टम प्रोग्रामिंग भाषा (SPL) भी HP 3000 कंप्यूटर श्रृंखला पर एक विशिष्ट भाषा का नाम है, जिसका उपयोग इसके ऑपरेटिंग सिस्टम एचपी मल्टी-प्रोग्रामिंग एक्जीक्यूटिव (MPE) और इसके सिस्टम सॉफ्टवेयर के अन्य भागों के लिए किया जाता है।

यह भी देखें

 * ऑस्टरहॉट का द्विभाजन
 * पूर्वयोजना

बाहरी संबंध

 * System Programming Languages
 * System Programming Languages