सॉफ्टवेयर पोर्टेबिलिटी: 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
 
(8 intermediate revisions by 3 users not shown)
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 [[ऑपरेटिंग सिस्टम]] के साथ समान [[माइक्रोप्रोसेसर|माइक्रोप्रोसेसरो]] का उपयोग करते थे। छोटे पोर्टेबल डिवाइस जैसे [[एआरएम वास्तुकला|एआरएम]] विभिन्न और असंगत [[ऑपरेटिंग सिस्टम]] वाले प्रोसेसर का उपयोग करते हैं। बड़े और छोटे उपकरणों के बीच का अंतर ऐसा है कि विस्तृत सॉफ्टवेयर संचालन अलग होता है एक बड़ी स्क्रीन पर उपयुक्त रूप से प्रदर्शित करने के लिए डिज़ाइन किया गए एप्लिकेशन को स्मार्टफोन में छोटी स्क्रीन के साथ पोर्ट नहीं किया जा सकता है।


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


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


[[खुला स्रोत सॉफ्टवेयर]] | ओपन-सोर्स वातावरण जैसे लिनक्स में स्रोत कोड सभी के लिए उपलब्ध है। पहले के दिनों में स्रोत कोड को अक्सर एक मानकीकृत प्रारूप में वितरित किया जाता था, और निर्माण के दौरान कोई त्रुटि नहीं होने पर मामूली जानकार उपयोगकर्ताओं द्वारा किसी विशेष प्रणाली के लिए मानक [[बनाओ (सॉफ्टवेयर)]] के साथ निष्पादन योग्य कोड में बनाया जा सकता था। कुछ [[लिनक्स वितरण]] उपयोगकर्ताओं को स्रोत के रूप में सॉफ्टवेयर वितरित करते हैं। इन मामलों में आमतौर पर सिस्टम के लिए सॉफ्टवेयर के विस्तृत अनुकूलन की कोई आवश्यकता नहीं होती है; यह एक तरह से वितरित किया जाता है जो [[सशर्त संकलन]] है।
=== स्रोत कोड पोर्ट करने का प्रयास ===
 
