कम्प्यूटर सॉफ्टवेयर और प्रोग्रामिंग (Computer Software and Programming)

꧁ Digital Diary ༒Largest Writing Community༒꧂


Digital Diary Create a free account




कम्प्यूटर सॉफ्टवेयर और प्रोग्रामिंग (Computer Software and Programming)

सॉफ्टवेयर का परिचय (Introduction to Software)

Software कंप्यूटर के लिए एक set of instructions (निर्देशों का समूह) होता है। यह वह Invisible thing है जो कंप्यूटर के Hardware (जैसे कीबोर्ड, माउस, CPU) को बताती है कि क्या करना है।

                                                                                                              OR

Software एक collection होता है executable instructions, data, और programs का, जो computer के hardware को specific tasks perform करने का निर्देश देता है। यह computer system का non-tangible component है जो hardware के साथ मिलकर functionality provide करता है और users को problems solve करने, processes automate करने, या entertainment provide करने में सक्षम बनाता है।

Professional terms में, software सिर्फ एक single program नहीं है, बल्कि code, libraries, documentation, और services का एक comprehensive set है जो मिलकर काम करता है।

                                            

उदाहरण: कंप्यूटर का Hardware आपका शरीर है (हाथ, पैर, दिमाग, दिल)। और Software आपकी आत्मा/विचार/ज्ञान है। जिस तरह विचारों के बिना शरीर बेजान है, उसी तरह Software के बिना कंप्यूटर सिर्फ एक प्लास्टिक और धातु का डिब्बा है।

 

Software के मुख्य प्रकार (Main Types of Software)

Software मुख्य रूप से दो प्रकार के होते हैं: 

1. सैद्धान्तिक सॉफ्टवेयर System Software 

2. अनुप्रयोग सॉफ्टवेयर Application Software

 

1. सिस्टम सॉफ्टवेयर (System Software)

यह कंप्यूटर चलाने के लिए जरूरी बुनियादी Software है। यह उपयोगकर्ता (User) और कंप्यूटर के Hardware के बीच में काम करता है।

  • उदाहरण:

    • ऑपरेटिंग सिस्टम (OS): जैसे Windows, macOS, Linux, Android, iOS। यह सबसे महत्वपूर्ण सॉफ्टवेयर है जो आपके कंप्यूटर या फोन को शुरू (Start) होने और चलने की क्षमता देता है।

    • डिवाइस ड्राइवर (Device Drivers): जो प्रिंटर, वेबकैम जैसे बाहरी उपकरणों को कंप्यूटर से जोड़ने का काम करते हैं।

2. एप्लिकेशन सॉफ्टवेयर (Application Software)

यह वे Software हैं जिन्हें उपयोगकर्ता अपने किसी खास काम के लिए इस्तेमाल करते हैं। ये System Software के ऊपर चलते हैं।

  • उदाहरण:

    • वेब ब्राउजर: Chrome, Firefox (इंटरनेट चलाने के लिए)

    • MS Office Suite: Word (लिखने के लिए), Excel (हिसाब-किताब के लिए)

    • फोटो एडिटिंग सॉफ्टवेयर: Photoshop

    • गेम्स: PUBG, Candy Crush

    • ऐप्स: WhatsApp, YouTube, Amazon

 

 

अनुप्रयोग सॉफ्टवेयर Application Software

अनुप्रयोग सॉफ्टवेयर (जिसे एप्लिकेशन सॉफ्टवेयर या संक्षेप में ऐप भी कहते हैं) वह सॉफ्टवेयर होता है जो उपयोगकर्ता (End-User) के लिए बनाया जाता है ताकि वह कोई विशिष्ट कार्य (Specific Task) कर सके। यह सिस्टम सॉफ्टवेयर के ऊपर चलता है।

सरल उदाहरणों से समझें:

कल्पना कीजिए आपके कंप्यूटर/फोन में Windows या Android (सिस्टम सॉफ्टवेयर) है। यह एक खाली मंच (Stage) की तरह है। इस मंच पर जो भी कलाकार (Artist) perform करते हैं, वे सभी अनुप्रयोग सॉफ्टवेयर हैं।

