सॉफ्टवेयर को मूल रूप से चलाने के लिए इसका क्या मतलब है?


27

मैं सोच रहा था कि सॉफ्टवेयर को मूल रूप से चलाने के लिए इसका क्या मतलब है। वास्तव में ऐसा सॉफ्टवेयर क्या है और यह कैसे सॉफ्टवेयर से अलग है जो मूल रूप से नहीं चलता है? मैं कैसे बता सकता हूं कि सॉफ्टवेयर का एक दिया गया पज़ेस मेरे कंप्यूटर पर मूल रूप से चलेगा? क्या मेरे कंप्यूटर पर पहले से ही सॉफ्टवेयर होने की संभावना है जो मूल रूप से चलता है?


2
"देशी" का तात्पर्य यह है कि इसे जिस भी प्लेटफ़ॉर्म / ओएस पर चलाया जाए, वह है
yuritsuki

मी न तो ... ऐसा लगता है कि मध्यस्थों को प्रश्न पढ़ने में मुश्किल समय होता है ...

5
@ अल्फा आप महसूस करते हैं कि कोई भी मध्यस्थ प्रश्न को बंद करने में शामिल नहीं था?
slhck

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

ऐसा नहीं है कि प्रश्न प्रति सेवार बुरा है, लेकिन यह इस साइट के लिए अच्छा नहीं है। जैसा कि जवाबों से पता चलता है, यह ऐसी चीज नहीं है जिसका साफ-साफ जवाब दिया जा सके और इसके चारों ओर कई तर्क हों, जो एफएक्यू के अनुसार इसके समापन को पूरी तरह उपयुक्त बनाता है।
१०:२१

जवाबों:


43

एक सॉफ्टवेयर एक प्लेटफ़ॉर्म का मूल है यदि इसे उस प्लेटफ़ॉर्म पर चलाने के लिए डिज़ाइन किया गया था।

एक प्लेटफ़ॉर्म आमतौर पर एक ऑपरेटिंग सिस्टम को संदर्भित करता है, लेकिन इसे निनटेंडो गेम बॉय जैसे उपकरणों पर भी लागू किया जा सकता है।

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

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

एक संगतता परत एक एमुलेटर की तरह है। जब 64-बिट कंप्यूटर और ऑपरेटिंग सिस्टम मुख्यधारा बन गए, तो उन्हें मौजूदा 32-बिट प्रौद्योगिकियों के साथ संगत होने की आवश्यकता थी। चूंकि 64-बिट और 32-बिट आर्किटेक्चर बहुत अलग हैं, 64-बिट मशीनों पर 32-बिट सॉफ़्टवेयर को चलाने के लिए अक्सर एक संगतता परत की आवश्यकता होती है। Microsoft Windows के 64-बिट संस्करणों के लिए, Microsoft को एक संगतता परत लिखने की आवश्यकता थी ताकि 32-बिट प्रोग्राम अभी भी नए 64-बिट सिस्टम पर काम करेंगे। यही कारण है कि कुछ कार्यक्रमों अक्सर नामक फ़ोल्डर करने के लिए स्थापित कर रहे हैं Program Files (x86), जहां x86का अर्थ है "32-बिट"।

संगतता परतें मूल प्रणाली की तुलना में अधिक अंतरंग होती हैं जो एमुलेटर की तुलना में होती हैं। VirtualBox के emulates ऑपरेटिंग सिस्टम के लिए हार्डवेयर * , और प्रणालियों है कि यह emulates मेजबान सिस्टम के साथ बहुत ज्यादा सीधा संपर्क नहीं है। WoW64 एक संगतता परत है जिसमें यह 32-बिट प्रोग्राम को 64-बिट विंडोज पर अधिक एकीकृत तरीके से चलाने की सुविधा देता है। WoW64 उन्हें एक अलग वातावरण में अनुकरण करने के बजाय कार्यक्रमों को संगत बनाने में मदद करता है।

