सॉफ्टवेयर पोर्टेबिलिटी: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 3: Line 3:
{{About|पोर्टेबिअपने आप में पोर्टेबिलिटी|सॉफ्टवेयर को पोर्टेबल बनाने के लिए आवश्यक कार्य| पोर्टिंग|other uses|portability (बहुविकल्पी){{!}}पोर्टेबिलिटी}}
{{About|पोर्टेबिअपने आप में पोर्टेबिलिटी|सॉफ्टवेयर को पोर्टेबल बनाने के लिए आवश्यक कार्य| पोर्टिंग|other uses|portability (बहुविकल्पी){{!}}पोर्टेबिलिटी}}
{{More citations needed|date=November 2011}}
{{More citations needed|date=November 2011}}
[[File:Utd platforms.jpg|thumb|right|वीडियो गेम विभिन्न हार्डवेयर प्लेटफॉर्म पर चल रहा है।]][[कंप्यूटर प्रोग्राम]] को '''सॉफ्टवेयर पोर्टेबिलिटी''' कहा जाता है यदि इसे विभिन्न [[कंप्यूटिंग मंच|कंप्यूटिंग प्लेटफार्मों]] पर सक्रिय करने के लिए बहुत कम प्रयासों की आवश्यकता होती है। पोर्टेबिलिटी के लिए पूर्व-आवश्यकता एप्लिकेशन तर्क और सिस्टम [[इंटरफ़ेस (कंप्यूटर विज्ञान)]] के बीच सामान्यीकृत अमूर्तता है। जब कई कंप्यूटिंग प्लेटफॉर्म के लिए समान कार्यक्षमता वाले सॉफ़्टवेयर का उत्पादन किया जाता है, तो विकास लागत में कमी के लिए पोर्टेबिलिटी प्रमुख मुद्दा है।
[[File:Utd platforms.jpg|thumb|right|वीडियो गेम विभिन्न हार्डवेयर प्लेटफॉर्म पर चल रहा है।]][[कंप्यूटर प्रोग्राम]] को '''सॉफ्टवेयर पोर्टेबिलिटी''' कहा जाता है यदि इसे विभिन्न [[कंप्यूटिंग मंच|कंप्यूटिंग प्लेटफार्मों]] पर सक्रिय करने के लिए कम प्रयास की आवश्यकता होती है। पोर्टेबिलिटी के लिए पूर्व-आवश्यक एप्लिकेशन तर्क और सिस्टम [[इंटरफ़ेस (कंप्यूटर विज्ञान)]] के बीच सामान्यीकृत संक्षिप्‍तीकरण है। जब कई कंप्यूटिंग प्लेटफॉर्म के लिए समान कार्यक्षमता वाले सॉफ़्टवेयर का उत्पादन किया जाता है, तो विकास की लागत में कमी के लिए पोर्टेबिलिटी प्रमुख कारण है।


== पोर्टेबिलिटी के लिए रणनीतियाँ ==
== पोर्टेबिलिटी के लिए कूट नीतियॉ ==
सॉफ्टवेयर पोर्टेबिलिटी में सम्मिलित हो सकते हैं:
सॉफ्टवेयर पोर्टेबिलिटी में निम्नलिखित सम्मिलित हो सकती हैं:
* स्थापित प्रोग्राम फ़ाइलों को मूल रूप से एक ही संरचना के दूसरे कंप्यूटर पर स्थानांतरित करना।
* स्थापित प्रोग्राम फ़ाइलों को मूल रूप से एक ही संरचना के दूसरे कंप्यूटर पर स्थानांतरित करना।
* मूल रूप से समान संरचना के दूसरे कंप्यूटर पर वितरण फ़ाइलों से प्रोग्राम को पुनर्स्थापित करना।
* मूल रूप से समान संरचना के दूसरे कंप्यूटर पर वितरण फ़ाइलों से प्रोग्राम को पुनर्स्थापित करना।
* स्रोत कोड से विभिन्न प्लेटफार्मों के लिए [[संकलक]] [[निष्पादन]] योग्य कार्यक्रम; [[में porting]] से समान्यतः यही समझा जाता है।
* स्रोत कोड से विभिन्न प्लेटफार्मों के लिए निष्पादन योग्य प्रोग्राम को सामान्यतः "[[में porting|पोर्टिंग]]" समझा जाता है।