और भी आसान उदाहरण:

  • सिस्टम सॉफ्टवेयर → रसोईघर (बर्तन, चाकू, स्टोव)

  • अनुप्रयोग सॉफ्टवेयर → विभिन्न व्यंजनों की रेसिपी (चाय बनाने की विधि, दाल बनाने की विधि)

अनुप्रयोग सॉफ्टवेयर के प्रमुख उदाहरण (Examples):

दस्तावेज़ बनाने के लिए: MS Word और Google Docs जैसे सॉफ्टवेयर का उपयोग होता है। ये रिपोर्ट, लेटर और रिज्यूमे बनाने का काम करते हैं।

गणना करने के लिए: MS Excel और Google Sheets जैसे सॉफ्टवेयर उपयोग में आते हैं। ये डेटा का हिसाब-किताब और चार्ट बनाने का कार्य करते हैं।

प्रस्तुति बनाने के लिए: MS PowerPoint और Canva जैसे अनुप्रयोग प्रयोग किए जाते हैं। ये स्लाइडशो और प्रेजेंटेशन तैयार करने में सहायक होते हैं।

संचार के लिए: WhatsApp, Gmail और Zoom जैसे सॉफ्टवेयर इस्तेमाल होते हैं। ये मैसेज भेजने, ईमेल करने और वीडियो कॉल का कार्य संपन्न करते हैं।

मनोरंजन के लिए: YouTube, Spotify और विभिन्न Games जैसे अनुप्रयोग उपलब्ध हैं। ये वीडियो देखने, संगीत सुनने और गेम खेलने की सुविधा प्रदान करते हैं।

फोटो संपादन के लिए: Adobe Photoshop और Snapseed जैसे सॉफ्टवेयर प्रयोग किए जाते हैं। ये तस्वीरों को एडिट और एन्हांस करने का काम करते हैं।

वेब ब्राउज़िंग के लिए: Chrome, Firefox और Edge जैसे ब्राउज़र उपयोग में आते हैं। ये इंटरनेट पर वेबसाइटें देखने की सुविधा प्रदान करते हैं।

 

अनुप्रयोग सॉफ्टवेयर की विशेषताएँ (Characteristics):

  • उपयोगकर्ता-केंद्रित (User-Centric): यह सीधे end-user की जरूरतों को पूरा करता है।

  • विशिष्ट उद्देश्य (Specific Purpose): हर ऐप का एक खास मकसद होता है (जैसे- Word टाइपिंग के लिए, Excel Calculation के लिए)।

  • सिस्टम सॉफ्टवेयर पर निर्भर: ये ऑपरेटिंग सिस्टम (जैसे Windows, Android) के ऊपर ही चलते हैं।

  • इंस्टॉल/अनइंस्टॉल करने योग्य: उपयोगकर्ता अपनी जरूरत के हिसाब से apps को install या remove कर सकता है।

अनुप्रयोग सॉफ्टवेयर के प्रकार (Types of Application Software):

  • जनरल-पर्पस सॉफ्टवेयर (General-Purpose): सामान्य कार्यों के लिए बने software। जैसे- web browser, word processor.

  • कस्टमाइज्ड सॉफ्टवेयर (Customized): किसी specific organization की खास जरूरतों के लिए बनाया गया software। जैसे- किसी बैंक के लिए अलग से बना accounting software.

  • वेब-आधारित अनुप्रयोग (Web-Based Apps): जिन्हें चलाने के लिए internet और browser की जरूरत होती है। जैसे- Netflix, Facebook.

  • मोबाइल ऐप्स (Mobile Apps): स्मार्टफोन और टैबलेट के लिए बने apps। जैसे- Instagram, Paytm.

 

सैद्धान्तिक सॉफ्टवेयर (System Software)

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

कम्पाइलर (Compiler)