एक अनुवाद पुस्तकालय संगतता परतों का एक घटक है। जब भी बाइनरी कोड गैर-देशी रूप से चल रहा होता है, तो एक अनुवाद लाइब्रेरी देशी कॉल में विदेशी, गैर-देशी कॉलों को पुनर्निर्देशित करने में मदद करती है जिसे सिस्टम समझ सकता है। मूल TI-83 के लिए लिखे गए विधानसभा कार्यक्रम नए TI-83/84 प्लस कैलकुलेटर के साथ संगत नहीं हो सकते हैं क्योंकि TI-83 की वास्तुकला में समझ में आने वाले कुछ कॉल अब TI-83/84 + में मान्य नहीं हो सकते हैं। एक अनुवाद पुस्तकालय (संभवतः मिराजोस की तरह गोले में शामिल ) यह सुनिश्चित करता है कि TI-83 के लिए कॉल TI-83/84 + कैलकुलेटर में नए, अपडेट किए गए स्थानों पर जाएं।

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


कई तरह का

सुधार

* इस जवाब के साथ कुछ मुद्दों को पकड़ने के लिए , माइकल Kjörling , धन्यवाद ।

अन्य

"देशी" और "गैर-देशी" के बीच का अंतर काला और सफेद नहीं है(करने के लिए क्रेडिट afrazier )


3
माइनर नाइटपिक: (यह वर्चुअलबॉक्स है, न कि विरूअलबॉक्स, और) वर्चुअलबॉक्स ऑपरेटिंग सिस्टम का अनुकरण नहीं करता है, यह हार्डवेयर का अनुकरण करता है । तो आप वर्चुअलबॉक्स (वर्चुअलाइजेशन सीमाओं के अधीन) में अपनी पसंद के किसी भी ऑपरेटिंग सिस्टम को इंस्टॉल कर सकते हैं, या यहां तक ​​कि अपने स्वयं के स्क्रैच से भी लिख सकते हैं।
एक CVn

1
मूल भी अक्सर इसका मतलब है कि यह अंतर्निहित प्लेटफॉर्म के लिए प्राथमिक लाइब्रेरी सेट और एपीआई का उपयोग कर रहा है, जो कि भेदों को थोड़ा अस्पष्ट बना सकता है। ऐसे बहुत से लोग हैं जो .NET अनुप्रयोगों को "मूल" नहीं मानते हैं जैसे Win32 API एप्लिकेशन "देशी" हैं, और इसी तरह कुछ लोग एक GDEome डेस्कटॉप "मूल" पर चलने वाले KDE कार्यक्रम पर विचार नहीं करते हैं।
afrazier

@afrazier: ऐसा इसलिए है क्योंकि .NET एप्लिकेशन "सामान्य भाषा रनटाइम" पर चलने के लिए डिज़ाइन किए गए हैं, और विंडोज पर चलने के लिए एक संगतता परत की आवश्यकता है। या लिनक्स पर चलने के लिए एक अलग संगतता परत।
बेन वोइग्ट

@Ben Voigt: यह अभी भी एक प्रथम-पक्ष एपीआई है, बायनेरिज़ को मूल x86 / amd64 कोड (चाहे CLR द्वारा रनटाइम पर या ngen के साथ अग्रिम में) के लिए संकलित किया गया है, और फ्रेमवर्क विंडोज के हाल के संस्करणों के साथ भेज दिया गया है। यह हालांकि एक बड़े तर्क का हिस्सा है, और वास्तव में यहां उपयुक्त नहीं है।
afrazier

वर्चुअल बॉक्स तकनीकी रूप से एमुलेटर नहीं बल्कि वर्चुअलाइज़र है। समय बीतने का एक एमुलेटर हमेशा पूरी तरह से अलग हार्डवेयर का अनुकरण करता है। वर्चुअलाइज़र के तहत, OS और सॉफ़्टवेयर वास्तव में होस्ट CPU पर मूल रूप से चलता है। अंतर यह है कि उपकरण आभासी या अनुकरणीय हैं। यह एक मामूली तकनीकी अंतर है कि यहां तक ​​कि वर्चुअल बॉक्स वेबसाइट भी यहां बताती है: virtualbox.org/wiki/Virtualization
मैट एच

4

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


3

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

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