=== समान सिस्टम ===
=== समान सिस्टम ===
जब समान निर्देश सेट वाले [[CPU|सीपीयू]] वाले दो कंप्यूटरों पर एक ही परिवार के [[ऑपरेटिंग सिस्टम]] स्थापित किए जाते हैं, तो उनके बीच प्रोग्राम फ़ाइलों को लागू करने वाली फ़ाइलों को स्थानांतरित करना प्रायः संभव होता है।
जब समान संचालन वाले [[CPU|सीपीयू]] मे दो कंप्यूटरों पर एक ही प्रकार के [[ऑपरेटिंग सिस्टम]] को स्थापित किया जाता हैं, तो उनके बीच प्रोग्राम फ़ाइलों को प्रयुक्त करने वाली फ़ाइलों को स्थानांतरित करना प्रायः संभव होता है।


सरलतम स्थिति में, फ़ाइल या फ़ाइलों को बस एक मशीन से दूसरी मशीन में कॉपी किया जा सकता है। हालाँकि कई स्थितियों में सॉफ़्टवेयर को कंप्यूटर पर इस तरह से स्थापित किया जाता है जो उसके विस्तृत हार्डवेयर, सॉफ़्टवेयर और सेटअप पर निर्भर करता है, विशेष उपकरणों के लिए डिवाइस ड्राइवरों के साथ स्थापित ऑपरेटिंग सिस्टम और सहायक सॉफ़्टवेयर घटकों का उपयोग करके और विभिन्न ड्राइव या [[निर्देशिका (फाइल सिस्टम)|निर्देशिकाओं (फाइल सिस्टम)]] का उपयोग करके।
समान स्थिति में, फ़ाइल या फ़ाइलों को एक मशीन से दूसरी मशीन में स्थानांतरित किया जा सकता है। हालाँकि कई स्थितियों में सॉफ़्टवेयर को कंप्यूटर पर इस प्रकार से स्थापित किया जाता है जो उसके विस्तृत हार्डवेयर, सॉफ़्टवेयर और सेटअप पर निर्भर करता है, विशेष उपकरणों के लिए डिवाइस एप्लीकेशन के साथ स्थापित ऑपरेटिंग सिस्टम और सहायक सॉफ़्टवेयर का उपयोग करके और विभिन्न एप्लीकेशन या [[निर्देशिका (फाइल सिस्टम)|फाइल सिस्टम]] का उपयोग किया जा सकता है।


कुछ स्थितियों में, सॉफ़्टवेयर, जिसे समान्यतः "[[पोर्टेबल अनुप्रयोग|पोर्टेबल सॉफ़्टवेयर]]" के रूप में वर्णित किया जाता है, विशेष रूप से किसी मशीन-निर्भर स्थापना के बिना संगत ऑपरेटिंग सिस्टम और प्रोसेसर वाले विभिन्न कंप्यूटरों पर चलाने के लिए डिज़ाइन किया गया है। पोर्टिंग निर्दिष्ट निर्देशिकाओं और उनकी सामग्री को स्थानांतरित करने से ज्यादा कुछ नहीं है। यूएसबी स्टिक जैसे पोर्टेबल मास भंडारण डिवाइस पर इंस्टॉल किए गए सॉफ़्टवेयर का उपयोग किसी भी संगत कंप्यूटर पर केवल [[विपुल भंडारण|भंडारण]] डिवाइस को प्लग इन करने पर किया जा सकता है, और रिमूवेबल डिवाइस पर सभी कॉन्फ़िगरेशन जानकारी संग्रहीत करता है। हार्डवेयर- और सॉफ़्टवेयर-विशिष्ट जानकारी प्रायः निर्दिष्ट स्थानों में कॉन्फ़िगरेशन फ़ाइलों में संग्रहीत होती है (उदाहरण के लिए [[Microsoft Windows|माइक्रोसॉफ़्ट विंडोज़]] चलाने वाली मशीनों पर रजिस्ट्री)।
कुछ स्थितियों में सॉफ़्टवेयर, जिसे समान्यतः "[[पोर्टेबल अनुप्रयोग|पोर्टेबल सॉफ़्टवेयर]]" के रूप में वर्णित किया जाता है विशेष रूप से ऑपरेटिंग सिस्टम और प्रोसेसर के साथ विभिन्न कंप्यूटरों पर बिना किसी मशीन के सॉफ़्टवेयर को चलाने के लिए डिज़ाइन किया गया है। पोर्टिंग प्रोग्राम और उनके डेटा को स्थानांतरित करने से अधिक कुछ नहीं है। यूएसबी जैसे पोर्टेबल मेमोरी भंडारण डिवाइस पर स्थापित किए गए सॉफ़्टवेयर का उपयोग किसी भी समान कंप्यूटर पर केवल [[विपुल भंडारण|भंडारण]] डिवाइस को प्लगइन करने पर किया जा सकता है और रिमूवेबल डिवाइस पर सभी कॉन्फ़िगरेशन जानकारी को संग्रहीत किया जाता है। उदाहरण के लिए [[Microsoft Windows|माइक्रोसॉफ़्ट विंडोज़]] से चलाने वाली मशीनों मे हार्डवेयर और सॉफ़्टवेयर की विशिष्ट जानकारी प्रायः निर्दिष्ट भंडारण में कॉन्फ़िगरेशन फ़ाइलों में संग्रहीत होती है। सॉफ्टवेयर जो इस अर्थ में पोर्टेबल नहीं है उसे गंतव्य (डेस्टिनेशन) मशीन पर सॉफ़्टवेयर का समर्थन करने के लिए कॉन्फ़िगरेशन के साथ स्थानांतरित किया जाता है।
 