यह एक अनुवाद प्रणाली प्रोग्राम है, जिसका प्रयोग उच्च-स्तरीय भाषा प्रोग्राम को मशीन स्तरीय भाषा प्रोग्राम में अन्तरण (change) के लिए किया जाता है।

सरल शब्दों में कम्पाइलर क्या है?

एक कम्पाइलर एक ऐसा ट्रांसलेटर प्रोग्राम (अनुवादक) है जो उच्च-स्तरीय भाषा (High-Level Language) में लिखे गए सोर्स कोड (Source Code) को निम्न-स्तरीय भाषा (Low-Level Language) यानी मशीनी कोड (Machine Code) में बदलता है, जिसे कंप्यूटर सीधे समझ और Execute (निष्पादित) कर सकता है।

आसान उदाहरण के लिए समझें:

  • प्रोग्रामर अंग्रेजी जैसी आसान भाषा (जैसे C++, Java, Python) में कोड लिखता है। इसे सोर्स कोड कहते हैं।

  • कंप्यूटर सिर्फ 0s और 1s (बाइनरी कोड) की भाषा समझता है। इसे मशीनी कोड/ऑब्जेक्ट कोड कहते हैं।

  • कम्पाइलर इन दोनों के बीच का दुभाषिया (Interpreter) है। यह प्रोग्रामर की भाषा को कंप्यूटर की भाषा में पूरा का पूरा अनुवाद कर देता है।

   कम्पाइलर कैसे काम करता है? (Step-by-Step Process)

कम्पाइलर का काम सिर्फ अनुवाद करना ही नहीं है, बल्कि यह कई चरणों में पूरा होता है:

  • लेक्सिकल एनालिसिस (Lexical Analysis): सोर्स कोड को छोटे-छोटे टुकड़ों (Tokens) में तोड़ता है, जैसे keywords, identifiers, operators आदि। यह बच्चों को पढ़ाने के लिए वाक्यों को शब्दों में तोड़ने जैसा है।

  • सिंटैक्स एनालिसिस (Syntax Analysis): यह जांचता है कि Tokens सही क्रम (Grammar) में हैं या नहीं। अगर कोई grammatical mistake (Syntax Error) है, तो यहीं रुक जाता है और error दिखाता है। यह किसी वाक्य की व्याकरणिक जांच करने जैसा है।

  • सिमेंटिक एनालिसिस (Semantic Analysis): यह जांचता है कि कोड का अर्थ सही है या नहीं। जैसे, किसी number को string से जोड़ने की कोशिश करना। यह "दो और आम का जूस" जैसे वाक्य की अर्थहीनता को पकड़ता है।

  • इंटरमीडिएट कोड जनरेशन (Intermediate Code Generation): कम्पाइलर एक ऐसा कोड बनाता है जो मशीन से स्वतंत्र होता है (जैसे Bytecode)। इसका उपयोग अलग-अलग प्लेटफॉर्म के लिए कोड बनाने में होता है।

  • कोड ऑप्टिमाइजेशन (Code Optimization): जनरेट किए गए कोड को और भी कुशल (Efficient) और तेज (Faster) बनाने के लिए optimize किया जाता है, ताकि यह कम memory और कम time ले।

  • कोड जनरेशन (Code Generation): आखिरी स्टेप में, ऑप्टिमाइज्ड कोड को सीधे मशीनी कोड (0s और 1s) में बदल दिया जाता है, जिसे एक्सेक्यूटेबल फाइल (.exe, .out, आदि) के रूप में सेव कर दिया जाता है।

इस पूरी प्रक्रिया को कम्पाइलेशन (Compilation) कहते हैं।

कम्पाइलर के उदाहरण (Examples)

  • GCC (GNU Compiler Collection): C, C++ जैसी भाषाओं के लिए सबसे प्रसिद्ध कम्पाइलर।

  • Java Compiler (javac): Java कोड को Bytecode में कम्पाइल करता है।

  • .NET Compiler: C#, VB.NET आदि के लिए Microsoft का कम्पाइलर।

