कम्प्यूटर सॉफ्टवेयर और प्रोग्रामिंग (Computer Software and Programming)
꧁ Digital Diary ༒Largest Writing Community༒꧂
꧁ Digital Diary ༒Largest Writing Community༒꧂
सॉफ्टवेयर शब्द का अर्थ, कम्प्यूटर System को चलाने के लिए आवश्यक Instructions के Collection से है। इन Instructions का उद्देश्य विशिष्ट समस्या का समाधान ढूंढना होता है। कम्प्यूटर भाषा के प्रयोग से हम अपनी मशीन के लिए स्वयं सॉफ्टवेयर बना सकते हैं। कम्प्यूटर भाषाजों के अपने चिह्न, वर्ण और उपयोग के नियम होते हैं जो आपको कम्प्यूटर से संचार करने की सुविधा प्रदान करते हैं।
OR
सॉफ्टवेयर कंप्यूटर सिस्टम का वह अमूर्त (Intangible) घटक है, जो निर्देशों (Instructions) और डेटा के एक समूह के रूप में होता है। यह हार्डवेयर को यह निर्देशित करता है कि किसी specific उद्देश्य या task को पूरा करने के लिए उसे कैसे operate करना है।
OR
सरल शब्दों में, सॉफ्टवेयर हार्डवेयर और उपयोगकर्ता के बीच एक इंटरफेस प्रदान करता है, जो उपयोगकर्ता के commands को हार्डवेयर के लिए समझने योग्य machine-level instructions में परिवर्तित करता है।
सॉफ्टवेयर कम्प्यूटर का एक प्रोग्राम है जो ऐसे अनुदेशों को उपलब्ध कराता है जिसके आधार पर कम्प्यूटर हार्डवेयर काम करते हैं। कम्प्यूटर की संरचना में उपयुक्त इलेक्ट्रॉनिक सर्किटम जो सॉफ्टवेयर को निष्पादित करते है हार्डवेयर (Hardware) कहलाते हैं। उदाहरण के लिए दुकान से खरीदी गई टीवी हार्डवेयर है, टी वी स्टेशन से प्रसारित विविध मनोरंजन के कार्यक्रम सॉफ्टवेयर हैं। एक ध्यान देने योग्य बात यह है कि, हॉर्डवेयर में एक बार खर्चा होता है और यह आवश्यक भी है जब कि सॉफ्टवेयर नितांत एवं अत्यावश्यक है। कम्प्यूटर सॉफ्टवेयर को मोटे तौर पर दो वर्गों में वर्गीकृत किया जा सकता है।
1. अनुप्रयोग सॉफ्टवेयर Application Software
2. सैद्धान्तिक सॉफ्टवेयर System Software
अनुप्रयोग सॉफ्टवेयर (जिसे एप्लिकेशन सॉफ्टवेयर या संक्षेप में ऐप भी कहते हैं) वह सॉफ्टवेयर होता है जो उपयोगकर्ता (End-User) के लिए बनाया जाता है ताकि वह कोई विशिष्ट कार्य (Specific Task) कर सके। यह सिस्टम सॉफ्टवेयर के ऊपर चलता है।
कल्पना कीजिए आपके कंप्यूटर/फोन में Windows या Android (सिस्टम सॉफ्टवेयर) है। यह एक खाली मंच (Stage) की तरह है। इस मंच पर जो भी कलाकार (Artist) perform करते हैं, वे सभी अनुप्रयोग सॉफ्टवेयर हैं।
और भी आसान उदाहरण:
सिस्टम सॉफ्टवेयर → रसोईघर (बर्तन, चाकू, स्टोव)
अनुप्रयोग सॉफ्टवेयर → विभिन्न व्यंजनों की रेसिपी (चाय बनाने की विधि, दाल बनाने की विधि)
दस्तावेज़ बनाने के लिए: MS Word और Google Docs जैसे सॉफ्टवेयर का उपयोग होता है। ये रिपोर्ट, लेटर और रिज्यूमे बनाने का काम करते हैं।
गणना करने के लिए: MS Excel और Google Sheets जैसे सॉफ्टवेयर उपयोग में आते हैं। ये डेटा का हिसाब-किताब और चार्ट बनाने का कार्य करते हैं।
प्रस्तुति बनाने के लिए: MS PowerPoint और Canva जैसे अनुप्रयोग प्रयोग किए जाते हैं। ये स्लाइडशो और प्रेजेंटेशन तैयार करने में सहायक होते हैं।
संचार के लिए: WhatsApp, Gmail और Zoom जैसे सॉफ्टवेयर इस्तेमाल होते हैं। ये मैसेज भेजने, ईमेल करने और वीडियो कॉल का कार्य संपन्न करते हैं।
मनोरंजन के लिए: YouTube, Spotify और विभिन्न Games जैसे अनुप्रयोग उपलब्ध हैं। ये वीडियो देखने, संगीत सुनने और गेम खेलने की सुविधा प्रदान करते हैं।
फोटो संपादन के लिए: Adobe Photoshop और Snapseed जैसे सॉफ्टवेयर प्रयोग किए जाते हैं। ये तस्वीरों को एडिट और एन्हांस करने का काम करते हैं।
वेब ब्राउज़िंग के लिए: Chrome, Firefox और Edge जैसे ब्राउज़र उपयोग में आते हैं। ये इंटरनेट पर वेबसाइटें देखने की सुविधा प्रदान करते हैं।
उपयोगकर्ता-केंद्रित (User-Centric): यह सीधे end-user की जरूरतों को पूरा करता है।
विशिष्ट उद्देश्य (Specific Purpose): हर ऐप का एक खास मकसद होता है (जैसे- Word टाइपिंग के लिए, Excel Calculation के लिए)।
सिस्टम सॉफ्टवेयर पर निर्भर: ये ऑपरेटिंग सिस्टम (जैसे Windows, Android) के ऊपर ही चलते हैं।
इंस्टॉल/अनइंस्टॉल करने योग्य: उपयोगकर्ता अपनी जरूरत के हिसाब से apps को install या remove कर सकता है।
जनरल-पर्पस सॉफ्टवेयर (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.
ये कम्प्यूटर प्रणाली के लिए लिखे जाने वाले सामान्य प्रोग्राम हैं, जो अनुप्रयोग सॉफ्टवेयर लिखने के लिए सही वातावरण उपलब्ध कराने की सुविधा प्रदान करते हैं। कुछ सैद्धान्तिक प्रोग्राम नीचे दिये गये हैं।
कम्पाइलर (Compiler)
यह एक अनुवाद प्रणाली प्रोग्राम है, जिसका प्रयोग उच्च-स्तरीय भाषा प्रोग्राम को मशीन स्तरीय भाषा प्रोग्राम में अन्तरण (change) के लिए किया जाता है।
एक कम्पाइलर एक ऐसा ट्रांसलेटर प्रोग्राम (अनुवादक) है जो उच्च-स्तरीय भाषा (High-Level Language) में लिखे गए सोर्स कोड (Source Code) को निम्न-स्तरीय भाषा (Low-Level Language) यानी मशीनी कोड (Machine Code) में बदलता है, जिसे कंप्यूटर सीधे समझ और Execute (निष्पादित) कर सकता है।
आसान उदाहरण के लिए समझें:
प्रोग्रामर अंग्रेजी जैसी आसान भाषा (जैसे C++, Java, Python) में कोड लिखता है। इसे सोर्स कोड कहते हैं।
कंप्यूटर सिर्फ 0s और 1s (बाइनरी कोड) की भाषा समझता है। इसे मशीनी कोड/ऑब्जेक्ट कोड कहते हैं।
कम्पाइलर इन दोनों के बीच का दुभाषिया (Interpreter) है। यह प्रोग्रामर की भाषा को कंप्यूटर की भाषा में पूरा का पूरा अनुवाद कर देता है।
कम्पाइलर का काम सिर्फ अनुवाद करना ही नहीं है, बल्कि यह कई चरणों में पूरा होता है:
लेक्सिकल एनालिसिस (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) कहते हैं।
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
1 बैच सिस्टम् (Batch Systems)
2. इन्टिरैक्टिव सिस्टम् (Interactive Systems)
3. मल्टिप्रोग्रामिंग (Multiprogramming)
4. टाइम-शेरिंग कम्प्यूटिंग (Time-sharing computing)
5. मल्टिप्रोसोसिंग (Multiprocessing)
6. मल्टिटास्किंग (Multitasking)
7. मल्टियूजर ऑपरेटिंग सिस्टेम (Multiuser Operating System)
समस्या-परिभाषा Problem definition
समस्या, विचारार्थ या समाधान ढूँढ़ने के लिए उठाया गया प्रश्न है।
We are accepting Guest Posting on our website for all categories.
I want to Hire a Professional..
Sanjeev panday
@DigitalDiaryWefru