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

From Vigyanwiki
(Created page with "{{Short description|Ability of a program to run on different platforms with little alteration}} {{Distinguish|application portability}} {{About|portability in itself|the work...")
 
No edit summary
Line 1: Line 1:
{{Short description|Ability of a program to run on different platforms with little alteration}}
{{Short description|Ability of a program to run on different platforms with little alteration}}
{{Distinguish|application portability}}
{{Distinguish|एप्लीकेशन पोर्टेबिलिटी}}
{{About|portability in itself|the work required to make software portable|porting|other uses|portability (disambiguation){{!}}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|सीपीयू]] वाले दो कंप्यूटरों पर एक ही परिवार के [[ऑपरेटिंग सिस्टम]] स्थापित किए जाते हैं, तो उनके बीच प्रोग्राम फ़ाइलों को लागू करने वाली फ़ाइलों को स्थानांतरित करना प्रायः संभव होता है।


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


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


सॉफ्टवेयर जो इस अर्थ में पोर्टेबल नहीं है, उसे गंतव्य मशीन पर पर्यावरण का समर्थन करने के लिए संशोधनों के साथ स्थानांतरित करना होगा।
सॉफ्टवेयर जो इस अर्थ में पोर्टेबल नहीं है, उसे गंतव्य मशीन पर पर्यावरण का समर्थन करने के लिए संशोधनों के साथ स्थानांतरित करना होगा।


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


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


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


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