कम्पाइलर के फायदे

  • तेज Execution: एक बार कम्पाइल होने के बाद प्रोग्राम बहुत तेजी से चलता है क्योंकि कंप्यूटर को दोबारा अनुवाद करने की जरूरत नहीं पड़ती।

  • सुरक्षा (Security): एक्सेक्यूटेबल फाइल में सोर्स कोड छुपा होता है, जिसे आसानी से नहीं देखा या बदला जा सकता।

  • एरर डिटेक्शन: कम्पाइलेशन के time पर ही syntax और semantic errors पकड़ में आ जाते हैं।

असेम्ब्लर (Assembler)

यह एक और अनुवाद प्रोग्राम है. जिसका प्रयोग असेम्ब्ली भाषा प्रोग्राम को मशीन भाषा प्रोग्राम में अस्तरण (change) करने के लिए किया जाता है।

                                                                                         OR

असेम्ब्लर (Assembler) क्या है?

एक असेम्ब्लर (Assembler) एक विशेष प्रकार का सिस्टम सॉफ्टवेयर है जो असेम्बली भाषा (Assembly Language) में लिखे गए प्रोग्राम को मशीनी भाषा (Machine Language) में परिवर्तित करता है। यह निम्न-स्तरीय प्रोग्रामिंग के लिए एक अनुवादक का कार्य करता है।

सरल भाषा में समझें: असेम्बली भाषा में प्रोग्राम लिखने के लिए मनमोनिक्स (Mnemonics) का उपयोग किया जाता है, जैसे:

  • ADD (जोड़ना)

  • SUB (घटाना)

  • MOV (स्थानांतरित करना)

असेम्ब्लर इन मनमोनिक्स को बाइनरी कोड (0 और 1) में बदल देता है जिसे कंप्यूटर सीधे समझ सकता है।

असेम्ब्लर के प्रमुख कार्य:

  • मनमोनिक्स को ऑपकोड में परिवर्तित करना - असेम्बली निर्देशों को बाइनरी मशीन कोड में बदलना

  • प्रतीकात्मक पतों का समाधान करना - चर और लेबलों के नामों को वास्तविक मेमोरी एड्रेस में बदलना

  • त्रुटि जाँच - वाक्य रचना (Syntax) की त्रुटियों का पता लगाना

  • मशीन कोड उत्पन्न करना - अंतिम निष्पादन योग्य बाइनरी फाइल तैयार करना

असेम्ब्लर के प्रकार:

  • एकल पास असेम्ब्लर (Single Pass Assembler)

    • स्रोत कोड को केवल एक बार पढ़ता है

    • तेज गति से कार्य करता है

    • आगे के संदर्भों को संभाल नहीं सकता

  • बहु-पास असेम्ब्लर (Multi-Pass Assembler)

    • स्रोत कोड को कई बार पढ़ता है

    • जटिल प्रोग्रामों के लिए उपयुक्त

    • सभी प्रकार के संदर्भों को संभाल सकता है

असेम्ब्लर के लाभ:

  • कम्पाइलर से तीव्र - अनुवाद प्रक्रिया अधिक तेज होती है

  • हार्डवेयर नियंत्रण - सीधे हार्डवेयर तक पहुँच संभव

  • दक्षता - निष्पादन तेज और मेमोरी कुशल

  • सटीकता - निर्देशों का सीधा नियंत्रण संभव

असेम्ब्लर के उपयोग:

  • ऑपरेटिंग सिस्टम विकास

  • डिवाइस ड्राइवर निर्माण

  • एम्बेडेड सिस्टम प्रोग्रामिंग

  • फर्मवेयर विकास

  • सिस्टम सॉफ्टवेयर निर्माण

उदाहरण:

असेम्बली कोड:

text

    MOV AL, 61h ADD AL, 20h

असेम्ब्लर इसे इस प्रकार बाइनरी कोड में बदलेगा:

text

    10110000 01100001 00000100 00100000