सॉफ्टवेयर जो इस अर्थ में पोर्टेबल नहीं है, उसे गंतव्य मशीन पर पर्यावरण का समर्थन करने के लिए संशोधनों के साथ स्थानांतरित करना होगा।


=== विभिन्न प्रोसेसर ===
=== विभिन्न प्रोसेसर ===
2011 तक अधिकांश डेस्कटॉप और लैपटॉप कंप्यूटर 32- और 64-बिट एक्स-86 निर्देश सेट के साथ संगत [[माइक्रोप्रोसेसर|माइक्रोप्रोसेसरो]] का उपयोग करते थे। छोटे पोर्टेबल डिवाइस जैसे [[एआरएम वास्तुकला|एआरएम]] विभिन्न और असंगत निर्देश सेट वाले प्रोसेसर का उपयोग करते हैं, । बड़े और छोटे उपकरणों के बीच का अंतर ऐसा है कि विस्तृत सॉफ्टवेयर ऑपरेशन अलग है; एक बड़ी स्क्रीन पर उपयुक्त रूप से प्रदर्शित करने के लिए डिज़ाइन किया गया एक एप्लिकेशन को आसानी से जेब के आकार के स्मार्टफोन में छोटी स्क्रीन के साथ पोर्ट नहीं किया जा सकता है, भले ही कार्यक्षमता समान हो।
2011 तक अधिकांश डेस्कटॉप और लैपटॉप कंप्यूटर 32-बिट और 64-बिट एक्स-86 [[ऑपरेटिंग सिस्टम]] के साथ समान [[माइक्रोप्रोसेसर|माइक्रोप्रोसेसरो]] का उपयोग करते थे। छोटे पोर्टेबल डिवाइस जैसे [[एआरएम वास्तुकला|एआरएम]] विभिन्न और असंगत [[ऑपरेटिंग सिस्टम]] वाले प्रोसेसर का उपयोग करते हैं। बड़े और छोटे उपकरणों के बीच का अंतर ऐसा है कि विस्तृत सॉफ्टवेयर संचालन अलग होता है एक बड़ी स्क्रीन पर उपयुक्त रूप से प्रदर्शित करने के लिए डिज़ाइन किया गए एप्लिकेशन को स्मार्टफोन में छोटी स्क्रीन के साथ पोर्ट नहीं किया जा सकता है।


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


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


=== स्रोत कोड पोर्ट करने का प्रयास ===
=== स्रोत कोड पोर्ट करने का प्रयास ===

Revision as of 13:39, 24 February 2023

वीडियो गेम विभिन्न हार्डवेयर प्लेटफॉर्म पर चल रहा है।

