सॉफ़्टवेयर

From indicwiki
Revision as of 10:47, 29 February 2024 by Sarika (talk | contribs) (Created page with "{{Short description|Non-tangible executable component of a computer}} {{Other uses}} {{pp-protected|small=yes}} {{More citations needed|talk=Lots of missing citations.|date=Ja...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Jump to navigation Jump to search
File:Operating system placement (software).svg
एक आरेख जो दर्शाता है कि उपयोगकर्ता (कंप्यूटिंग) एक सामान्य डेस्कटॉप कंप्यूटर पर अनुप्रयोग प्रक्रिया सामग्री के साथ कैसे इंटरैक्ट करता है। एप्लिकेशन सॉफ़्टवेयर परत ऑपरेटिंग सिस्टम के साथ इंटरफ़ेस करती है, जो बदले में कंप्यूटर हार्डवेयर के साथ संचार करती है। तीर सूचना प्रवाह को दर्शाते हैं।

सॉफ़्टवेयर कंप्यूटर प्रोग्राम और डेटा (कंप्यूटिंग) का एक संग्रह है जो कंप्यूटर को विशिष्ट कार्य करने का तरीका बताता है। सॉफ़्टवेयर में अक्सर संबद्ध सॉफ़्टवेयर दस्तावेज़ीकरण शामिल होता है।[1] यह कंप्यूटर हार्डवेयर के विपरीत है, जिससे सिस्टम बनाया जाता है और जो वास्तव में कार्य करता है।

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

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

इतिहास[edit | edit source]

सॉफ़्टवेयर का पहला भाग क्या होगा, इसके लिए एक कलन विधि, नियोजित विश्लेषणात्मक इंजन के लिए, 19वीं शताब्दी में वहाँ लवलेस है द्वारा लिखा गया था।Lua error in package.lua at line 80: module 'strict' not found. उसने यह दिखाने के लिए गणितीय प्रमाण बनाया कि इंजन बर्नौली संख्याओं की गणना कैसे करेगा।Lua error in package.lua at line 80: module 'strict' not found. सबूतों और एल्गोरिदम के कारण उन्हें पहली कंप्यूटर प्रोग्रामर माना जाता है।[3][4] सॉफ्टवेयर के बारे में पहला सिद्धांत, कंप्यूटर के निर्माण से पहले, जैसा कि हम आज उन्हें जानते हैं, एलन ट्यूरिंग द्वारा अपने 1936 के निबंध, ऑन कंप्यूटेबल नंबर्स, एन एप्लीकेशन टू द निर्णय की समस्या (निर्णय समस्या) में प्रस्तावित किया गया था।[5] इससे अंततः कंप्यूटर विज्ञान और सॉफ्टवेयर इंजीनियरिंग के अकादमिक क्षेत्रों का निर्माण हुआ; दोनों क्षेत्र सॉफ्टवेयर और उसके निर्माण का अध्ययन करते हैं। रेफरी>"कंप्यूटर विज्ञान और सॉफ्टवेयर इंजीनियरिंग के बीच क्या अंतर है?". eVidyalam. Retrieved 24 October 2023.</ref> कंप्यूटर विज्ञान कंप्यूटर और सॉफ्टवेयर का सैद्धांतिक अध्ययन है (ट्यूरिंग का निबंध कंप्यूटर विज्ञान का एक उदाहरण है), जबकि सॉफ्टवेयर इंजीनियरिंग सॉफ्टवेयर के विकास के लिए इंजीनियरिंग सिद्धांतों का अनुप्रयोग है। रेफरी>Lorge Parnas, David (1 November 1984). "सॉफ्टवेयर इंजीनियरिंग सिद्धांत". INFOR: Information Systems and Operational Research. 22 (4): 303–316. doi:10.1080/03155986.1984.11731932. ISSN 0315-5986.</ref>

2000 में, येल लॉ स्कूल के लाइब्रेरियन फ्रेड शापिरो ने एक पत्र प्रकाशित किया जिसमें खुलासा किया गया कि जॉन वाइल्डर तुकी का 1958 का पेपर द टीचिंग ऑफ कंक्रीट मैथमेटिक्स[6][7]सॉफ्टवेयर शब्द का सबसे पहला ज्ञात उपयोग जेएसटीओआर के इलेक्ट्रॉनिक अभिलेखागार की खोज में पाया गया, जो ओईडी के उद्धरण से दो साल पहले का था।[8]इसके कारण कई लोगों ने इस शब्द को गढ़ने का श्रेय तुकी को दिया, विशेषकर उसी वर्ष प्रकाशित मृत्युलेखों में,[9]हालाँकि तुकी ने कभी भी ऐसे किसी सिक्के के लिए श्रेय का दावा नहीं किया। 1995 में, पॉल निकेट ने दावा किया कि उन्होंने मूल रूप से यह शब्द अक्टूबर 1953 में गढ़ा था, हालाँकि उन्हें अपने दावे का समर्थन करने वाला कोई दस्तावेज़ नहीं मिला।[10]इंजीनियरिंग संदर्भ में सॉफ्टवेयर शब्द का सबसे पहला ज्ञात प्रकाशन अगस्त 1953 में रिचर्ड आर. कारहार्ट द्वारा रैंड कॉर्पोरेशन रिसर्च मेमोरेंडम में किया गया था।[11]


प्रकार[edit | edit source]

वस्तुतः सभी कंप्यूटर प्लेटफ़ॉर्म पर, सॉफ़्टवेयर को कुछ व्यापक श्रेणियों में समूहीकृत किया जा सकता है।

उद्देश्य, या उपयोग का क्षेत्र[edit | edit source]

लक्ष्य के आधार पर कंप्यूटर सॉफ्टवेयर को निम्न में विभाजित किया जा सकता है:

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

निष्पादन की प्रकृति या क्षेत्र[edit | edit source]

  • डेस्कटॉप अनुप्रयोग जैसे वेब ब्राउज़र और माइक्रोसॉफ्ट ऑफिस और लिब्रे ऑफिस और वर्ड पर्फेक्ट , साथ ही स्मार्टफोन और टैबलेट कंप्यूटर एप्लिकेशन (जिन्हें मोबाइल एप्लिकेशन कहा जाता है)।[citation needed]
  • जावास्क्रिप्ट स्क्रिप्ट पारंपरिक रूप से वेब पृष्ठ ों में एम्बेडेड सॉफ़्टवेयर के टुकड़े हैं जो वेब ब्राउज़र प्लगइन की आवश्यकता के बिना वेब पेज लोड होने पर सीधे वेब ब्राउज़र के अंदर चलाए जाते हैं। अन्य प्रोग्रामिंग भाषाओं में लिखे गए सॉफ़्टवेयर को वेब ब्राउज़र के भीतर भी चलाया जा सकता है यदि सॉफ़्टवेयर को या तो जावास्क्रिप्ट में अनुवादित किया गया है, या यदि उस भाषा का समर्थन करने वाला एक वेब ब्राउज़र प्लगइन स्थापित है; उत्तरार्द्ध का सबसे आम उदाहरण ActionScript स्क्रिप्ट है, जो एडोब फ्लैश प्लगइन द्वारा समर्थित है।[citation needed]
  • सर्वर सॉफ्टवेयर, जिसमें शामिल हैं:
    • वेब अनुप्रयोग , जो आमतौर पर वेब सर्वर पर चलते हैं और गतिशील रूप से उत्पन्न वेब पेजों को वेब ब्राउज़र में आउटपुट करते हैं, उदाहरण के लिए। PHP, Java (प्रोग्रामिंग भाषा), ASP.NET, या यहां तक ​​कि Node.js. आधुनिक समय में इनमें आमतौर पर वेब ब्राउज़र में चलाने के लिए कुछ जावास्क्रिप्ट भी शामिल होते हैं, ऐसी स्थिति में वे आम तौर पर आंशिक रूप से सर्वर पर, आंशिक रूप से वेब ब्राउज़र में चलते हैं।[citation needed]
  • प्लग-इन (कंप्यूटिंग) और एक्सटेंशन ऐसे सॉफ़्टवेयर हैं जो सॉफ़्टवेयर के किसी अन्य भाग की कार्यक्षमता को बढ़ाते या संशोधित करते हैं, और कार्य करने के लिए सॉफ़्टवेयर का उपयोग करना आवश्यक होता है।[13]
  • उपकरणों के नियंत्रण के लिए सॉफ्टवेयर अंतः स्थापित प्रणाली के भीतर फर्मवेयर के रूप में रहता है, एकल उपयोग या कार और टेलीविजन जैसे कुछ उपयोग के लिए समर्पित डिवाइस (हालांकि वायरलेस चिपसेट जैसे कुछ एम्बेडेड डिवाइस स्वयं एक सामान्य, गैर-एम्बेडेड कंप्यूटर सिस्टम का हिस्सा हो सकते हैं जैसे कि पीसी या स्मार्टफोन)।[14] एम्बेडेड सिस्टम संदर्भ में कभी-कभी सिस्टम सॉफ़्टवेयर और एप्लिकेशन सॉफ़्टवेयर के बीच कोई स्पष्ट अंतर नहीं होता है। हालाँकि, कुछ एम्बेडेड सिस्टम एंबेडेड ऑपरेटिंग सिस्टम चलाते हैं, और ये सिस्टम सिस्टम सॉफ़्टवेयर और एप्लिकेशन सॉफ़्टवेयर के बीच अंतर बनाए रखते हैं (हालाँकि आमतौर पर केवल एक ही, निश्चित एप्लिकेशन होगा जो हमेशा चलाया जाता है)।[citation needed]
  • माइक्रोकोड एक विशेष, अपेक्षाकृत अस्पष्ट प्रकार का एम्बेडेड सॉफ़्टवेयर है जो प्रोसेसर को स्वयं बताता है कि मशीन कोड को कैसे निष्पादित करना है, इसलिए यह वास्तव में मशीन कोड से निचला स्तर है।[15] यह आम तौर पर प्रोसेसर निर्माता के स्वामित्व में होता है, और कोई भी आवश्यक सुधारात्मक माइक्रोकोड सॉफ़्टवेयर अपडेट उनके द्वारा उपयोगकर्ताओं को प्रदान किया जाता है (जो शिपिंग प्रतिस्थापन प्रोसेसर हार्डवेयर की तुलना में बहुत सस्ता है)। इस प्रकार एक सामान्य प्रोग्रामर को कभी भी इससे निपटने की उम्मीद नहीं होगी।[citation needed]

प्रोग्रामिंग उपकरण[edit | edit source]

प्रोग्रामिंग टूल भी प्रोग्राम या एप्लिकेशन के रूप में सॉफ़्टवेयर होते हैं जिनका उपयोग सॉफ्टवेयर डेवलपर डिबगिंग, सॉफ़्टवेयर रखरखाव, या अन्यथा तकनीकी सहायता सॉफ़्टवेयर बनाने के लिए करते हैं।[16][better source needed]

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

विषय[edit | edit source]

वास्तुकला[edit | edit source]

जो लोग आधुनिक सामान्य प्रयोजन कंप्यूटर (एम्बेडेड सिस्टम, एनालॉग कंप्यूटर और सुपर कंप्यूटर के विपरीत) का उपयोग करते हैं, वे आमतौर पर विभिन्न प्रकार के कार्य करने वाले सॉफ़्टवेयर की तीन परतें देखते हैं: प्लेटफ़ॉर्म, एप्लिकेशन और उपयोगकर्ता सॉफ़्टवेयर।[citation needed]

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

निष्पादन[edit | edit source]

कंप्यूटर सॉफ़्टवेयर को कंप्यूटर के कंप्यूटर भंडारण (जैसे हार्ड ड्राइव या स्मृति) में लोड करना होता है। एक बार सॉफ्टवेयर लोड हो जाने के बाद, कंप्यूटर सॉफ्टवेयर को निष्पादित करने में सक्षम होता है। इसमें एप्लिकेशन सॉफ़्टवेयर से सिस्टम सॉफ़्टवेयर के माध्यम से हार्डवेयर तक निर्देश भेजना शामिल है जो अंततः मशीन कोड के रूप में निर्देश प्राप्त करता है। प्रत्येक निर्देश कंप्यूटर को एक ऑपरेशन करने का कारण बनता है - डेटा को स्थानांतरित करना, गणना करना, या निर्देशों के नियंत्रण प्रवाह को बदलना।[citation needed]

डेटा मूवमेंट आम तौर पर मेमोरी में एक स्थान से दूसरे स्थान पर होता है। कभी-कभी इसमें मेमोरी और रजिस्टरों के बीच डेटा ले जाना शामिल होता है जो सीपीयू में हाई-स्पीड डेटा एक्सेस को सक्षम बनाता है। डेटा स्थानांतरित करना, विशेष रूप से इसकी बड़ी मात्रा, महंगा हो सकता है; इसके बजाय कभी-कभी डेटा के लिए पॉइंटर्स का उपयोग करके इससे बचा जाता है।[citation needed] संगणना में सरल ऑपरेशन शामिल होते हैं जैसे कि एक परिवर्तनीय डेटा तत्व का मूल्य बढ़ाना। अधिक जटिल गणनाओं में एक साथ कई ऑपरेशन और डेटा तत्व शामिल हो सकते हैं।[citation needed]


गुणवत्ता और विश्वसनीयता[edit | edit source]

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

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


लाइसेंस[edit | edit source]

सॉफ़्टवेयर का लाइसेंस उपयोगकर्ता को लाइसेंस प्राप्त वातावरण में सॉफ़्टवेयर का उपयोग करने का अधिकार देता है, और मुफ़्त सॉफ़्टवेयर लाइसेंस के मामले में, प्रतियां बनाने का अधिकार जैसे अन्य अधिकार भी प्रदान करता है।[19] मालिकाना सॉफ़्टवेयर को दो प्रकारों में विभाजित किया जा सकता है:

  • फ़्रीवेयर, जिसमें निःशुल्क परीक्षण सॉफ़्टवेयर या फ़्रीमियम सॉफ़्टवेयर की श्रेणी शामिल है (अतीत में, शेयरवेयर शब्द का उपयोग अक्सर निःशुल्क परीक्षण/फ़्रीमियम सॉफ़्टवेयर के लिए किया जाता था)। जैसा कि नाम से पता चलता है, फ्रीवेयर का उपयोग मुफ्त में किया जा सकता है, हालांकि मुफ्त परीक्षण या freemium सॉफ़्टवेयर के मामले में, यह कभी-कभी सीमित अवधि के लिए या सीमित कार्यक्षमता के साथ ही सच होता है।[20]
  • सॉफ़्टवेयर शुल्क पर उपलब्ध है, जिसका उपयोग केवल लाइसेंस खरीदने पर ही कानूनी रूप से किया जा सकता है।[21]

खुला स्रोत सॉफ्टवेयर एक मुफ़्त सॉफ़्टवेयर लाइसेंस के साथ आता है, जो प्राप्तकर्ता को सॉफ़्टवेयर को संशोधित करने और पुनर्वितरित करने का अधिकार देता है।[22]


पेटेंट[edit | edit source]

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

डिज़ाइन और कार्यान्वयन[edit | edit source]

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

सॉफ़्टवेयर आमतौर पर एक्लिप्स (सॉफ़्टवेयर), IntelliJ IDEA और Microsoft Visual Studio जैसे एकीकृत विकास वातावरण (IDE) में विकसित किया जाता है जो प्रक्रिया को सरल बना सकता है और सॉफ़्टवेयर को संकलित कर सकता है।[citation needed] जैसा कि एक अलग अनुभाग में बताया गया है, सॉफ़्टवेयर आमतौर पर मौजूदा सॉफ़्टवेयर और अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) के शीर्ष पर बनाया जाता है जो अंतर्निहित सॉफ़्टवेयर जीटीके+, जावाबीन्स या स्विंग (जावा) जैसे प्रदान करता है।[citation needed] पुस्तकालयों (एपीआई) को उनके उद्देश्य के आधार पर वर्गीकृत किया जा सकता है। उदाहरण के लिए, स्प्रिंग फ्रेमवर्क का उपयोग एंटरप्राइज़ अनुप्रयोगों को लागू करने के लिए किया जाता है, विंडोज़ फॉर्म लाइब्रेरी का उपयोग माइक्रोसॉफ्ट वर्ड जैसे ग्राफिकल यूजर इंटरफेस (जीयूआई) अनुप्रयोगों को डिजाइन करने के लिए किया जाता है, और विंडोज़ कम्युनिकेशन फाउंडेशन का उपयोग वेब सेवाओं को डिजाइन करने के लिए किया जाता है।[citation needed] जब कोई प्रोग्राम डिज़ाइन किया जाता है, तो वह API पर निर्भर करता है। उदाहरण के लिए, एक Microsoft Windows डेस्कटॉप एप्लिकेशन .NET Framework|.NET Windows फॉर्म लाइब्रेरी में API फ़ंक्शंस जैसे फॉर्म1.क्लोज़() और फॉर्म1.शो() को कॉल कर सकता है।[24] एप्लिकेशन को बंद करने या खोलने के लिए. इन एपीआई के बिना, प्रोग्रामर को इन कार्यात्मकताओं को पूरी तरह से स्वयं लिखना होगा। Oracle Corporation और Microsoft जैसी कंपनियाँ अपने स्वयं के API प्रदान करती हैं ताकि कई एप्लिकेशन उनकी पुस्तकालय (कंप्यूटिंग) का उपयोग करके लिखे जा सकें जिनमें आमतौर पर कई API होते हैं।[citation needed]

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