इन्टरप्रेटर (Interpreter):

यह भी एक अनुवाद सिद्धान्त प्रोग्राम है जिसका उपयोग उच्च स्तरीय भाषा प्रोग्राम को मशीनी भाषा प्रोग्राम में अन्तरण (change) के लिए किया जाता है किन्तु यह पकित-दर-पकित अनुबाद कर निष्पादन करता है

                                                                                                                                             OR

इंटरप्रेटर (Interpreter) क्या है?

एक इंटरप्रेटर (Interpreter) एक प्रकार का ट्रांसलेटर प्रोग्राम है जो उच्च-स्तरीय प्रोग्रामिंग भाषा में लिखे गए सोर्स कोड को लाइन-बाय-लाइन पढ़ता है और उसे तुरंत निष्पादित (execute) करता है। यह कोड को पूरा का पूरा translate करके एक executable file बनाने के बजाय, real-time में translation और execution दोनों करता है।

सरल उदाहरण से समझें:

कल्पना कीजिए आप एक दुभाषिया (Interpreter) की तरह हैं जो:

English में बोले गए एक वाक्य को सुनता है

उसका तुरंत हिंदी में अनुवाद करता है

अनुवाद सुनाकर तुरंत प्रतिक्रिया देता है

फिर अगला वाक्य सुनता है

यही इंटरप्रेटर का काम है। यह पूरी कहानी का एक साथ अनुवाद नहीं करता, बल्कि step-by-step काम करता है।

इंटरप्रेटर कैसे काम करता है?

पहली लाइन पढ़ता है

उसे मशीन-समझने योग्य निर्देशों में बदलता है

तुरंत execute करता है

अगली लाइन की ओर बढ़ता है

अगर कोई त्रुटि (error) मिलती है, तो execution तुरंत रुक जाती है

उदाहरण:

python

    print("नमस्ते दुनिया") x = 5 + 3 print(x)

इंटरप्रेटर पहली लाइन execute करेगा, फिर दूसरी, फिर तीसरी।

इंटरप्रेटर के मुख्य गुण:

  • लाइन-बाय-लाइन निष्पादन

  • तुरंत परिणाम दिखाता है

  • त्रुटि मिलते ही execution रुक जाती है

  • कोई अलग executable file generate नहीं होती

  • डिबगिंग आसान होती है

इंटरप्रेटर के लाभ:

  • प्लेटफॉर्म स्वतंत्र: एक ही कोड किसी भी platform पर चल सकता है

  • डिबगिंग आसान: त्रुटि मिलते ही execution रुक जाती है

  • इंटरएक्टिव: execution के दौरान user input allow करता है

  • अलग compilation की आवश्यकता नहीं: बार-बार compile करने की जरूरत नहीं

इंटरप्रेटर की सीमाएँ:

  • निष्पादन धीमा: हर बार translation करना पड़ता है

  • कोई executable file नहीं: हर बार source code needed

  • रनटाइम त्रुटियाँ: Program run होने के बाद errors मिल सकती हैं

इंटरप्रेटर का उपयोग करने वाली भाषाएँ:

Python

JavaScript

Ruby

PHP

Perl

 

लोडर (Loader):

यह एक सैध्दान्तिक प्रोग्राम है जिसका उपयोग मशीनी भाषा प्रोग्राम को कम्प्यूटर की मेमोरी में संचित करने के लिए किया जाता है।

                                                                                            OR

लोडर (Loader) क्या है?

एक लोडर (Loader) एक महत्वपूर्ण सिस्टम सॉफ्टवेयर है जो कंप्यूटर की मुख्य मेमोरी (RAM) में प्रोग्राम को लोड करने और निष्पादन के लिए तैयार करने का कार्य करता है। यह ऑपरेटिंग सिस्टम का एक अभिन्न अंग है।

सरल भाषा में समझें:

कल्पना कीजिए:

  • कम्पाइलर/असेम्बलर → किताब का लेखक (जो कहानी लिखता है)

  • ऑब्जेक्ट फाइल → लिखी हुई किताब

  • लोडर → लाइब्रेरियन (जो किताब को अलमारी से निकालकर पाठक को देता है)

  • मेमोरी → पाठक की मेज (जहाँ किताब पढ़ी जाती है)

लोडर का काम है executable फाइल को secondary memory (हार्ड डिस्क) से primary memory (RAM) में लाना ताकि CPU उसे execute कर सके।

लोडर के मुख्य कार्य:

  • अनुलग्नक (Linking):

    • विभिन्न ऑब्जेक्ट मॉड्यूल्स को जोड़ना

    • लाइब्रेरी रूटीन्स को जोड़ना

  • पुनः स्थान निर्धारण (Relocation):

    • मेमोरी एड्रेस को adjust करना

    • प्रोग्राम को मेमोरी के सही location पर लोड करना

  • लोडिंग:

    • executable फाइल को RAM में लोड करना

    • मेमोरी आवंटन करना

  • प्रारंभिककरण (Initialization):

    • प्रोग्राम काउंटर सेट करना

    • रजिस्टर्स को initialize करना

लोडर के प्रकार:

  • पूर्ण निरपेक्ष लोडर (Absolute Loader):

    • सबसे सरल प्रकार का लोडर

    • ऑब्जेक्ट कोड को पूर्वनिर्धारित मेमोरी location पर लोड करता है

    • कोई relocation की आवश्यकता नहीं

  • पुनः स्थाननशील लोडर (Relocating Loader):

    • ऑब्जेक्ट कोड को किसी भी available memory location पर लोड कर सकता है

    • addresses को automatically adjust करता है

  • डायरेक्ट लिंकिंग लोडर (Direct Linking Loader):

    • सबसे अधिक capability वाला लोडर

    • multiple object modules को link करता है

    • external references को resolve करता है

लोडिंग प्रक्रिया के चरण:

  • आवंटन (Allocation): प्रोग्राम के लिए मेमोरी स्पेस allocate करना

  • लोडिंग: executable कोड को memory में copy करना

  • पुनः स्थानन (Relocation): addresses को adjust करना

  • लिंकिंग: external references को resolve करना

  • प्रारंभिककरण: प्रोग्राम execution के लिए तैयार करना

लोडर के लाभ:

  • मेमोरी प्रबंधन: efficient memory utilization

  • मल्टीप्रोग्रामिंग: multiple programs को simultaneously load करना

  • सुरक्षा: memory protection provide करना

  • लचीलापन: dynamic loading की सुविधा

आधुनिक सिस्टम में लोडर:

आधुनिक ऑपरेटिंग सिस्टम में, लोडर के कार्यों को इन भागों में बाँटा गया है:

  • बूटलोडर (Bootstrap Loader): कंप्यूटर चालू होने पर OS को load करता है

  • एग्जिक्यूटिव लोडर: user programs को load करता है

  • डायनामिक लिंकर: runtime पर libraries को link करता है

उदाहरण:

  • Windows में - EXE लोडर

  • Linux में - ELF लोडर

  • Java में - Class लोडer

प्रचालन प्रणाली(Operating System) और O/S के प्रकार

1 बैच सिस्टम् (Batch Systems)

2. इन्टिरैक्टिव सिस्टम् (Interactive Systems)

3. मल्टिप्रोग्रामिंग (Multiprogramming)

4. टाइम-शेरिंग कम्प्यूटिंग (Time-sharing computing)

5. मल्टिप्रोसोसिंग (Multiprocessing)

6. मल्टिटास्किंग (Multitasking)

7. मल्टियूजर ऑपरेटिंग सिस्टेम (Multiuser Operating System)

समस्या-परिभाषा Problem definition

समस्या, विचारार्थ या समाधान ढूँढ़ने के लिए उठाया गया प्रश्न है।




Leave a comment

We are accepting Guest Posting on our website for all categories.


Comments

Wefru Services

I want to Hire a Professional..