कंप्यूटर प्रोग्राम को सॉफ्टवेयर पोर्टेबिलिटी कहा जाता है यदि इसे विभिन्न कंप्यूटिंग प्लेटफार्मों पर सक्रिय करने के लिए कम प्रयास की आवश्यकता होती है। पोर्टेबिलिटी के लिए पूर्व-आवश्यक एप्लिकेशन तर्क और सिस्टम इंटरफ़ेस (कंप्यूटर विज्ञान) के बीच सामान्यीकृत संक्षिप्‍तीकरण है। जब कई कंप्यूटिंग प्लेटफॉर्म के लिए समान कार्यक्षमता वाले सॉफ़्टवेयर का उत्पादन किया जाता है, तो विकास की लागत में कमी के लिए पोर्टेबिलिटी प्रमुख कारण है।

पोर्टेबिलिटी के लिए कूट नीतियॉ

सॉफ्टवेयर पोर्टेबिलिटी में निम्नलिखित सम्मिलित हो सकती हैं:

  • स्थापित प्रोग्राम फ़ाइलों को मूल रूप से एक ही संरचना के दूसरे कंप्यूटर पर स्थानांतरित करना।
  • मूल रूप से समान संरचना के दूसरे कंप्यूटर पर वितरण फ़ाइलों से प्रोग्राम को पुनर्स्थापित करना।
  • स्रोत कोड से विभिन्न प्लेटफार्मों के लिए निष्पादन योग्य प्रोग्राम को सामान्यतः "पोर्टिंग" समझा जाता है।

समान सिस्टम

जब समान संचालन वाले सीपीयू मे दो कंप्यूटरों पर एक ही प्रकार के ऑपरेटिंग सिस्टम को स्थापित किया जाता हैं, तो उनके बीच प्रोग्राम फ़ाइलों को प्रयुक्त करने वाली फ़ाइलों को स्थानांतरित करना प्रायः संभव होता है।

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

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

विभिन्न प्रोसेसर

2011 तक अधिकांश डेस्कटॉप और लैपटॉप कंप्यूटर 32-बिट और 64-बिट एक्स-86 ऑपरेटिंग सिस्टम के साथ समान माइक्रोप्रोसेसरो का उपयोग करते थे। छोटे पोर्टेबल डिवाइस जैसे एआरएम विभिन्न और असंगत ऑपरेटिंग सिस्टम वाले प्रोसेसर का उपयोग करते हैं। बड़े और छोटे उपकरणों के बीच का अंतर ऐसा है कि विस्तृत सॉफ्टवेयर संचालन अलग होता है एक बड़ी स्क्रीन पर उपयुक्त रूप से प्रदर्शित करने के लिए डिज़ाइन किया गए एप्लिकेशन को स्मार्टफोन में छोटी स्क्रीन के साथ पोर्ट नहीं किया जा सकता है।

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

स्रोत कोड पोर्टेबिलिटी

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

स्रोत कोड पोर्ट करने का प्रयास

सी (प्रोग्रामिंग भाषा) और सी ++ जैसी पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास काफी भिन्न हो सकता है। यूनिक्स/32वी (1979) के लेखकों ने बताया कि "[t]वह (बॉर्न) शेल [...] किसी भी कथित पोर्टेबल प्रोग्राम के अब तक के सबसे बड़े रूपांतरण प्रयास की आवश्यकता है, साधारण कारण के लिए कि यह पोर्टेबल नहीं है।"[1]

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

यह भी देखें

संदर्भ

  1. Thomas B. London and John F. Reiser (1978). A Unix operating system for the DEC VAX-11/780 computer. Bell Labs internal memo 78-1353-4.

स्रोत

  • Mooney (1997). "Bringing Portability to the Software Process" (PDF). West Virginia University. Dept. of Statistics and Computer Science. Archived from the original (PDF) on 2008-07-25. Retrieved 2008-03-17. {{cite journal}}: Cite journal requires |journal= (help)
  • Garen (2007). "सॉफ्टवेयर पोर्टेबिलिटी: वेइंग ऑप्शंस, मेकिंग चॉइस". The CPA Journal. 77 (11): 3.
  • Lehey (1995). "पोर्टिंग यूनिक्स सॉफ्टवेयर: डाउनलोड से डिबग तक" (PDF). Retrieved 2010-05-27. {{cite journal}}: Cite journal requires |journal= (help)


श्रेणी:सॉफ्टवेयर की गुणवत्ता