यदि आप WINE , MS Windows API एमुलेटर चलाते हैं , तो वह मूल कोड नहीं है। हालाँकि आप उस चिपसेट (x86) के लिए डिज़ाइन किए गए कोड को निष्पादित कर रहे हैं, आप उस ओएस के लिए कोड नहीं चला रहे हैं जो इसे बूट करता है, लेकिन लाइब्रेरी को बदल देता है। MAME अलग-अलग CPU और ऑपरेटिंग सिस्टम के लिए बायनेरी चलाता है।

लिपियां मूल कोड नहीं हैं। वे एक उच्च स्तर की भाषा में लिखे जाते हैं जिसे तब आपके सीपीयू पर चलने वाले कोड में रनटाइम में बदलना होता है।

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


.NET, VBA, XUL , IA-32 (AMD64 CPU पर, कम से कम), ...
CVn

3

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

उदाहरण के लिए, विंडोज पर, एक देशी ऐप अन्य अनुप्रयोगों के समान बटन, स्क्रॉलबार आदि प्राप्त करने के लिए "विनएपीआई" का उपयोग करेगा। वे सिस्टम एप्लिकेशन (नोटपैड) में बिल्कुल वैसा ही व्यवहार करते हैं जैसा कि मूल तृतीय-पक्ष एप्लिकेशन में होता है।

जावा एप्लिकेशन अक्सर "स्विंग" का उपयोग करते हैं और पूरी तरह से अलग दिखते हैं, क्योंकि वे सिस्टम वालों का उपयोग करने के बजाय, अपने नियंत्रण को स्वयं आकर्षित करते हैं। लाभ यह है कि कार्यक्रम प्रत्येक ओएस पर समान दिखता है।

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

ध्यान दें कि जब लोग "मूल" कहते हैं, तो उनका मतलब अक्सर एक प्रोग्राम को एक मध्यवर्ती कोड के बजाय मशीन कोड के लिए संकलित किया जाता है, जिसे एक वर्चुअल मशीन (जैसे जावा और .NET प्रोग्राम) में चलाया जाता है। उपरोक्त उदाहरणों में, WinAPI और qt ऐप मशीन कोड का उपयोग कर रहे हैं, जबकि जावा प्रोग्राम जावा बाइटकोड के लिए संकलित है। यह उपयोग आजकल थोड़ा समस्याग्रस्त है, क्योंकि कई उपयोगकर्ता विंडोज के लिए एक अच्छी तरह से किए गए .NET अनुप्रयोग मूल पर विचार करेंगे - यह सिर्फ एक .exe है, हुड के तहत एक ही नियंत्रण और एपीआई का उपयोग करता है, और एक कार्यक्रम से संकलित लगभग अप्रभेद्य है। मशीन कोड।

इसी तरह, मैं एक प्रोग्राम पर विचार करूंगा जो GTK का उपयोग करता है, यूनिक्स फाइल सिस्टम संरचना के बारे में जानता है और शायद उबंटू या ग्नोम के लिए एक .deb पैकेज देशी में आता है। यहां तक ​​कि जावास्क्रिप्ट में लिखे गए प्रथम-पक्षीय ग्नोम ऐप भी हैं जिन्हें कोई भी व्यक्ति कह सकता है! वही विंडोज 8 "मेट्रो" ऐप्स पर लागू होता है, जो विभिन्न भाषाओं में लिखे जा सकते हैं, कुछ संकलित, कुछ नहीं।


2

अधिक अमूर्त शब्दों में कहें, तो यह किसी और को आपके विश्वास को किसी अन्य भाषा में प्रोग्राम को निष्पादित करने की तरह है।

  • देशी का मतलब है कि ओएस सबसे तेज, सबसे सरल बोली का उपयोग करेगा जिसे वह जानता है, बाइनरी।

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

  • देशी नहीं, इसका मतलब है कि आपका कोड सीधे ओएस द्वारा निष्पादित नहीं किया जाएगा। उसे कई अलग-अलग तरीकों से निष्पादित किया जा सकता है, मुख्य हैं जो एक वर्चुअल मशीन में आपके प्रोग्राम के बाईटेकोड संस्करण की व्याख्या और चल रहे हैं।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.