कंप्यूटर सॉफ्टवेयर में विशेष आर्थिक विशेषताएं होती हैं जो इसके डिजाइन, निर्माण और वितरण को अधिकांश अन्य आर्थिक वस्तुओं से अलग बनाती हैं।[specify][25][26] सॉफ़्टवेयर बनाने वाले व्यक्ति को प्रोग्रामर, सॉफ्टवेयर इंजीनियर या सॉफ़्टवेयर डेवलपर कहा जाता है, इन सभी शब्दों का अर्थ समान होता है। प्रोग्रामर के लिए अधिक अनौपचारिक शब्द भी मौजूद हैं जैसे कोडर और हैकर – हालांकि बाद वाले शब्द का उपयोग भ्रम पैदा कर सकता है, क्योंकि इसका उपयोग अक्सर सुरक्षा हैकर के लिए किया जाता है।

यह भी देखें[edit | edit source]

संदर्भ[edit | edit source]

  1. "ISO/IEC 2382:2015". ISO. 3 September 2020. Archived from the original on 16 March 2023. Retrieved 26 May 2022. [Software includes] all or part of the programs, procedures, rules, and associated documentation of an information processing system.
  2. "संकलक निर्माण". cs.uu.nl. Archived from the original on 2 November 2013.
  3. Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the creation of the 1843 'notes'" (PDF). Annals of the History of Computing. 25 (4): 16–26. doi:10.1109/MAHC.2003.1253887. S2CID 40077111. Archived from the original (PDF) on 15 February 2020.
  4. "गूगल डूडल ने एडा लवलेस को सम्मानित किया". The Guardian. 10 December 2012. Archived from the original on 25 December 2018. Retrieved 25 November 2018.
  5. Turing, Alan Mathison (1936). "गणना योग्य संख्याओं पर, Entscheidungsproblem के लिए एक आवेदन के साथ" (PDF). Journal of Mathematics. 58: 230–265. Archived (PDF) from the original on 9 October 2022. Retrieved 28 August 2022.
  6. Tukey, John Wilder (January 1958). "The Teaching of Concrete Mathematics". American Mathematical Monthly. Taylor & Francis, Ltd. / Mathematical Association of America. 65 (1): 1–9, 2. doi:10.2307/2310294. ISSN 0002-9890. JSTOR 2310294. CODEN AMMYAE. […] Today the "software" comprising the carefully planned interpretive routines, compilers, and other aspects of automative programming are at least as important to the modern electronic calculator as its "hardware" of tubes, transistors, wires, tapes, and the like. […]
  7. Beebe, Nelson H. F. (22 August 2017). "Chapter I - Integer arithmetic". The Mathematical-Function Computation Handbook - Programming Using the MathCW Portable Software Library (1 ed.). Salt Lake City, UT, US: Springer International Publishing AG. pp. 969, 1035. doi:10.1007/978-3-319-64110-2. ISBN 978-3-319-64109-6. LCCN 2017947446. S2CID 30244721.
  8. Shapiro, Fred (2000). "Origin of the Term Software: Evidence from the JSTOR Electronic Journal Archive" (PDF). IEEE Annals of the History of Computing. 22 (2): 69–71. doi:10.1109/mahc.2000.887997. Archived from the original (PDF) on 5 June 2003. Retrieved 25 June 2013.
  9. Leonhardt, David (28 July 2000). "John Tukey, 85, Statistician; Coined the Word 'Software'". The New York Times. Archived from the original on 16 June 2021. Retrieved 24 September 2012.
  10. Niquette, R. Paul (2006), Softword: Provenance for the Word 'Software, ISBN 1-58922-233-4, archived from the original on 8 August 2019, retrieved 18 August 2019
  11. Carhart, Richard (1953). A survey of the current status of the electronic reliability problem (PDF). Santa Monica, CA: Rand Corporation. p. 69. Archived (PDF) from the original on 9 October 2022. […] It will be recalled from Sec. 1.6 that the term personnel was defined to include people who come into direct contact with the hardware, from production to field use, i.e., people who assemble, inspect, pack, ship, handle, install, operate, and maintain electronic equipment. In any of these phases personnel failures may result in unoperational gear. As with the hardware factors, there is almost no quantitative data concerning these software or human factors in reliability: How many faults are caused by personnel, why they occur, and what can be done to remove the errors. […]
  12. "सिस्टम सॉफ्ट्वेयर". The University of Mississippi. Archived from the original on 30 May 2001.
  13. "What is a Plugin?". Computer Hope. 6 June 2021. Archived from the original on 26 January 2022. Retrieved 26 January 2022.
  14. "Embedded Software—Technologies and Trends". IEEE Computer Society. May–June 2009. Archived from the original on 28 October 2013. Retrieved 6 November 2013.
  15. Landskov, D.; Davidson, S.; Shriver, B.; Mallett, P.W. (1980). "स्थानीय माइक्रोकोड संघनन तकनीकें". ACM Computing Surveys (CSUR). 12 (3): 261–294.
  16. "What is a Programming Tool? - Definition from Techopedia". Techopedia.com. 2 July 2020. Archived from the original on 26 January 2022. Retrieved 26 January 2022.
  17. "स्क्रिप्टिंग इंटेलिजेंस पुस्तक उदाहरण". GitHub. 9 May 2018. Archived from the original on 6 November 2015. Retrieved 6 November 2015.
  18. "What is System Software? – Definition from WhatIs.Com". WhatIs.com. Archived from the original on 27 February 2023. Retrieved 27 February 2023.
  19. "What is a Software License? Everything You Need to Know". CIO. Archived from the original on 27 February 2023. Retrieved 27 February 2023.
  20. "Freeware vs Shareware - Difference and Comparison | Diffen". www.diffen.com. Archived from the original on 26 January 2022. Retrieved 26 January 2022.
  21. Morin, Andrew; Urban, Jennifer; Sliz, Piotr (26 July 2012). "वैज्ञानिक-प्रोग्रामर के लिए सॉफ़्टवेयर लाइसेंसिंग के लिए एक त्वरित मार्गदर्शिका". PLOS Computational Biology. 8 (7): e1002598. Bibcode:2012PLSCB...8E2598M. doi:10.1371/journal.pcbi.1002598. ISSN 1553-7358. PMC 3406002. PMID 22844236.
  22. "ओपन सोर्स सॉफ्टवेयर के बारे में बताया गया". IONOS Digitalguide. Archived from the original on 26 January 2022. Retrieved 26 January 2022.
  23. Gerardo Con Díaz, "The Text in the Machine: American Copyright Law and the Many Natures of Software, 1974–1978", Technology and Culture 57 (October 2016), 753–79.
  24. "एमएसडीएन लाइब्रेरी". Microsoft. Archived from the original on 11 June 2010. Retrieved 14 June 2010.
  25. v. Engelhardt, Sebastian (2008). "सॉफ्टवेयर के आर्थिक गुण". Jena Economic Research Papers. 2 (2008–045). Archived from the original on 5 January 2016.
  26. Kaminsky, Dan (2 March 1999). "ओपन सोर्स सॉफ्टवेयर के लिए इष्टतम आर्थिक प्रतिमान क्यों है?". dankaminsky.com. Archived from the original on 22 May 2012. Retrieved 19 November 2021.



स्रोत[edit | edit source]

बाहरी संबंध[edit | edit source]

Lua error in package.lua at line 80: module 'strict' not found.