Blog by Sanjeev panday | Digital Diary
" To Present local Business identity in front of global market"
" To Present local Business identity in front of global market"
1. किसी संख्या को प्राप्त करना या पढ़ना।
2. किसी संख्या को देना (या छापना)।
3. अंकगणितीय क्रियाएँ (जोड़, घटाव, गुणा तथा भाग) करन
4. दो संख्याओं की तुलना करना।
कोई प्रोग्राम कुछ निर्देशों (Instruction) का निश्चित और क्रमबद्ध समूह होता है। वे निर्देश इस प्रकार दिये (या लिखे) जाते हैं कि यदि उनका उसी क्रम में सही-सही पालन किया जाए, तो कोई कार्य पूरा हो जाए। उदाहरण के लिए, यदि आप किसी बच्चे को बाजार से कोई किताब लाने के लिए भेजते हैं, तो उसे निम्नलिखित आदेश दिय जायेंगे-
1. बाजार जाओ।
2. किताबों की दुकान पर जाओ।
3. किताब का नाम बताकर उसके बारे में पूछो।
4. यदि किताब उपलब्ध है तो उसे खरीद लो।
5. घर वापस आओ।
अब कोई भी बच्चा या व्यक्ति जो इन आदेशों को समझ सकता है और ये क्रियाएँ (आना, जाना, पूछना, खरीदना। आदि) कर सकता है, इन आदेशों के आधार पर आपकी इच्छित किताब लाकर दे सकता है। इस प्रकार ये आदेश वास्तव में एक प्रोग्राम ही हैं। इन आदेशों का इसी क्रम में पालन होना आवश्यक है। उदाहरण के लिए 'किताब के बारे मे पछना
कंप्यूटर के लिए भी हम इसी प्रकार आदेश देते हैं। इन आदेशों के समूह को ही प्रोग्राम कहा जाता है। लेकिन कंप्यूटर बाजार जाना और खरीदना जैसी क्रियाएँ नहीं कर सकता, बल्कि केवल पहले बतायी गयी पाँच प्रकार की क्रिया ही कर सकता है। इसलिए उसके लिए सभी आदेश इन क्रियाओं को करने के बारे में ही होने चाहिए। उदाहरण लिए, मान लीजिए कि आप किसी कक्षा के विद्यार्थियों की औसत उम्र निकालना चाहते हैं, तो इसके लिए आदेश इस प्रकार दिये जायेंगे-
1. कक्षा में छात्रों की संख्या को पढ़ो।
2. सभी छात्रों की उम्रों को पढ़ो।
3. उन सभी उम्रों का योग ज्ञात करो।
4. उम्रों के योग में छात्रों की संख्या से भाग देकर औसत उम्र निकालो।
5. औसत उम्र को छाप दो।
ये आदेश हमने साधारण बोलचाल की भाषा में लिखे हैं। कम्प्यूटर के लिए ये ही आदेश किसी विशेष भाषा में संक्षेप में लिखे जाते हैं। ध्यान दीजिए कि इनमें से प्रत्येक आदेश कम्प्यूटर की किसी मूल क्रिया (पढ़ना, जोड़ना, भाग देना, छापना आदि) से सम्बन्धित है। प्रत्येक कार्य करने के लिए क्रियाएँ अलग-अलग की जाती हैं
किसी कम्प्यूटर के लिए प्रोग्राम लिखने की क्रिया को प्रोग्रामिंग कहा जाता है। कम्प्यूटर को कम से कम आदेश देकर उससे अधिक से अधिक कार्य सही-सही करा लेना बहुत उपयोगी कला है। इसके लिए बहुत कौशल और ज्ञान की आवश्यकता होती है। कम्प्यूटर तो केवल एक जड़ मशौन है। उसके द्वारा बड़े-बड़े कार्य करा लेना प्रोग्रामिंग की कला का ही चमत्कार है।
जो व्यक्ति कम्प्यूटर के लिए प्रोग्राम लिखते हैं या तैयार करते हैं, उन्हें प्रोग्रामर (Programmer) कहा जाता है। कम्प्यूटर के लिए प्रोग्राम लिखने की कुछ विशेष भाषाएँ होती हैं। उन्हें प्रोग्रामिंग भाषा (Programming Languages) कहा जाता है। सी (C) ऐसी ही एक भाषा है, जिसका विस्तृत अध्ययन आप अगले अध्याय में करेंगे।
किसी भी कार्य के लिए प्रोग्राम लिखने से पहले उसकी पूरी जिना बनानी पड़ती है। समस्या को सुनते ही प्रोग्राम लिखने लग जाना गलत है। यह गलती प्रायः नये प्रोग्रामर किया आहे. परिणामस्वरूप उनका कई गुना अधिक समय उस प्रोग्राम की गलतियाँ ढूँढ़ने और उन्हें ठीक करने में लग आया है। इसके विपरीत सफल प्रोग्रामर वे होते हैं जो प्रोग्राम को योजना बनाकर चरणबद्ध तरीके से लिखते हैं और वे बहुत कम समय में सफल प्रोग्राम तैयार कर लेते हैं। इसी कारण कम्प्यूटर प्रोग्रामिंग के क्षेत्र में एक कहावत बहुत प्रोग्राम लिखना आप जितनी जल्दी प्रारम्भ करेंगे, वह उतनी ही देर में समाप्त होगा।
जब तक किसी समस्या को पूरी तरह समझ न लिया जाए, उसको हल करना या उसको कोशिश करना सम्भव नहीं है। यह एक तथ्य है कि प्रोग्राम लिखने के लिए प्रायः जो समस्याएँ दी जाती है, वे कभी भी पूर्ण नहीं होती. का न कोई बात उनमें छूट ही जाती है। अनुभवी प्रोग्रामर उस बात को शीघ्र पकड़ लेते हैं इसलिए या तो अतिरिक्त सूचनाएँ माँग लेते हैं या उसके स्थान पर अपने ज्ञान के अनुसार कल्पना कर लेते हैं। इसलिए समस्या को ठीक-ठीक समझ लेना अनिवार्य है।
आप पढ़ चुके हैं कि प्रोग्राम इनपुट डाटा पर क्रिया करने के लिए लिखे जाते हैं, इसलिए जब तक आपको यह ज्ञात न हो कि इनपुट किस रूप में होगा और किस प्रकार प्राप्त होगा, तब तक आप प्रोग्राम नहीं लिख सकते। इसलिए यह देख लेना अति आवश्यक है कि समस्या को हल करने के लिए समस्त आवश्यक इनपुट उपलब्ध है या नहीं और वह किस रूप में हैं। नये प्रोग्रामर इस तथ्य की उपेक्षा कर देते हैं, इसलिए प्रोग्राम लिखते समय भ्रम में पड़ जाते हैं।
अगले चरण में हमें आउटपुट की योजना बनानी होती है। इस चरण में ही यह स्पष्ट होता है कि हमारा प्रोग्राम वास्तव में क्या करना चाहता है। आउटपुट की योजना तैयार करते समय यह भी सुनिश्चित हो जाता है कि हमने समस्या को ठीक तरह समझ लिया है और यह भी कि हमें जो इनपुट दिया गया है, वह माँगे गये आउटपुट के लिए पर्याप्त है, अर्थात् कोई चीज छूटी नहीं है।
यह प्रोग्राम लिखने और बनाने का सबसे महत्त्वपूर्ण चरण है। इसमें हम समस्या के हल की चरणबद्ध रूपरेखा बनाते हैं। दिये हुए इनपुट से माँगे गये आउटपुट तक पहुँचने में जिन चरणों से गुजरना होता है, वं सभी चरण क्रमानुमार लिखे जाते हैं। इस क्रमबद्ध लेखन को एल्गोरिथ्म कहा जाता है। एल्गोरिथ्म वास्तव में साधारण भाषा में लिखा गया प्रोग्राम ही है। आवश्कता होने पर प्रोग्राम के उदद्देश्य को कई भागों में बाँट लिया जाता है और प्रत्येक भाग पर ध्यान केन्द्रित करके उसके लिए अलग-अलग एल्गोरिथ्म तैयार किये जाते हैं और अंत में सबको एक में मिला दिया जाता है। इस प्रकार पूरा एल्गोरिथ्म तैयार कर लिया जाता है।
एल्गोरिथ्म तैयार करने के बारे में आप अगले अनुच्छेद में विस्तार से पढ़ेंगे।
फ्लोचार्ट एल्गोरिथ्म तैयार करने और दिखाने की ही एक विधि है। इसमें किसी एल्गोरिथ्म के सभी चरणों को विशेष प्रकार की आकृतियों द्वारा दिखाया जाता है और उन आकृतियों के भीतर आवश्यक सूचनाएँ लिखी जाती हैं।
परलोचार्ट तैयार करने के बारे में आप इसी अध्याय में आगे विस्तार से पढ़ेंगे
इस चरण में ऊपर बताये गये एल्गोरिथ्म या फ्लोचार्ट के अनुसार किसी प्रोग्रामिंग भाषा में प्रोग्राम लिखा जाता है। यदि ऊपर के सभी चरणों का ठीक प्रकार से पालन किया गया है तो इस चरण में प्रोग्राम लिखना लगभग स्वचालित के बाद कम्पाइलर द्वारा उसका कम्पाइलेशन कराया जाता है। इससे यदि प्रोग्राम में कोई व्याकरण की गलती रह जाती होता है। इसके लिए केवल उस प्रोग्रामिंग भाषा के व्याकरण (Syntax) का ज्ञान होना आवश्यक है। प्रोग्राम लिख लेने है, तो उसका पता चल जाता है और उसे ठीक करके फिर से कम्पाइलेशन कराया जाता है। यह प्रक्रिया तब तक दोहरायी जाती है जब तक कि प्रोग्राम व्याकरण की गलतियों से पूरी तरह मुक्त नहीं हो जाता।
इस चरण में प्रोग्राम का परीक्षण किया जाता है। इसके लिए सबसे पहले एक परीक्षण डाटा (Test Data) तैयार किया जाता है। यह इनपुट डाटा ऐसा होना चाहिए, जिसका आउटपुट हमें पहले से ज्ञात हो, ताकि यह देखा जा सके चलिए जब तक आपको कि प्रोग्राम ठीक वही आउटपुट देता है या नहीं। यदि दोनों में समानता है, तो प्रोग्राम सफल कहा जायेगा। टैस्ट डाटा नहीं लिख सकते। इन तैयार कर लेने के बाद उस डाटा के लिए प्रोग्राम को चलाकर देखा जाता है और कोई गलती पाये जाने पर प्रोग्राम में उपलब्ध है या नहीं आवश्यक सुधार किये जाते हैं। जब परीक्षण का आउटपुट पूरी तरह सन्तोषजनक होता है, तो प्रोग्राम को वास्तविक य श्रम में पड़ जाते हैं। डाटा के साथ प्रयोग करने के लिए दे दिया जाता है।
आप पढ़ चुके हैं कि कोई एल्गोरिथ्म किसी कार्य को करने के लिए एक विशेष क्रम में लिखे गये आदेशों का समूह होता है। ये आदेश इस प्रकार लिखे जाते हैं कि यदि कोई व्यक्ति उनको समझकर उसी क्रम में उनका ठीक-ठीक पालन करता जाये, तो वह कार्य पूरा हो जाता है।
फ्लोचार्ट एल्गोरिथ्म लिखने की एक विधि है, जिसमें एल्गोरिथ्म के आदेशों या कथनों को विशेष प्रकार की आकृतियों के रूप में दिखाया जाता है। अलग-अलग प्रकार के कथनों के लिए अलग-अलग प्रकार की आकृतियों का उपयोग किया जाता है और उन आकृतियों के भीतर उस कथन को संक्षेप में लिखा जाता है। इन आकृत्तियों को उनके पालन के क्रम की दिशा में तीर के चिह्नों द्वारा जोड़ दिया जाता है।
ऊपर के सभी उदाहरणों में हमने जो एल्गोरिथ्म या फ्लोचार्ट बनाये हैं, वे सभी इस तरह के हैं कि प्रथम कधर (या आकृति) में प्रारम्भ करके सभी कथनों का उसी क्रम में पालन करते हुए अंतिम कथन तक पहुंचा जाता है।
सामान्यतया ऐसी स्थिति कम होती है। कई बार हमें कुछ कथनों को छोड़कर अन्य कथनों का पालन करना पड़ता है अर्थात् प्रोग्राम या एल्गोरिथ्म का नियंत्रण अथवा फ्लोचार्ट का प्रवाह अपनी सामान्य दिशा को छोड़कर किमी अन्य दिशा में चला जाता है। इस प्रकार प्रोग्राम के प्रवाह की दिशा बदलने की क्रिया को ब्राँचिंग (Branchting) जाता है।
फ्लोचार्ट में सशर्त ब्राँचिंग को एक डायमंड की आकृति द्वारा दिखाते हैं। डायमंड के अन्दर उस शर्त को लिखा जाता है, जिसकी जाँच की जानी है, और तीरों द्वारा उस शर्त के सत्य सा असत्य होने की स्थिति में पालन किये जाने वाले कथनों या आकृतियों की ओर संकेत किया जाता है।
इस तरह की ब्राँचिंग को बिना शर्त ब्राँचिंग (Unconditional Branching) कहा जाता है।
फ्लोचाटों में बिना शर्त ब्राँचिंग को तीरों द्वारा दिखाया जाता है।
किसी प्रोग्राम या एल्गोरिथ्म में किसी कार्य अथवा कथनों के समूह को बार-बार दोहराने की क्रिया को लूपिंग कहा जाता है।फ्लोचार्ट में लूप के लिए कोई विशेष चिह्न नहीं होता।
किसी बड़े कार्य के लिए कम्प्यूटर प्रोग्राम लिखना एक जटिल एवं कठिन कार्य होता है। यदि कोई कार्य बहुत जटिल है, तो उसको सफलतापूर्वक करने के लिए हम उसको कई छोटे-छोटे कार्यों में बाँट लेते हैं और फिर क्रमा प्रत्येक छोटे कार्य पर ध्यान केन्द्रित करके उसे पूरा कर लेते हैं। इस तरह खण्ड-खण्ड करके कार्य करने से को जटिल से जटिल कार्य भी पूरा किया जा सकता है। लम्बे और जटिल कार्यों के लिए प्रोग्राम लिखते समय भी हम इसी प्रक्रिया का पालन करते हैं और लम्बे प्रोग्राम को कई छोटे भागों में बाँटकर उनके लिए स्वतंत्र रूप से छोटे-छोटे प्रोग्रा लिख लेते हैं। फिर उन सभी छोटे प्रोग्रामों को एक मुख्य प्रोग्राम में जोड़कर एक जगह एकत्र कर लिया जाता है, जिस सम्पूर्ण प्रोग्राम तैयार हो जाता है। इस विधि को मॉड्यूलर प्रोग्रामिंग अथवा संरचनात्मक प्रोग्रामिंग ( Programming) कहा जाता है।
मॉड्यूलर या संरचनात्मक प्रोग्रामिंग के तीन प्रमुख उद्देश्य होते हैं
1. त्रुटि रहित प्रोग्राम तैयार करना,
2. कम से कम समय में प्रोग्राम तैयार करना,
3. प्रोग्राम का रखरखाव तथा उसमें सुधार करके सरल बनाना।
क्रमिक प्रक्रिया (Sequential Process)
निर्णय प्रक्रिया (Decision Process)
दोहराव प्रक्रिया (Repetition Process)
Read Full Blog...
Machine Code (मशीन कोड) कंप्यूटर की असली भाषा है। यह वह भाषा है जिसे आपका कंप्यूटर का प्रोसेसर (CPU) सीधे समझता और execute (निष्पादित) करता है। इसे बाइनरी कोड भी कहते हैं।
कल्पना कीजिए कंप्यूटर एक बहुत ही समझदार जानवर है, लेकिन वह सिर्फ "हाँ" (1) और "नहीं" (0) की भाषा समझता है। मशीन कोड उसी "हाँ" और "नहीं" यानी 0 और 1 की लंबी-लंबी स्ट्रिंग्स (strings) होती हैं।
उदाहरण: 10110000 01100101
यह एक simple instruction हो सकता है जो CPU को बताता है, "संख्या 101 (दशमलव में 5) को एक specific स्थान (register) में रख दो।"
बाइनरी फॉर्मेट: यह सिर्फ 0 (OFF) और 1 (ON) के combination से बना होता है। ये 0 और 1 बिजली के सिग्नल्स को represent करते हैं (0 = no current, 1 = current)।
सीधी Execution: CPU इस कोड को सीधे पढ़ और run कर सकता है। इसे किसी और translation की जरूरत नहीं होती। यह सबसे तेज तरीका है कंप्यूटर को instruction देने का।
मशीन-विशिष्ट: अलग-अलग तरह के CPUs (जैसे Intel, AMD, ARM) की अपनी अलग मशीन भाषा होती है। एक CPU के लिए लिखा गया मशीन कोड दूसरे प्रकार के CPU पर नहीं चलेगा।
मनुष्यों के लिए असमझेय: इंसानों के लिए 0s और 1s के इन लंबे sequences को पढ़ना, याद रखना और लिखना लगभग नामुमकिन है।
कोई भी इंसान सीधे मशीन कोड नहीं लिखता। यह automatic बनता है:
प्रोग्रामर एक High-Level Language (जैसे Python, Java) या Assembly Language में कोड लिखता है।
एक कम्पाइलर (Compiler) या असेम्बलर (Assembler) इस human-readable code को पूरा का पूरा पढ़कर मशीन कोड में translate कर देता है।
यह मशीन कोड एक .exe (Windows) या .out (Linux) जैसी फाइल में save हो जाता है।
जब आप उस program को चलाते हैं, तो CPU सीधे इसी मशीन कोड फाइल को पढ़ता और execute करता है।
Process Flow: प्रोग्रामर का लिखा कोड (C++/Java) → कम्पाइलर → मशीन कोड (0s और 1s) → CPU → रिजल्ट
मान लीजिए आपने C language में लिखा:
int a = 5 + 3;
कम्पाइलर इसे मशीन कोड में कुछ इस तरह बदल देगा (यह just एक example है, actual code much longer होता है):
10110000 00000101 // value 5 को एक जगह रखो
00000100 00000011 // उसमें 3 जोड़ो
10100010 ........ // result को memory में save करो
CPU इन्हीं बाइनरी instructions को एक-एक करके execute करेगा।
सोर्स कोड (Source Code) वह मूल कोड या आदेशों की सूची होती है जिसे एक प्रोग्रामर (Programmer) किसी प्रोग्रामिंग भाषा (जैसे Python, Java, C++) में लिखता है। इसे मानव-पठनीय (Human-Readable) कोड भी कहते हैं क्योंकि यह इंसानों के समझने लायक होता है।
कल्पना कीजिए आप एक रेसिपी लिख रहे हैं। आप हिंदी/अंग्रेजी में लिखेंगे:
"सबसे पहले 2 कप आटा लें"
"उसमें 1 कप पानी मिलाएं"
"अच्छे से गूंथ लें"
यह रेसिपी ही सोर्स कोड है। यह clear और समझने में आसान है।
सोर्स कोड का उदाहरण (Python में):
# यह एक सोर्स कोड है
naam = input("अपना नाम बताएं: ")
umr = int(input("अपनी उम्र बताएं: "))
if umr >= 18:
print("नमस्ते", naam, "! आप वोट दे सकते हैं।")
else:
print("नमस्ते", naam, "! आप अभी वोट देने के लिए छोटे हैं।")
इस कोड को देखकर आप अंदाजा लगा सकते हैं कि यह प्रोग्राम क्या करेगा।
मानव-पठनीय (Human-Readable): यह English के शब्दों और गणित के symbols से बना होता है, जिसे प्रोग्रामर आसानी से पढ़, समझ और बदल सकता है।
टेक्स्ट फाइल: सोर्स कोड साधारण टेक्स्ट फाइलों (.py, .java, .cpp) में save होता है।
निर्माण खंड (Building Blocks): सोर्स कोड ही वह चीज है जिसे कम्पाइलर (Compiler) या इंटरप्रेटर (Interpreter) पढ़ता है और उसे मशीन कोड (0s और 1s) में बदलता है।
लॉजिक और एल्गोरिदम: इसमें प्रोग्राम का पूरा तर्क (Logic) और कार्य करने का तरीका (Algorithm) लिखा होता है।
सोर्स कोड अपने आप में चलने लायक नहीं होता। उसे चलाने के लिए उसे मशीन कोड में बदलना पड़ता है। यह काम दो तरीकों से होता है:
कम्पाइलेशन (Compilation): एक कम्पाइलर पूरे सोर्स कोड को एक साथ पढ़कर एक एक्जिक्यूटेबल फाइल (.exe, .out) में बदल देता है।
Example: C, C++ का कोड
इंटरप्रिटेशन (Interpretation): एक इंटरप्रेटर सोर्स कोड को एक-एक लाइन पढ़ता है और तुरंत execute करता है।
Example: Python, JavaScript का कोड
Process: प्रोग्रामर → सोर्स कोड लिखता है → कम्पाइलर/इंटरप्रेटर → मशीन कोड → कंप्यूटर चलाता है
सोर्स कोड और मशीन कोड में अंतर
सोर्स कोड (Source Code) वह कोड होता है जिसे एक प्रोग्रामर खुद लिखता है। यह इंसानों के लिए बना होता है इसलिए इसे पढ़ना और समझना आसान होता है। सोर्स कोड English के शब्दों (जैसे if, else, print) और गणित के चिन्हों (जैसे +, -, *) से मिलकर बना होता है। यह एक साधारण टेक्स्ट फाइल की तरह होता है जिसे कोई भी टेक्स्ट एडिटर खोलकर देख और बदल सकता है। सोर्स कोड में प्रोग्राम का पूरा तर्क और काम करने का तरीका लिखा होता है।
मशीन कोड (Machine Code) वह कोड होता है जिसे कंप्यूटर का प्रोसेसर (CPU) सीधे समझता और चला सकता है। यह सिर्फ 0 और 1 की भाषा में होता है, जिसे बाइनरी कोड भी कहते हैं। इंसानों के लिए इसे पढ़ना या समझना लगभग नामुमकिन होता है। मशीन कोड सोर्स कोड से automatic बनता है, जब एक कम्पाइलर या इंटरप्रेटर सोर्स कोड का अनुवाद करता है। यह एक बाइनरी फाइल के रूप में होता है जिसे सीधे execute किया जा सकता है।
Read Full Blog...High-Level Language (HLL) क्या है?
एक High-Level Language (HLL) या उच्च-स्तरीय भाषा एक प्रोग्रामिंग भाषा है जो इंसानों (प्रोग्रामर) के लिए बनाई गई है। यह English के शब्दों और गणित के सिंबल्स (जैसे +, -, *, /) से मिलकर बनी होती है, जिसे आम इंसान आसानी से पढ़ और समझ सकता है।
इसका नाम 'उच्च-स्तरीय' इसलिए है क्योंकि यह कंप्यूटर के हार्डवेयर (जैसे प्रोसेसर, मेमोरी) से बहुत दूर एक 'ऊँचे स्तर' पर काम करती है। प्रोग्रामर को यह जानने की जरूरत नहीं होती कि कंप्यूटर का CPU अंदर से कैसे काम करता है।
उदाहरण के लिए, एक High-Level Language में लिखा गया कोड:
answer = 5 + 3 if answer > 10: print("बड़ी संख्या") else: print("छोटी संख्या")
इस कोड को देखकर आप अंदाजा लगा सकते हैं कि यह क्या कर रहा है, क्योंकि यह English और गणित के सरल नियमों जैसा दिखता है।
इंसानों के लिए आसान (Human-Friendly): इसे लिखना, पढ़ना और समझना आसान है क्योंकि यह हमारी बोलचाल की भाषा के करीब है।
मशीन से स्वतंत्र (Machine Independent): HLL में लिखा गया एक program अलग-अलग तरह के कंप्यूटरों (जैसे Windows, Mac, Linux) पर चलाया जा सकता है। बस उसके लिए अलग-अलग कम्पाइलर की जरूरत होती है।
कोड छोटा और सरल (Short & Simple Code): एक छोटे से code लाइन में बहुत बड़ा काम करवाया जा सकता है। जैसे c = a + b लिखने भर से दो numbers जोड़े जा सकते हैं।
डीबग करना आसान (Easier to Debug): इसमें गलतियाँ (errors) ढूंढना और सुधारना相对 आसान होता है।
Python
Java
C++
JavaScript
C#
PHP
Ruby
एक High-Level Language को कंप्यूटर सीधे नहीं समझ सकता। कंप्यूटर सिर्फ 0 और 1 (बाइनरी कोड) की भाषा समझता है। इसीलिए कम्पाइलर की जरूरत पड़ती है।
कम्पाइलर का काम होता है High-Level Language में लिखे गए कोड को पूरा का पूरा पढ़कर उसे कंप्यूटर की बाइनरी भाषा (मशीनी कोड) में अनुवाद (Translate) करना। तब जाकर कंप्यूटर उस program को चला पाता है।
सरल शब्दों में: प्रोग्रामर → High-Level Language में कोड लिखता है → कम्पाइलर → उसे मशीनी कोड में बदलता है → कंप्यूटर → प्रोग्राम चलता है।
Low-Level Language (LLL) क्या है?
एक Low-Level Language (LLL) या निम्न-स्तरीय भाषा वह भाषा है जो सीधे कंप्यूटर के हार्डवेयर (विशेष रूप से CPU) से संवाद करती है। यह मशीन के बहुत करीब होती है और इंसानों के लिए समझने में कठिन होती है।
उदाहरण के लिए: जबकि High-Level Language में आप लिखते हैं a = 5 + 3, Low-Level Language में यही काम करने के लिए आपको multiple complex instructions लिखनी पड़ सकती हैं।
मशीनी भाषा (Machine Language - 1st Generation)
यह 0s और 1s (बाइनरी कोड) में होती है
CPU इसे सीधे समझता और execute करता है
Example: 10110000 01100101
असेम्बली भाषा (Assembly Language - 2nd Generation)
यह मशीनी भाषा से थोड़ी आसान होती है
इसमें Mnemonics (संक्षिप्त कोड) का use होता है
Example: MOV AL, 61h
मशीन निर्भर (Machine Dependent)
अलग-अलग processors के लिए अलग assembly code
Intel processor के लिए लिखा code ARM processor पर नहीं चलेगा
हार्डवेयर तक सीधी पहुंच
Memory, registers और hardware components को directly access कर सकते हैं
उच्च performance
Direct hardware access के कारण programs तेज चलते हैं
कोई translation overhead नहीं होता
समझने में कठिन
केवल 0s और 1s या cryptic codes
Debugging और maintenance मुश्किल
ऑपरेटिंग सिस्टम बनाने में
डिवाइस ड्राइवर्स लिखने में
एम्बेडेड सिस्टम programming में
रियल-टाइम सिस्टम में
फर्मवेयर विकास में
High-Level Language (उच्च-स्तरीय भाषा):
यह वह भाषा है जो इंसानों के लिए बनाई गई है। इसे पढ़ना, लिखना और समझना आसान होता है क्योंकि यह English के शब्दों और गणित के चिन्हों से मिलकर बनी होती है। जैसे Python, Java, C++ जैसी भाषाएँ। इनमें लिखा कोड मशीन से स्वतंत्र होता है, यानी एक ही कोड को अलग-अलग कंप्यूटरों पर चलाया जा सकता है। इनमें programming करना तो आसान होता है लेकिन ये थोड़ी धीमी होती हैं क्योंकि इन्हें चलाने से पहले कम्पाइलर या इंटरप्रेटर की मदद से मशीनी भाषा में बदलना पड़ता है।
Low-Level Language (निम्न-स्तरीय भाषा):
यह वह भाषा है जो सीधे कंप्यूटर के हार्डवेयर से बात करती है। इसे इंसानों के लिए समझना बहुत मुश्किल होता है क्योंकि यह बाइनरी कोड (0 और 1) या Assembly जैसी संक्षिप्त कोड में होती है। यह मशीन पर निर्भर होती है, यानी अलग-अलग प्रोसेसर के लिए अलग कोड लिखना पड़ता है। इसमें लिखे प्रोग्राम बहुत तेज चलते हैं क्योंकि उन्हें किसी translation की जरूरत नहीं होती, लेकिन इन्हें लिखना और डीबग करना बहुत कठिन होता है। इसका इस्तेमाल ज्यादातर ऑपरेटिंग सिस्टम, डिवाइस ड्राइवर या फर्मवेयर बनाने में होता है।
Read Full Blog...डाटाबेस सूचनाओं का एकत्रीकरण और वांछित डाटा अंश को व्यवस्थित करने की प्रक्रिया के डाटाबेस कहा जाता है। डाटाबेस को आप इलेक्ट्रॉनिक फाइलिंग प्रणाली मान सकते हैं।
डाटाबेस मैनेजमेंट सिस्टेम (DBMS) कम्प्यूटर प्रोग्रामों या सॉफ्टवेयर का एकत्रीकरण है, जो संचयन परिवर्तन और डाटाबेस से सूचना प्राप्त करने की अनुमति देता है। अनेक प्रकार के
DBMS उपलब्ध हैं. उनका विस्तार छोटी प्रणालियाँ जो पर्सनल कम्प्यूटर पर काम करते हैं, से लेकर बडी प्रणालियों जो मेइनफ्रेग्स पर काम करते हैं, तक है। एक्सेस (ACCESS), फॉक्सप्रो (FoxPro), और डीबेस (dBase) इसके उदाहरण हैं।
रिलेशनल डाटाबेस, डाटा मदों का एकत्रीकरण और उनका औपचारिक निर्धारित टेबलों के सेट के रूप में संगठित करना है, जिसमें से डाटा को प्राप्त किया जा सकता है या डाटाबेस टेबलों को पुनःसंगठित किये बिना उनका पुनःएकत्री करण किया जा सकता है।
रिलेशनल डाटाबेस सभी डाटाओं को टेबल्स में संचित करता है। डाटा टेबल पंक्तियों औरस्तम्भों का समूह है। यह अत्यन्त महत्वपूर्ण है, क्योंकि इसके घटकों को छाँटने का पूर्व निर्धारित क्रम नहीं है। प्रत्येक पंक्ति, स्तम्भों का समूह है जिसमें केवल एक मूल्य होता है। एक ही टेबल के सभी पंक्तियों में एक ही समूह के स्तम्भ होते है।
रिलेशनल डाटाबेस सिस्टेम (RDBMS), डाटाबेस मैनेजमेंट सिस्टेम (DBMS), का एक प्रकार है जो डाटा को संबंधित टेबलों के रूप में संचित करता है। रिलेशनल डाटाबेस सशक्त हैं क्योंकि उनसे डाटा किस प्रकार संबंधित है
Read Full Blog...भाषा एक संचार साधन है। साधन है। 'कम्प्यूटर के साथ संचार करने के लिए प्रत्येक भाषा चिहनों, वर्षों, शब्दों (मुख्य शब्द) और नियमों (वाक्य संरचना) से निहित होती है। कम्प्यूटर भाषाओं का उपयोग, सभी अनुप्रयोग सॉफ्टवेयर पैकेज, संकलक, प्रचालन प्रणालियों को बनाने में किया जाता है। हम. कम्प्यूटर भाषाओं को तीन स्तरों में वर्गीकृत कर सकते हैं: वे निम्न प्रकार है:
1. मशीनी भाषा
2. निम्नस्तरीय भाषा या असेम्ब्ली भाषा
3. उच्च स्तरीय भाषा
कम्प्यूटर कंवल दो अंकों का उपयोग कर लिखे गये प्रोग्राम का निष्पादन कर सकता है। इस प्रकार के प्रोग्राम को मशीनी भाषा प्रोग्राम कहा जाता है। क्योंकि इन प्रोग्रामों में मात्र '0' और 1' का ही प्रोग्राम किया जाता है अतः जटिल समस्याओं के हल के लिए प्रोग्राम बनाना कवित है। इसके अतिरिक्त एक व्यक्ति द्वारा लिखा गया मशीनी भाषा प्रोग्राम दूसरे व्यक्ति के लिए समझने में कठिन होती है। वस्तुत, कम्प्यूटर के उपयोगकर्ता मशीन का उपयोग कर प्रोग्राम नहीं लिखते। एक मशीन के लिए लिखे गये प्रोग्राम का दूसरे प्रकार के कम्प्यूटर पर प्रयोग नहीं किया जा सकता अर्थात् प्रोग्राम मशीन आधारित होते हैं।
उच्च स्तरीय भाषाएँ मानवी भाषाओं के करीब होती है, तथा निम्न स्तरीय भाषाएँ हार्डवेयर करीब होती है।
असेम्ब्ली भाषा में, समस्या का हल करने के लिए प्रोग्राम तैयार करने में निमोनिय (Mnemonic) कोडों का उपयोग किया जाता है। नीचे दर्शाया गया प्रोग्राम असेम्ब्ली भाष प्रोग्राम है
A पढ़ें। A का मूल्य पढ़ेगा
B जोडे। A के साथ B का मूल्य जोडेग
हाल्ट HALT। निष्पादन रोकेगा
FORTRAN (Formula Translation), BASIC (Beginner's All Symbolic Instruction Code), COBOL (Common Business OrienteLanguage), हाल ही में विकसित प्रोग्रामिंग भाषाएँ जैसे विजुअल फॉक्स प्रो. विजुअल बेशिक जोड़ने के लिए निम्नलिखित बेसिक भाषा प्रोग्राम लिखा गया है। (VB), विजुअल C++ (VC++) आदि सॉफ्टवेयर डेवलपरों में लोकप्रिय है।
अनुवाद प्रोग्राम (Translation Programs) कहलाते हैं। इन अनुवाद प्रोग्रामों का उपयोग कर, कम्प्यूटर द्वारा पढ़े जाने योग्य प्रोग्रामों को अन्तरित किया जाता है। संकलक और दुभाषियों का उपयोग उपयोगकर्ता प्रोग्राम को मशीनी भाषा में अनुवाद करने के लिए किया जाता है।
कम्पाइलर उच्च स्तरीय भाषा में लिखे प्रोग्राम को निष्पादन योग्य मशीनी अनुदेशों में अनुदित करता है। स्त्रोत प्रोग्राम की प्रत्येक पंक्ति को इनपुट माना जाता है और फिर उसे सुलभबनाया जाता है। फिर इसे एक या अनेक पंक्तियों वाले मशीनी भाषा उद्देश्य कोडों में परिवर्तित किया जाता है। संकलन के दौरान होने वाली त्रुटियों से आपको अवगत कराया जाता है। यदि संपूर्ण प्रोग्राम त्रुटिहीन हो, तो, संकलन कर उद्देश्य कोड तैयार किया जाता है। भविष्य में उपयोग के लिए इस उद्देश्य कोड़ का मण्डारण किया जाता है।
COBOL एवं C भाषाओं के कम्पाइलर, इसके उदाहरण हैं।
यह भी एक अनुवाद प्रोग्राम है जिसका उपयोग करके उच्चस्तरीय भाषा प्रोग्राम को मशीनी भाषा प्रोग्राम में अनुवाद किया जाता है। किन्तु यह अनुदेशों को पंक्ति-दर-पंक्ति में अनुवाद और निष्पादन करता है।
BASIC भाषा दुभाषित भाषा का श्रेष्ठ उदाहरण है।
यह एक प्रकार का अनुवाद प्रोग्राम है जिसका उपयोग असेम्ब्ली भाषा प्रोग्राम को मशीन भाष प्रोग्राम में अनुवाद करने के लिए किया जाता है।
चतुर्थ पीढ़ी भाषा एक उच्च स्तरीय भाषा है जिसका उपयोग विशेषकर, सशक्त अर्थ और वाक्य रचनावाले अनुप्रयोग प्रोग्रामिंग के लिए किया जाता है। प्रोग्रामरों को अत्यधिक गति से प्रणाली को विकसित करने की सुविधा उपलब्ध कराता है।
4GL. इस तरह प्रक्रियाकृत और प्रतिकृत है कि उपयोगकर्ता, कम्प्यूटर में प्रक्रियाकरण का कार्य कैसे पूरा होता है. इसकी जानकारी के बिना ही अपनी आवश्यकताओं का उल्लेख कर सकें।
यद्यपि प्यूर 4GL में एक कमी यह है कि यह मात्र विकास के छोटे और अति उच्च विशिष्ट क्षेत्र की समस्या का ही हल कर सकता है। स्क्रीन पेइंटर, रिपोर्ट जेनरेटर और उपयोगकर्ता क्वेरी लैंगुएज आदि प्यूर चतुर्थ पीढ़ी भाषाएँ हैं, प्रणाली विकास प्रक्रिया में इनमें से प्रत्येक का सीमित उपयोग होता है।
चतुर्थ पीढ़ी भाषाओं के इस एकीकरण को FOURTH GENERATION ENVIRONMEN (4GE) के नाम से जाना जाता है। प्यूर" चतुर्थ पीढ़ी भाषाओं के संघटक:
एन्ड-यूसर क्वेरी लैंगुएज (उदा. SQL),
स्क्रीन फॉरमाटर (उदा. SQL* फॉर्म में ओरैकल स्क्रीन पेइंटर),
रिपोर्ट जेनरेटर
ओरैकल चतुर्थ पीढ़ी भाषा है।
डाटा डिक्शनरी उपयोगकर्ता डाटाबेस न होकर सिस्टम डाटाबेस है, जिसमें डाटा के विपरी मेटाडाटा निहित होता है।
डाटाबेस मैनेजमेंट सिस्टेम दो प्रकार से कार्य करता है:
यह 4GE के संघटकों का उपयोग कर विकसित प्रणालियों के फाइलों का रखरखाव करता है।
यह वह सॉफ्टवेयर है जो डाटा डिक्शनरी का प्रबंधन करता है।
Read Full Blog...सॉफ्टवेयर शब्द का अर्थ, कम्प्यूटर 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
समस्या, विचारार्थ या समाधान ढूँढ़ने के लिए उठाया गया प्रश्न है।
Read Full Blog...Simple Definition: Computers are electronic machines. They only understand two states: ON (1) and OFF (0). Therefore, all types of data-numbers, text, images, sound-must be converted into a language of 1s and 0s for the computer to process, store, and transmit it. This language is called the binary number system.
सरल परिभाषा: कंप्यूटर बिजली से चलने वाली मशीनें हैं। वे सिर्फ दो ही states समझते हैं: ON (1) और OFF (0)। इसलिए, हर तरह का डेटा-नंबर, टेक्स्ट, तस्वीर, आवाज-को कंप्यूटर के लिए 1 और 0 की भाषा में बदलना पड़ता है। इस भाषा को बाइनरी नंबर सिस्टम कहते हैं।
The smallest unit of this data is called a Bit (Binary Digit). A group of 8 bits is called a Byte. One byte is enough to represent one character (like a letter 'A' or a number '5').
नंबरों को सीधे बाइनरी में बदला जाता है।
पूर्णांक (Integers): सीधे बाइनरी में कन्वर्ट किए जाते हैं।
नकारात्मक संख्याएं (Negative Numbers): इन्हें 2's Complement विधि से दर्शाया जाता है।
उदाहरण:
दशमलव (Decimal) 5 = बाइनरी 101
दशमलव 10 = बाइनरी 1010
हर अक्षर, अंक या प्रतीक (जैसे A, 5, @) का एक विशेष बाइनरी कोड होता है। इसे Encoding कहते हैं। सबसे common encoding standards हैं ASCII और Unicode।
उदाहरण (ASCII Code):
'A' = 01000001
'5' = 00110101
इमेज्स को छोटे-छोटे डॉट्स में बाँटा जाता है, जिन्हें पिक्सेल कहते हैं। हर पिक्सेल का एक रंग होता है, जिसे numbers से दर्शाया जाता है।
RGB Color Model:
हर रंग Red, Green, Blue के combination से बनता है।
हर colour की value 0 से 255 के बीच होती है।
उदाहरण: सफेद = (255, 255, 255), काला = (0, 0, 0)
ऑडियो एक तरंग (wave) होती है। कंप्यूटर इस wave को Sample करता है, यानि हर छोटे समयांतराल पर उसकी ऊँचाई (Amplitude) measure करता है और उसे एक number assign कर देता है। इस process को Analog to Digital Conversion (ADC) कहते हैं।
उदाहरण:
ज्यादा Samples = बेहतर Sound Quality
इन Samples को बाइनरी में store किया जाता है।
Read Full Blog...
Simple Definition: Computer System Architecture refers to the design, structure, and interaction of the major components that make up a computer system. It's like the blueprint of a computer that defines how all the parts work together to execute instructions and process data.
सरल परिभाषा: कंप्यूटर सिस्टम आर्किटेक्चर, कंप्यूटर सिस्टम के प्रमुख घटकों (components) के डिजाइन, संरचना और आपसी तालमेल को कहते हैं। यह एक कंप्यूटर का वह नक्शा (blueprint) होता है जो बताता है कि सारे parts मिलकर instructions को run करने और data को process करने का काम कैसे करते हैं।
The core of this architecture is based on the Von Neumann Architecture, which is the fundamental design upon which almost all modern computers are built.
Its main concept is the Stored-Program Concept, where both the instructions (program) and the data are stored in the same memory (RAM).
Now, let's understand each component in detail.
1. Central Processing Unit (CPU) - प्रोसेसर (दिमाग)
The CPU is the brain of the computer. It performs all the processing and controls the operation of all other components.
Its main parts are:
Control Unit (CU) - नियंत्रण इकाई: This is the manager of the CPU. It fetches instructions from memory, decodes them, and then directs other components (like the ALU) to execute them. It doesn't perform actual calculations but coordinates everything.
Arithmetic Logic Unit (ALU) - अंकगणित तर्क इकाई: This is the calculator of the CPU. It performs all mathematical calculations (like +, -, *, /) and logical operations (like comparisons: >, <, ==).
Registers - रजिस्टर्स: These are extremely fast, small memory locations inside the CPU itself. They are used to hold temporary data and instructions that the CPU is currently working on. Think of them as the CPU's personal notepad.
2. Memory (मेमोरी) - स्मृति
This is where the computer stores data and instructions. It's of two primary types:
Main Memory (Primary Storage) - RAM (रैंडम एक्सेस मेमोरी): This is the computer's short-term memory. It is very fast and volatile (its contents are lost when the power is turned off). It holds the data and programs that are currently in use by the CPU. The more RAM a computer has, the more applications it can run smoothly at the same time.
Cache Memory (कैशे मेमोरी): This is a very small, extremely fast memory located inside or very close to the CPU. It acts as a buffer and holds the most frequently used data from RAM to speed up the CPU's access time.
3. Input/Output (I/O) Devices - इनपुट/आउटपुट उपकरण
These are the components that allow the computer to interact with the outside world.
Input Devices: These bring information into the computer. Examples: Keyboard (कीबोर्ड), Mouse (माउस), Scanner (स्कैनर), Microphone (माइक्रोफोन).
Output Devices: These send information out from the computer. Examples: Monitor (मॉनिटर), Printer (प्रिंटर), Speakers (स्पीकर्स).
4. Storage Unit (संचयन इकाई) - Secondary Storage
This is the computer's long-term memory. It is non-volatile (data is retained even after the power is off). It is used to store data, programs, and the operating system permanently. It is slower than RAM but has much larger capacity. Examples: Hard Disk Drive (HDD - हार्ड डिस्क), Solid State Drive (SSD - एसएसडी), USB Flash Drives (पेनड्राइव).
5. System Bus (सिस्टम बस) - डेटा हाईवे
The bus is a communication system that transfers data and signals between these components. It's like a network of highways inside the computer.
Data Bus (डेटा बस): Carries the actual data being processed.
Address Bus (एड्रेस बस): Carries the location (address) in memory where the data needs to be read from or written to.
Control Bus (कंट्रोल बस): Carries control signals (like read, write) from the Control Unit to other parts.
The process follows a cycle called the Fetch-Decode-Execute Cycle:
Fetch (ले आओ): The CPU's Control Unit fetches the next instruction from the Main Memory (RAM).
Decode (समझो): The Control Unit decodes the instruction to understand what needs to be done (e.g., add two numbers).
Execute (निष्पादित करो): The Control Unit directs the ALU to perform the actual operation (e.g., performs the addition). It might need to fetch data from memory for this.
Store (संग्रहित करो): The result of the operation is then written back to either a register or the main memory.
This cycle repeats millions of times per second, making the computer work.
कंप्यूटर विज्ञान की वह आधारशिला (Foundation) है। यह किसी समस्या के समाधान के लिए स्पष्ट, सीमित और क्रमबद्ध निर्देशों (Clear, Finite & Sequential Instructions) का एक समूह है, जिसे कंप्यूटर या प्रोग्रामर द्वारा किसी विशिष्ट कार्य को पूरा करने के लिए (step-by-step) पालन किया जाता है।
मान लो तुम्हें कोई समस्या (problem) सुलझानी है। जैसे, "घर की मीठी केला की क्रीम (Banana Pudding) बनानी है।"
एल्गोरिदम वह कदम-दर-कदम योजना (step-by-step plan) या विधि है जो तुम समस्या सुलझाने से पहले बनाते हो।
यह कैसे बनता है? तुम सोचते हो कि शुरुआत (input - जैसे दूध, केला, चीनी) से लेकर अंत (output - स्वादिष्ट केला क्रीम) तक पहुँचने के लिए ठीक-ठीक कौन-कौन से कदम (steps) उठाने होंगे। इन सभी कदमों को सही क्रम (order) में लिखा जाता है।
इसे क्या कहते हैं? इस क्रमबद्ध लेखन को ही एल्गोरिदम कहा जाता है।
यह किस तरह का होता है? एल्गोरिदम असल में आम बोलचाल की भाषा (simple language) में लिखा गया प्रोग्राम (program) ही होता है।
बड़ी समस्या हो तो क्या करें? ज़रूरत पड़ने पर बड़े काम को छोटे-छोटे भागों (parts) में बाँट लिया जाता है। फिर हर एक छोटे भाग के लिए अलग एल्गोरिदम बनाया जाता है। आखिर में सभी छोटे एल्गोरिदम को जोड़कर एक बड़ा एल्गोरिदम बना लिया जाता है।
आसान शब्दों में: एल्गोरिदम किसी भी काम को करने का सही तरीका और सही क्रम है। यह एक रास्ता (path) है जो शुरुआत से अंत तक ले जाता है।
उदाहरण: चाय बनाने का एल्गोरिदम
Step 1. बर्तन में पानी डालो।
Step 2.बर्तन को चूल्हे पर रखो।
Step 3. चायपत्ती और चीनी डालो।
Step 4. पानी को उबलने दो।
Step 5. दूध डालो।
Step 6. फिर से उबालो।
Step 7. चाय को छानो।
Step 8. कप में डालो।
यह सारे कदम मिलकर "चाय बनाने का एल्गोरिदम" बन गए।
Examples (Real-World & Programming) :
उदाहरण 1: रियल-लाइफ - एटीएम से पैसे निकालना (Cash Withdrawal)
यह पूरा प्रक्रिया एक एल्गोरिदम है.
शुरू (START) -> एटीएम मशीन में अपना कार्ड डालो।
इनपुट: अपना पिन कोड (PIN code) डालो।
प्रक्रिया: बैंक के सर्वर से पिन कोड जांचो (verify करो)।
इनपुट: "नकद निकासी (Cash Withdrawal)" का विकल्प चुनो और राशि (amount) डालो।
प्रक्रिया: तुम्हारे खाते में पर्याप्त पैसे (sufficient balance) हैं या नहीं, यह जांचो।
प्रक्रिया: अगर पैसे हैं, तो एटीएम मशीन को नकद देने का संकेत (signal) भेजो।
आउटपुट: एटीएम मशीन पैसे निकाले और एक रसीद (receipt) दे।
बंद (STOP)।
उदाहरण 2: रियल-लाइफ - फोनबुक में नाम ढूंढना (Linear Search Algorithm)
शुरू (START) -> फोनबुक खोलो।
इनपुट: एक नाम लो (जैसे, "राहुल")।
प्रक्रिया: पहला पन्ना खोलो। पहला नाम देखो। अगर "राहुल" नहीं है, तो अगला नाम देखो।
प्रक्रिया: ऐसे ही आगे बढ़ते रहो जब तक "राहुल" नहीं मिल जाता या आखिरी पन्ना खत्म नहीं हो जाता।
आउटपुट: अगर नाम मिल गया तो फोन नंबर बता दो (सफलता)। नहीं तो "नाम नहीं मिला" बता दो (असफलता)।
बंद (STOP)।
उदाहरण 3: प्रोग्रामिंग - दो नंबरों में से बड़ा नंबर ढूंढना (Find Max)
स्यूडोकोड (एल्गोरिदम की भाषा):
text
शुरू (START) पहला नंबर लो, उसे 'a' नाम दो। दूसरा नंबर लो, उसे 'b' नाम दो। अगर (a > b) हो तो: छापो "सबसे बड़ा नंबर है: ", a वरना (ELSE): छापो "सबसे बड़ा नंबर है: ", b अगर खत्म (END IF) बंद (STOP)
असल प्रोग्राम (पायथन कोड):
python
a = int(input("पहला नंबर डालो: ")) b = int(input("दूसरा नंबर डालो: ")) अगर a > b: print("सबसे बड़ा नंबर है:", a) वरना: print("सबसे बड़ा नंबर है:", b)
उदाहरण 4: प्रोग्रामिंग - नंबर प्राइम है या नहीं जांचना (Check Prime)
एल्गोरिदम:
शुरू (START) -> एक नंबर n लो।
अगर n १ से छोटा है, तो यह प्राइम नहीं है। बंद (STOP) करो।
२ से लेकर n-१ तक के हर नंबर i से:
अगर n पूरी तरह i से विभाजित हो जाता है (यानी शेषफल ० बचता है), तो यह प्राइम नहीं है। बंद (STOP) करो।
अगर किसी से भी विभाजित नहीं हुआ, तो यह एक प्राइम नंबर है।
बंद (STOP)।
प्रोग्राम (पायथन कोड):
python
n = int(input("एक नंबर डालो: ")) # ० और १ प्राइम नहीं होते अगर n < 2: print(n, "प्राइम नंबर नहीं है।") वरना: है_प्राइम = सच (True) # २ से शुरू करके n/2 तक लूप चलाओ i = 2 जबतक i <= n//2: अगर n % i == 0: है_प्राइम = झूठ (False) break # लूप से बाहर निकलो i += 1 अगर है_प्राइम: print(n, "एक प्राइम नंबर है।") वरना: print(n, "प्राइम नंबर नहीं है।")
उदाहरण 5: एडवांस्ड - लिस्ट को क्रम से लगाना (Sorting Algorithm - Bubble Sort)
एल्गोरिदम:
शुरू (START) -> एक लिस्ट (सूची) लो।
लिस्ट के आखिरी तक जाओ।
लिस्ट के पहले एलिमेंट (अवयव) से शुरू करो। उसे अगले एलिमेंट से तुलना करो (compare करो)।
अगर पहला एलिमेंट बड़ा है, तो दोनों की अदला-बदली कर दो (swap कर do)।
अगले एलिमेंट पर जाओ। यह प्रक्रिया तब तक दोहराओ जब तक लिस्ट का अंत नहीं आ जाता।
यह पूरी प्रक्रिया (कदम २-५) तब तक दोहराओ जब तक पूरी लिस्ट क्रम से न लग जाए।
क्रम से लगी हुई लिस्ट (Sorted list) छापो।
बंद (STOP)।
ओपन-सोर्स (Open-Source) का मतलब है कि उस सॉफ्टवेयर का सोर्स कोड (Source Code) सार्वजनिक रूप से उपलब्ध होता है, जिसे कोई भी देख, संशोधित (Modify) या डिस्ट्रिब्यूट (Distribute) कर सकता है।
फ्री या पेड: ज्यादातर ओपन-सोर्स सॉफ्टवेयर मुफ्त होते हैं (जैसे LibreOffice, Linux), लेकिन कुछ प्रीमियम फीचर्स के साथ भी आते हैं।
सोर्स कोड एक्सेस: डेवलपर्स इसे अपनी जरूरत के हिसाब से बदल सकते हैं।
कम्युनिटी द्वारा सपोर्ट: इसे वॉलंटियर्स और ऑर्गेनाइजेशन्स मिलकर डेवलप करते हैं।
ट्रांसपेरेंसी: कोई भी यूजर चेक कर सकता है कि सॉफ्टवेयर में कोई हैकिंग/स्पाइवेयर टूल तो नहीं छिपा है।
क्या ओपन-सोर्स (Open-Source) आइटम को बेचा जा सकता है? जी हाँ, लेकिन कुछ शर्तों के साथ!
ओपन-सोर्स सॉफ्टवेयर/प्रोडक्ट को बेचना संभव है, लेकिन यह उसके लाइसेंस (जैसे GPL, MIT, Apache आदि) पर निर्भर करता है। आइए विस्तार से समझते हैं:
मूल सोर्स कोड फ्री रहता है: आप ओपन-सोर्स सॉफ्टवेयर को बेच सकते हैं, लेकिन खरीदार को यह अधिकार होगा कि वह उसका सोर्स कोड मुफ्त में प्राप्त कर सके और उसे मॉडिफाई कर सके।
एड-ऑन सर्विसेज: अक्सर डेवलपर्स सपोर्ट, कस्टमाइजेशन, या हार्डवेयर के साथ सॉफ्टवेयर बेचकर पैसे कमाते हैं। उदाहरण:
कोई Linux OS को फ्री में डाउनलोड कर सकता है, लेकिन Red Hat जैसी कंपनियाँ उसके प्रोफेशनल सपोर्ट के लिए चार्ज करती हैं।
WordPress (ओपन-सोर्स) का इस्तेमाल करके वेबसाइट डिज़ाइन करने वाली एजेंसियाँ फीस लेती हैं।
लाइसेंस | क्या बेच सकते हैं? | शर्तें |
---|---|---|
GPL | हाँ | खरीदार को सोर्स कोड देना होगा, और वह भी इसे फिर से बेच/बाँट सकता है। |
MIT | हाँ | सिर्फ क्रेडिट (Credit) देना जरूरी है, बाकी कोई पाबंदी नहीं। |
Apache | हाँ | पेटेंट राइट्स का ध्यान रखना होता है। |
Creative Commons | हाँ/नहीं | यह डिपेंड करता है कि लाइसेंस कौन-सा है (CC-BY, CC-NC आदि)। |
सर्विसेज: इंस्टॉलेशन, ट्रेनिंग, या कस्टम डेवलपमेंट चार्ज करें।
प्रीमियम फीचर्स: फ्री वर्जन के साथ एडवांस्ड फीचर्स को पेड बनाएँ (जैसे GitHub Pro)।
डोनेशन/सब्सक्रिप्शन: यूजर्स से सपोर्ट के लिए पैसे लें (जैसे Blender ऐसा करता है)।
हार्डवेयर के साथ: Raspberry Pi जैसे डिवाइस ओपन-सोर्स सॉफ्टवेयर के साथ बेचे जाते हैं।
लाइसेंस की जाँच करें: कुछ लाइसेंस (जैसे AGPL) आपको सोर्स कोड सार्वजनिक करने को कह सकते हैं।
कॉपीराइट: ओपन-सोर्स का मतलब "कॉपीराइट-फ्री" नहीं है। अगर आप किसी के कोड का इस्तेमाल कर रहे हैं, तो उसके नियम मानने होंगे।
Red Hat → Linux की एंटरप्राइज सर्विसेज बेचती है।
Canonical → Ubuntu OS का सपोर्ट देकर पैसे कमाती है।
WordPress.com → होस्टिंग और प्रीमियम थीम्स बेचता है (जबकि WordPress.org फ्री है)।
I want to Hire a Professional..
--icon----> --icon---->