=== स्रोत कोड === पोर्ट करने का प्रयास
=== स्रोत कोड पोर्ट करने का प्रयास ===
[[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]] जैसी प्रतीत होने वाली पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास काफी भिन्न हो सकता है। UNIX/32V (1979) के लेखकों ने बताया कि [t]he Bourne Shell|(Bourne) Shell [...] किसी भी अनुमानित पोर्टेबल प्रोग्राम के अब तक के सबसे बड़े रूपांतरण प्रयास की आवश्यकता है, साधारण कारण के लिए कि यह पोर्टेबल नहीं है।<ref>Thomas B. London and John F. Reiser (1978). [https://www.bell-labs.com/usr/dmr/www/otherports/32vscan.pdf A Unix operating system for the DEC VAX-11/780 computer]. Bell Labs internal memo 78-1353-4.</ref>
[[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]] जैसी पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास काफी भिन्न हो सकता है। यूनिक्स/32वी (1979) के लेखकों ने बताया कि "[t]वह (बॉर्न) शेल [...] किसी भी कथित पोर्टेबल प्रोग्राम के अब तक के सबसे बड़े रूपांतरण प्रयास की आवश्यकता है, साधारण कारण के लिए कि यह पोर्टेबल नहीं है।"<ref>Thomas B. London and John F. Reiser (1978). [https://www.bell-labs.com/usr/dmr/www/otherports/32vscan.pdf A Unix operating system for the DEC VAX-11/780 computer]. Bell Labs internal memo 78-1353-4.</ref>
कभी-कभी प्रयास में स्रोत कोड को पुनः संकलित करना शामिल होता है, लेकिन कभी-कभी सॉफ़्टवेयर के प्रमुख भागों को फिर से लिखना आवश्यक होता है। कई भाषा विनिर्देश कार्यान्वयन परिभाषित व्यवहार का वर्णन करते हैं (उदाहरण के लिए सी में एक हस्ताक्षरित पूर्णांक को स्थानांतरित करना एक तार्किक बदलाव या अंकगणितीय बदलाव कर सकता है)। ऑपरेटिंग सिस्टम फ़ंक्शंस या तृतीय पक्ष लाइब्रेरी लक्ष्य सिस्टम पर उपलब्ध नहीं हो सकते हैं। कुछ कार्य एक लक्ष्य प्रणाली पर उपलब्ध हो सकते हैं, लेकिन थोड़ा अलग व्यवहार प्रदर्शित करते हैं (जैसे: यूटाइम () EACCES के साथ विंडोज के तहत विफल हो जाता है, जब इसे निर्देशिका के लिए कहा जाता है)। प्रोग्राम कोड में ही अनपोर्टेबल चीजें भी हो सकती हैं, जैसे फाइलों को शामिल करने के रास्ते। पथ सीमांकक के रूप में ड्राइव अक्षर और बैकस्लैश सभी ऑपरेटिंग सिस्टम पर स्वीकार नहीं किए जाते हैं। कार्यान्वयन परिभाषित चीजें जैसे [[endianness]] और एक इंटीजर (कंप्यूटर विज्ञान) का आकार भी पोर्टिंग प्रयास को बढ़ा सकता है। व्यावहारिक रूप से C (प्रोग्रामिंग लैंग्वेज) और C++ जैसी भाषाओं का WOCA (एक बार लिखना, कहीं भी संकलित करना) होने का दावा तर्क संगत है।
 
कभी-कभी प्रयास में स्रोत कोड को पुनः संकलित करना सम्मिलित होता है, लेकिन कभी-कभी सॉफ़्टवेयर के प्रमुख भागों को फिर से लिखना आवश्यक होता है। कई भाषा विनिर्देश कार्यान्वयन परिभाषित व्यवहार का वर्णन करते हैं उदाहरण के लिए सी में एक हस्ताक्षरित पूर्णांक को स्थानांतरित करना तार्किक या अंकगणितीय बदलाव कर सकता है। ऑपरेटिंग सिस्टम फ़ंक्शंस या तृतीय पक्ष लाइब्रेरी लक्ष्य सिस्टम पर उपलब्ध नहीं हो सकते हैं। कुछ कार्य एक लक्ष्य प्रणाली पर उपलब्ध हो सकते हैं, लेकिन थोड़ा अलग व्यवहार प्रदर्शित करते हैं (जैसे: यूटाइम () EACCES के साथ विंडोज के तहत विफल हो जाता है, जब इसे निर्देशिका के लिए कहा जाता है)। प्रोग्राम कोड में ही अनपोर्टेबल चीजें भी हो सकती हैं, जैसे फाइलों को सम्मिलित करने के रास्ते। पथ सीमांकक के रूप में ड्राइव अक्षर और बैकस्लैश सभी ऑपरेटिंग सिस्टम पर स्वीकार नहीं किए जाते हैं। कार्यान्वयन परिभाषित चीजें जैसे बाइट ऑर्डर और एक इंट का आकार भी पोर्टिंग प्रयास को बढ़ा सकता है। व्यावहारिक रूप से सी और सी++ जैसी भाषाओं का डब्ल्यूओसीए (एक बार लिखें, कहीं भी संकलित करें) होने का दावा तर्क संगत है।


== यह भी देखें ==
== यह भी देखें ==
Line 39: Line 40:
* [[डेटा पोर्टेबिलिटी]]
* [[डेटा पोर्टेबिलिटी]]
* [[हार्डवेयर पर निर्भर सॉफ्टवेयर]]
* [[हार्डवेयर पर निर्भर सॉफ्टवेयर]]
* [[इंटरोऑपरेबिलिटी]]
* [[इंटरोऑपरेबिलिटी|इंटर ऑपरेबिलिटी]]
* [[भाषा इंटरऑपरेबिलिटी]]
* [[भाषा इंटरऑपरेबिलिटी]]
* [[पोर्टेबिलिटी परीक्षण]]
* [[पोर्टेबिलिटी परीक्षण]]
* पोर्टिंग
* पोर्टिंग
* [[सोर्स-टू-सोर्स कंपाइलर]]
* [[सोर्स-टू-सोर्स कंपाइलर|स्रोत-से-स्रोत कंपाइलर]]


== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
== स्रोत ==
== स्रोत ==
* {{cite journal
* {{cite journal

Revision as of 21:39, 23 February 2023

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

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

पोर्टेबिलिटी के लिए रणनीतियाँ

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

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

समान सिस्टम

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

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

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

सॉफ्टवेयर जो इस अर्थ में पोर्टेबल नहीं है, उसे गंतव्य मशीन पर पर्यावरण का समर्थन करने के लिए संशोधनों के साथ स्थानांतरित करना होगा।

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

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)


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