[[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]] जैसी पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास अपेक्षाकृत भिन्न हो सकता है। यूनिक्स/32वी (1979) के लेखकों ने बताया कि "टी बॉर्न शेल" किसी भी पोर्टेबल प्रोग्राम मे अब तक के सबसे बड़े रूपांतरण प्रयास की आवश्यकता है, इसके सामान्य कारण के लिए कि यह पोर्टेबल नहीं है<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> कभी-कभी प्रयास में स्रोत कोड को पुनः कंपाइल करना सम्मिलित होता है, लेकिन कभी-कभी सॉफ़्टवेयर के प्रमुख भागों को पुनः से लिखना आवश्यक होता है। कई भाषा विनिर्देश कार्यान्वयन परिभाषित प्रोग्राम का वर्णन करते हैं उदाहरण के लिए सी (प्रोग्रामिंग भाषा) में एक हस्ताक्षरित पूर्णांक को स्थानांतरित करना तार्किक या अंकगणितीय परिवर्तन कर सकता है। ऑपरेटिंग सिस्टम फ़ंक्शंस या तृतीय पक्ष लाइब्रेरी सिस्टम पर उपलब्ध नहीं हो सकते हैं। कुछ प्रोग्राम एक सॉफ़्टवेयर प्रणाली पर उपलब्ध हो सकते हैं, लेकिन अपेक्षाकृत अलग प्रतिक्रिया प्रदर्शित करते हैं जैसे: यूटाइम ईएसीसीईएस के साथ विंडोज के अंतर्गत विफल हो जाता है, जब इसे संचालन के लिए प्रयुक्त किया जाता है। तब प्रोग्राम कोड में ही अनपोर्टेबल सॉफ़्टवेयर भी हो सकते हैं, जैसे फाइलों को सम्मिलित करने के एड्रेस के रूप में स्रोत कोड और बैकस्लैश सभी ऑपरेटिंग सिस्टम पर स्वीकृत नहीं किए जाते हैं। कार्यान्वयन परिभाषित सॉफ़्टवेयर जैसे बाइट और एक प्रोग्राम का स्रोत कोड भी पोर्टिंग प्रयास को विस्तृत कर सकता है। सामान्यतः सी और सी++ जैसी भाषाओं का डब्ल्यूओसीए (एक बार लिखें, कहीं भी कंपाइल करें) होने का तर्क है।
=== स्रोत कोड === पोर्ट करने का प्रयास
[[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]] जैसी प्रतीत होने वाली पोर्टेबल भाषाओं के साथ भी, स्रोत कोड को पोर्ट करने का प्रयास काफी भिन्न हो सकता है। 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>
कभी-कभी प्रयास में स्रोत कोड को पुनः संकलित करना शामिल होता है, लेकिन कभी-कभी सॉफ़्टवेयर के प्रमुख भागों को फिर से लिखना आवश्यक होता है। कई भाषा विनिर्देश कार्यान्वयन परिभाषित व्यवहार का वर्णन करते हैं (उदाहरण के लिए सी में एक हस्ताक्षरित पूर्णांक को स्थानांतरित करना एक तार्किक बदलाव या अंकगणितीय बदलाव कर सकता है)। ऑपरेटिंग सिस्टम फ़ंक्शंस या तृतीय पक्ष लाइब्रेरी लक्ष्य सिस्टम पर उपलब्ध नहीं हो सकते हैं। कुछ कार्य एक लक्ष्य प्रणाली पर उपलब्ध हो सकते हैं, लेकिन थोड़ा अलग व्यवहार प्रदर्शित करते हैं (जैसे: यूटाइम () EACCES के साथ विंडोज के तहत विफल हो जाता है, जब इसे निर्देशिका के लिए कहा जाता है)। प्रोग्राम कोड में ही अनपोर्टेबल चीजें भी हो सकती हैं, जैसे फाइलों को शामिल करने के रास्ते। पथ सीमांकक के रूप में ड्राइव अक्षर और बैकस्लैश सभी ऑपरेटिंग सिस्टम पर स्वीकार नहीं किए जाते हैं। कार्यान्वयन परिभाषित चीजें जैसे [[endianness]] और एक इंटीजर (कंप्यूटर विज्ञान) का आकार भी पोर्टिंग प्रयास को बढ़ा सकता है। व्यावहारिक रूप से C (प्रोग्रामिंग लैंग्वेज) और C++ जैसी भाषाओं का WOCA (एक बार लिखना, कहीं भी संकलित करना) होने का दावा तर्क संगत है।


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


== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
== स्रोत ==
== स्रोत ==
* {{cite journal
* {{cite journal
Line 83: Line 76:
श्रेणी:सॉफ्टवेयर की गुणवत्ता
श्रेणी:सॉफ्टवेयर की गुणवत्ता


 
[[Category:All articles needing additional references|Software Portability]]
[[Category: Machine Translated Page]]
[[Category:Articles needing additional references from November 2011|Software Portability]]
[[Category:Created On 17/02/2023]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Software Portability]]
[[Category:CS1 errors|Software Portability]]
[[Category:Collapse templates|Software Portability]]
[[Category:Created On 17/02/2023|Software Portability]]
[[Category:Lua-based templates|Software Portability]]
[[Category:Machine Translated Page|Software Portability]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Software Portability]]
[[Category:Pages with script errors|Software Portability]]
[[Category:Short description with empty Wikidata description|Software Portability]]
[[Category:Sidebars with styles needing conversion|Software Portability]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Software Portability]]
[[Category:Templates generating microformats|Software Portability]]
[[Category:Templates that add a tracking category|Software Portability]]
[[Category:Templates that are not mobile friendly|Software Portability]]
[[Category:Templates that generate short descriptions|Software Portability]]
[[Category:Templates using TemplateData|Software Portability]]
[[Category:Wikipedia metatemplates|Software Portability]]

Latest revision as of 18:11, 3 March 2023

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

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

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

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

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

समान सिस्टम

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

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

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

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

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

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

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

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

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

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

यह भी देखें

संदर्भ

  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)


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