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

प्रणाली प्रोग्रामिंग, या प्रणाली प्रोग्रामिंग, प्रोग्रामिंग कंप्यूटर प्रणाली सॉफ्ट्वेयर की गतिविधि है। अनुप्रयोग प्रोग्रामिंग की तुलना में प्रणाली प्रोग्रामिंग की प्राथमिक विशिष्ट विशेषता यह है कि एप्लिकेशन प्रोग्रामिंग का उद्देश्य सॉफ़्टवेयर का उत्पादन करना है जो उपयोगकर्ता को सीधे सेवाएं प्रदान करता है (जैसे शब्द संसाधक), जबकि प्रणाली प्रोग्रामिंग का उद्देश्य सॉफ़्टवेयर और सॉफ्टवेयर प्लेटफ़ॉर्म का उत्पादन करना है जो अन्य सॉफ़्टवेयर को सेवाएं प्रदान करते हैं, प्रदर्शन विवश हैं, या दोनों (जैसे ऑपरेटिंग प्रणाली, कम्प्यूटेशनल विज्ञान एप्लिकेशन, खेल यंत्र, ऑटोमेशन या औद्योगिक स्वचालन, और सेवा अनुप्रयोगों के रूप में सॉफ़्टवेयर)।

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

सिंहावलोकन
निम्नलिखित गुण प्रणाली प्रोग्रामिंग की विशेषता बताते हैं:
 * प्रोग्रामर हार्डवेयर और प्रणाली के अन्य गुणों के बारे में अनुमान लगा सकता है जिस पर प्रोग्राम चलता है, और अधिकांशतः उन गुणों का लाभ उठाएगा, उदाहरण के लिए कलन विधि का उपयोग करके जो विशिष्ट हार्डवेयर के साथ उपयोग किए जाने पर कुशल होने के लिए जाना जाता है।
 * सामान्यतः निम्न-स्तरीय प्रोग्रामिंग भाषा या प्रोग्रामिंग भाषा की बोली का उपयोग किया जाता है जिससे:
 * प्रोग्राम संसाधन-विवश वातावरण में कार्य कर सकते हैं
 * प्रोग्राम थोड़े रन-टाइम प्रणाली ओवरहेड के साथ कुशल हो सकते हैं, संभवतः या तो छोटा रनटाइम लाइब्रेरी हो या कोई भी न हो
 * प्रोग्राम मेमोरी एक्सेस और नियंत्रण प्रवाह पर सीधे और अनिर्मित नियंत्रण का उपयोग कर सकते हैं
 * प्रोग्रामर प्रोग्राम के कुछ भागो को सीधे असेम्बली भाषा में लिख सकता है
 * अधिकांशतः प्रणाली प्रोग्राम को डिबगर में नहीं चलाया जा सकता है। कंप्यूटर सिमुलेशन में प्रोग्राम चलाना कभी-कभी इस समस्या को कम करने के लिए उपयोग किया जा सकता है।

प्रणाली प्रोग्रामिंग एप्लिकेशन प्रोग्रामिंग से पर्याप्त रूप से भिन्न है जो प्रोग्रामर एक या दूसरे में विशेषज्ञ होते हैं।

प्रणाली प्रोग्रामिंग में, अधिकांशतः सीमित प्रोग्रामिंग सुविधाएं उपलब्ध होती हैं। गार्बेज संग्रह (कंप्यूटर विज्ञान) का उपयोग सामान्य नहीं है और डिबगिंग करना कभी-कभी कठिन होता है। रनटाइम लाइब्रेरी, यदि उपलब्ध हो, तो सामान्यतः बहुत कम शक्तिशाली होती है, और कम त्रुटि जाँच करती है। उन सीमाओं के कारण, प्रणाली निगरानी और डेटा प्रविष्ट का अधिकांशतः उपयोग किया जाता है; ऑपरेटिंग प्रणाली में अत्यंत विस्तृत लॉगिंग सबप्रणाली हो सकते हैं।

ऑपरेटिंग प्रणाली और नेटवर्किंग में कुछ भागों को लागू करने के लिए प्रणाली प्रोग्रामिंग की आवश्यकता होती है, उदाहरण के लिए ऑपरेटिंग प्रणाली के लिए पेजिंग (आभासी मेमोरी) या डिवाइस ड्राइवर को लागू करना।

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

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

यह भी देखें

 * ऑस्टरहॉट का द्विभाजन
 * प्रणाली प्रोग्रामिंग भाषा
 * भाषा का अंकन
 * इंटरप्ट हैंडलर

अग्रिम पठन

 * Systems Programming by John J. Donovan