Competitive exams में कंप्यूटर विज्ञान (Computer Science) का स्तर अब बहुत एडवांस हो चुका है। UPSSSC Computer Operator, UPPSC, और SSC जैसी परीक्षाओं में प्रोग्रामिंग भाषाओं (Programming Languages) की कार्यप्रणाली और उनके पैराडाइम (Paradigms) से सीधे और ट्रिकी प्रश्न पूछे जा रहे हैं। यदि आप प्रोसीजरल (Procedural) और ऑब्जेक्ट-ओरिएंटेड (Object-Oriented) भाषाओं के बीच अंतर स्पष्ट नहीं कर पाते हैं, तो यह पोस्ट आपके लिए है। आज हम इस महत्वपूर्ण PYQ का 360 डिग्री एनालिसिस (360-Degree Analysis) करेंगे ताकि भविष्य में प्रोग्रामिंग से जुड़ा कोई भी प्रश्न आपका सिलेक्शन न रोक सके।
आज का प्रश्न (Today's Question)
प्रश्न (Question): निम्नलिखित में से क्या एक प्रयोजन उन्मुख या प्रयोजन आधारित क्रमादेशन (प्रोग्रामिंग) भाषा नहीं है? (Which one of the following is NOT an Object Oriented or Object Based Programming Language?)
- A. पर्ल (Perl)
- B. रुबी (Ruby)
- C. पाइथन (Python)
- D. सी (C)
प्रश्न कुंडली (Question Analysis)
कठिनाई (Difficulty): मध्यम से कठिन (Moderate to Difficult - शुद्ध हिंदी शब्दावली के कारण)
मुख्य अध्याय (Core Chapter): प्रोग्रामिंग भाषाएं (Programming Languages)
उप-विषय (Sub-topic): प्रोग्रामिंग पैराडाइम (Programming Paradigms - OOPs vs POP)
प्रश्न की प्रकृति (Question Nature): वैचारिक और तथ्यात्मक (Conceptual & Factual)
आदर्श समय (Ideal Time): 15-20 सेकंड (Seconds)
औसत सफलता दर (Avg. Success Rate): 40-45% (कई छात्र शुद्ध हिंदी 'प्रयोजन उन्मुख' शब्द देखकर घबरा जाते हैं)
परीक्षा स्रोत (Exam Source): UPSSSC Computer Operator (10 Jan 2020)
सही उत्तर और विस्तृत विवरण (Answer & Deep Explanation)
✅ सही उत्तर है (Correct Answer): D. सी (C)
विस्तृत व्याख्या (Deep Explanation):
'C' भाषा एक शुद्ध प्रक्रियात्मक प्रोग्रामिंग भाषा (Procedural Programming Language) है। इसका विकास 1972 में डेनिस रिची (Dennis Ritchie) द्वारा बेल लैब्स (Bell Labs) में किया गया था। यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (Object-Oriented Programming - OOP) के मूल सिद्धांतों जैसे कि इनकैप्सुलेशन (Encapsulation), इनहेरिटेंस (Inheritance), पॉलीमॉरफिज्म (Polymorphism) और डेटा एब्स्ट्रैक्शन (Data Abstraction) का समर्थन नहीं करती है।
C भाषा प्रोग्राम को छोटे भागों में विभाजित करती है जिन्हें फ़ंक्शन (Functions) कहा जाता है और यह डेटा (Data) को सुरक्षित करने के बजाय प्रक्रियाओं (Procedures) के अनुक्रम (Sequence) पर अधिक ध्यान केंद्रित करती है। इसमें क्लास (Class) और ऑब्जेक्ट (Object) बनाने की कोई सुविधा नहीं होती है।
एग्जामिनर का ट्रैप (Examiner's Trap / Nerve Keyword): इस प्रश्न में सबसे बड़ा ट्रैप प्रश्न की भाषा है। यूपीएसएसएससी (UPSSSC) ने 'Object Oriented' के लिए विशुद्ध हिंदी शब्द "प्रयोजन उन्मुख" या "प्रयोजन आधारित" का उपयोग किया है। कई एस्पिरेंट्स इस हिंदी शब्दावली (Terminology) को देखकर ही प्रश्न छोड़ देते हैं। दूसरा ट्रैप यह है कि छात्र अक्सर 'C' और 'C++' को एक मान लेते हैं। ध्यान दें, C++ एक ऑब्जेक्ट-ओरिएंटेड (Object-Oriented) भाषा है, जबकि C पूरी तरह से प्रोसीजरल (Procedural) है।
प्रोग्रामिंग पैराडाइम का विज़ुअल क्लासिफिकेशन (Visual Classification of Programming Paradigms):
नीचे दिए गए फ्लोचार्ट से कॉन्सेप्ट को हमेशा के लिए दिमाग में छाप लें:
सभी विकल्पों का 360° एनालिसिस (360° Analysis of Options)
A. पर्ल (Perl)
- यह क्या है (What does it mean?): पर्ल (Perl) एक उच्च-स्तरीय (High-level), सामान्य-उद्देश्य (General-purpose), इंटरप्रिटेड (Interpreted) और गतिशील प्रोग्रामिंग भाषा (Dynamic Programming Language) है। इसे 1987 में लैरी वॉल (Larry Wall) द्वारा मूल रूप से टेक्स्ट प्रोसेसिंग (Text Processing) और रिपोर्ट जनरेशन के लिए विकसित किया गया था।
- यह गलत क्यों है? (Why is it wrong?): प्रश्न में पूछा गया है कि कौन सी भाषा प्रयोजन उन्मुख (Object-Oriented) नहीं है। जबकि पर्ल (विशेष रूप से Perl 5 के बाद से) प्रक्रियात्मक (Procedural) के साथ-साथ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (Object-Oriented Programming) का पूरी तरह से समर्थन करती है।
- एक्जाम हॉल में एलिमिनेट कैसे करें (How to Eliminate It): पर्ल को अक्सर "सिस्टम एडमिनिस्ट्रेशन का स्विस आर्मी चाकू" (Swiss Army chainsaw of scripting languages) कहा जाता है। चूंकि यह एक बहुत ही शक्तिशाली और व्यापक रूप से उपयोग की जाने वाली स्क्रिप्टिंग भाषा है, इसका आधुनिक संस्करण ओओपी (OOP) कॉन्सेप्ट्स के बिना अधूरा है।
- यह उत्तर कब सही होता? (What question would make this the right answer?): यदि प्रश्न होता: "किस प्रोग्रामिंग भाषा को मूल रूप से यूनिक्स (UNIX) सिस्टम पर टेक्स्ट हेरफेर (Text Manipulation) और रेगुलर एक्सप्रेशन (Regular Expression - Regex) के लिए डिज़ाइन किया गया था?" तो उत्तर पर्ल (Perl) होता।
- डीप फैक्ट (Deep Fact): पर्ल में अन्य भाषाओं (जैसे C++ या Java) की तरह अंतर्निहित
classकीवर्ड नहीं होता है। इसके बजाय, यह एक सामान्य डेटा संरचना (Data Structure) को ऑब्जेक्ट में बदलने के लिए एक विशेष फ़ंक्शन का उपयोग करता है जिसे "ब्लेस" (Bless) कहा जाता है। यह एक संदर्भ (Reference) को एक विशिष्ट पैकेज (Package) से जोड़कर उसे एक ऑब्जेक्ट (Object) बना देता है।
B. रुबी (Ruby)
- यह क्या है (What does it mean?): रुबी (Ruby) एक शुद्ध ऑब्जेक्ट-ओरिएंटेड (Pure Object-Oriented), इंटरप्रिटेड स्क्रिप्टिंग भाषा (Interpreted Scripting Language) है, जिसे 1995 में जापान के युकहिरो "मात्ज़" मात्सुमोतो (Yukihiro "Matz" Matsumoto) द्वारा विकसित किया गया था।
- यह गलत क्यों है? (Why is it wrong?): क्योंकि रुबी दुनिया की सबसे 'शुद्ध' (Purest) ओओपी (OOP) भाषाओं में से एक है। इसलिए यह विकल्प सीधे तौर पर प्रश्न की मांग (NOT OOP) का खंडन करता है।
- एक्जाम हॉल में एलिमिनेट कैसे करें (How to Eliminate It): यदि आपने वेब डेवलपमेंट फ्रेमवर्क 'रुबी ऑन रेल्स' (Ruby on Rails) का नाम सुना है, तो आपको पता होना चाहिए कि यह पूरी तरह से ऑब्जेक्ट्स और क्लासेज (Objects and Classes) पर आधारित है।
- यह उत्तर कब सही होता? (What question would make this the right answer?): यदि प्रश्न होता: "निम्नलिखित में से किस भाषा में प्रत्येक डेटा प्रकार (यहाँ तक कि साधारण संख्याएं या Integers भी) को सख्ती से एक ऑब्जेक्ट (Object) के रूप में माना जाता है?"
- डीप फैक्ट (Deep Fact): रुबी मल्टीपल इनहेरिटेंस (Multiple Inheritance) का समर्थन नहीं करती है। इसके बजाय, यह इस सीमा को दूर करने के लिए मॉड्यूल्स (Modules) के माध्यम से "मिक्सिन्स" (Mixins) का उपयोग करती है। इसके अतिरिक्त, रुबी "डॅक टाइपिंग" (Duck Typing) के सिद्धांत पर काम करती है, जिसका अर्थ है कि रनटाइम (Runtime) पर किसी ऑब्जेक्ट की उपयोगिता उसके प्रकार (Class) से नहीं, बल्कि उसमें मौजूद विधियों (Methods) और गुणों (Properties) से तय होती है ("If it walks like a duck and quacks like a duck, it must be a duck")।
C. पाइथन (Python)
- यह क्या है (What does it mean?): पाइथन (Python) एक उच्च-स्तरीय (High-level), सामान्य-उद्देश्य (General-purpose) प्रोग्रामिंग भाषा है जिसे गुइडो वैन रोसुम (Guido van Rossum) द्वारा 1991 में जारी किया गया था। यह कोड पठनीयता (Code Readability) पर जोर देती है।
- यह गलत क्यों है? (Why is it wrong?): पाइथन एक मल्टी-पैराडाइम (Multi-paradigm) भाषा है जो प्रक्रियात्मक (Procedural), कार्यात्मक (Functional) और ऑब्जेक्ट-ओरिएंटेड (Object-Oriented) तीनों शैलियों का उत्कृष्ट रूप से समर्थन करती है। चूँकि इसमें क्लास (Class) और ऑब्जेक्ट (Object) की पूरी व्यवस्था है, इसलिए यह इस प्रश्न का उत्तर नहीं हो सकती।
- एक्जाम हॉल में एलिमिनेट कैसे करें (How to Eliminate It): आर्टिफिशियल इंटेलिजेंस (Artificial Intelligence) और मशीन लर्निंग (Machine Learning) की सबसे लोकप्रिय भाषा होने के नाते, यह स्पष्ट है कि पाइथन जटिल डेटा संरचनाओं को संभालने के लिए ओओपी (OOP) का उपयोग करती है।
- यह उत्तर कब सही होता? (What question would make this the right answer?): यदि प्रश्न होता: "कौन सी प्रोग्रामिंग भाषा कोड ब्लॉक्स (Code Blocks) को परिभाषित करने के लिए कर्ली ब्रेसेस
{}के बजाय अनिवार्य इंडेंटेशन (Indentation / Whitespace) का उपयोग करती है?" - डीप फैक्ट (Deep Fact): पाइथन में डेटा छुपाने (Data Hiding/Encapsulation) के लिए C++ या Java की तरह सख्त एक्सेस मॉडिफायर (Access Modifiers - Public, Private, Protected) नहीं होते हैं। इसके बजाय, यह "नेम मैंगलिंग" (Name Mangling) तकनीक का उपयोग करती है। यदि आप किसी वेरिएबल के नाम के आगे डबल अंडरस्कोर (Double Underscore
__) लगाते हैं, तो पाइथन इंटरप्रेटर (Interpreter) आंतरिक रूप से उस वेरिएबल का नाम बदल देता है ताकि उसे क्लास के बाहर गलती से एक्सेस न किया जा सके।
प्रश्न का मुख्य विषय (Core Topic): प्रोग्रामिंग प्रतिमान (Programming Paradigms) - मास्टर रिवीजन
कंप्यूटर विज्ञान (Computer Science) में, किसी समस्या को हल करने या किसी कार्य को करने के दृष्टिकोण (Approach) या शैली (Style) को प्रोग्रामिंग प्रतिमान (Programming Paradigm) कहा जाता है। परीक्षा के दृष्टिकोण से, दो सबसे महत्वपूर्ण प्रतिमान हैं: प्रक्रियात्मक प्रोग्रामिंग (Procedural Programming - POP) और प्रयोजन उन्मुख प्रोग्रामिंग (Object-Oriented Programming - OOP)।
1. प्रक्रियात्मक प्रोग्रामिंग (Procedural Programming - POP)
यह एक ऐसा प्रतिमान (Paradigm) है जो प्रोग्राम को छोटे-छोटे कार्यों (Tasks) या उप-प्रोग्रामों (Sub-programs) में विभाजित करता है, जिन्हें फ़ंक्शन (Functions) कहा जाता है।
- कार्यप्रणाली (Working Mechanism): यह डेटा (Data) से ज्यादा प्रक्रियाओं (Procedures) या निर्देशों के क्रम (Sequence of Instructions) पर ध्यान केंद्रित करता है।
- कमी (Drawback): चूँकि इसमें डेटा पूरे प्रोग्राम में स्वतंत्र रूप से घूमता (Moves freely) है, इसलिए यह सुरक्षित नहीं होता है। जब प्रोग्राम का आकार बढ़ता है, तो उसे प्रबंधित करना (Manage) बेहद कठिन हो जाता है।
2. प्रयोजन उन्मुख प्रोग्रामिंग (Object-Oriented Programming - OOP)
यह एक आधुनिक और सुरक्षित प्रतिमान (Paradigm) है जो प्रोग्राम को ऑब्जेक्ट्स (Objects) के इर्द-गिर्द डिज़ाइन करता है। ऑब्जेक्ट्स वास्तविक दुनिया की संस्थाओं (Real-world Entities) का प्रतिनिधित्व करते हैं।
- मूल स्तंभ (Four Pillars of OOPs):
- इनकैप्सुलेशन (Encapsulation): डेटा (Data) और उन पर काम करने वाले फ़ंक्शंस (Functions) को एक ही इकाई (जैसे Class) में लपेटना या बांधना।
- एब्स्ट्रैक्शन (Abstraction): जटिल पृष्ठभूमि विवरण (Background Details) को छिपाकर केवल आवश्यक जानकारी (Essential Features) उपयोगकर्ता (User) को दिखाना।
- इनहेरिटेंस (Inheritance): एक क्लास (Class) द्वारा दूसरी क्लास के गुणों (Properties) और व्यवहार (Behavior) को प्राप्त करने की क्षमता, जिससे कोड का पुन: उपयोग (Code Reusability) बढ़ता है।
- पॉलीमॉरफिज्म (Polymorphism): एक ही नाम के फ़ंक्शन या ऑपरेटर (Operator) का अलग-अलग स्थितियों में अलग-अलग तरीके से व्यवहार करना (जैसे - Method Overloading और Method Overriding)।
POP बनाम OOP: विस्तृत मास्टर तुलना तालिका (Master Comparison Table)
यहाँ प्रक्रियात्मक प्रोग्रामिंग (POP) और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) के बीच एक विस्तृत, उन्नत स्तर का तुलनात्मक विश्लेषण (Advanced Comparative Analysis) दिया गया है:
| तुलना का आधार (Basis of Comparison) | प्रक्रियात्मक प्रोग्रामिंग (Procedural Programming - POP) | प्रयोजन उन्मुख प्रोग्रामिंग (Object-Oriented Programming - OOP) |
|---|---|---|
| मूल दृष्टिकोण (Basic Approach) | यह एक टॉप-डाउन दृष्टिकोण (Top-Down Approach) का अनुसरण करता है (मुख्य प्रोग्राम से छोटे फ़ंक्शंस की ओर)। | यह एक बॉटम-अप दृष्टिकोण (Bottom-Up Approach) का अनुसरण करता है (छोटे ऑब्जेक्ट्स से मुख्य प्रोग्राम की ओर)। |
| विभाजन की इकाई (Unit of Division) | इसमें पूरे प्रोग्राम को छोटे भागों में विभाजित किया जाता है जिन्हें फ़ंक्शन (Functions) कहते हैं। | इसमें पूरे प्रोग्राम को ऑब्जेक्ट्स (Objects) और क्लासेज (Classes) में विभाजित किया जाता है। |
| डेटा सुरक्षा (Data Security) | डेटा छिपाने (Data Hiding) का कोई उचित तरीका नहीं है, इसलिए डेटा कम सुरक्षित होता है। | यह इनकैप्सुलेशन (Encapsulation) के माध्यम से डेटा छिपाने (Data Hiding) की सुविधा देता है, जिससे डेटा अत्यधिक सुरक्षित रहता है। |
| पहुँच संशोधक (Access Modifiers) | POP में Public, Private, या Protected जैसे कोई एक्सेस मॉडिफायर (Access Modifiers) नहीं होते हैं। | OOP में डेटा तक पहुँच को नियंत्रित करने के लिए Public, Private, और Protected एक्सेस मॉडिफायर होते हैं। |
| डेटा की गतिशीलता (Data Movement) | डेटा फ़ंक्शंस के बीच प्रोग्राम में स्वतंत्र रूप से (Freely) घूम सकता है। | डेटा ऑब्जेक्ट्स (Objects) के भीतर संलग्न (Enclosed) रहता है और केवल सदस्य फ़ंक्शंस (Member Functions) के माध्यम से ही संचार (Communicate) कर सकता है। |
| विरासत (Inheritance) | इसमें इनहेरिटेंस (Inheritance) या कोड के पुन: उपयोग (Code Reusability) की कोई अवधारणा (Concept) नहीं है। | यह इनहेरिटेंस (Inheritance) का समर्थन करता है, जिससे मौजूदा कोड का पुन: उपयोग (Reuse) आसानी से किया जा सकता है। |
| अतिभारण (Overloading) | यह ऑपरेटर ओवरलोडिंग (Operator Overloading) या फ़ंक्शन ओवरलोडिंग (Function Overloading) का समर्थन नहीं करता है। | यह पॉलीमॉरफिज्म (Polymorphism) के तहत फ़ंक्शन और ऑपरेटर ओवरलोडिंग दोनों का पूर्ण समर्थन करता है। |
| जटिलता और उपयोग (Complexity & Usage) | यह छोटे और सरल प्रोग्राम (Small and Simple Programs) लिखने के लिए उपयुक्त है। | यह अत्यधिक जटिल (Highly Complex) और बड़े सॉफ्टवेयर सिस्टम (Large Software Systems) को विकसित करने के लिए आदर्श है। |
| प्रमुख उदाहरण (Key Examples) | C, Pascal, Fortran, BASIC, COBOL। | C++, Java, Python, Ruby, C#, PHP। |
देशी ट्रिक्स (Deshi Tricks) – प्रोग्रामिंग प्रतिमान (Programming Paradigms) को याद रखने का जुगाड़!
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (Object-Oriented Programming - OOPs) के चार मुख्य स्तंभों (Four Pillars) से परीक्षाओं में अनगिनत बार प्रश्न पूछे गए हैं। इन्हें भूलने का रोग अब इस ट्रिक (Trick) से हमेशा के लिए खत्म करें:
ट्रिक (Trick): Ek Aashiq Ishq में Pagal है!
डिकोड (Decode):
- Ek ➔ Encapsulation (इनकैप्सुलेशन): अपनी भावनाओं को दिल में छुपा कर रखना (डेटा और फंक्शन को एक कैप्सूल या Class में बांधना)।
- Aashiq ➔ Abstraction (एब्स्ट्रैक्शन): दुनिया को सिर्फ मुस्कुराता चेहरा दिखाना, अंदर का दर्द छुपा लेना (केवल आवश्यक जानकारी दिखाना, बैकग्राउंड डिटेल्स छुपाना)।
- Ishq ➔ Inheritance (इनहेरिटेंस): प्यार में एक-दूसरे की आदतें अपना लेना (एक क्लास (Class) द्वारा दूसरी क्लास के गुणों को प्राप्त करना)।
- Pagal ➔ Polymorphism (पॉलीमॉरफिज्म): समय-समय पर मूड बदलना या अलग-अलग रूप दिखाना (एक ही फंक्शन (Function) का अलग-अलग स्थितियों में अलग व्यवहार)।
अब अगर कोई पूछे कि कौन सी भाषा OOPs है, तो बस याद रखें:
ट्रिक (Trick): रूबी (Ruby) ने पायल (Python) से कहा, जा (Java) सी++ (C++) सीख आ!
प्रोग्रामिंग भाषाएं (Programming Languages) करंट अफेयर्स (Current Affairs Linkage)
- TIOBE इंडेक्स (TIOBE Index) का दबदबा: हालिया TIOBE इंडेक्स (TIOBE Index 2023-24) के अनुसार, कृत्रिम बुद्धिमत्ता (Artificial Intelligence - AI) और मशीन लर्निंग (Machine Learning - ML) में व्यापक उपयोग के कारण पाइथन (Python) लगातार दुनिया की नंबर 1 प्रोग्रामिंग भाषा (Programming Language) बनी हुई है। C और C++ क्रमशः दूसरे और तीसरे स्थान पर हैं।
- भारत का अपना AI (India's own AI): हाल ही में ओला (Ola) के संस्थापक भाविश अग्रवाल ने 'कृत्रिम' (Krutrim) नाम से भारत का अपना स्वदेशी एआई (Indigenous AI) मॉडल लॉन्च किया है। ऐसे विशालकाय भाषा मॉडल (Large Language Models - LLMs) को प्रशिक्षित (Train) करने के लिए भी पाइथन (Python) जैसी प्रयोजन उन्मुख (Object-Oriented) भाषाओं का ही सहारा लिया जाता है।
सुपरफास्ट वन-लाइनर फैक्ट्स (Programming Paradigms One-Liner Facts) - खुद को परखें
- पहली शुद्ध ओओपी भाषा (First Pure OOP Language): 1970 के दशक में एलन के (Alan Kay) द्वारा विकसित स्मालटॉक (Smalltalk) को इतिहास की पहली 'विशुद्ध' प्रयोजन उन्मुख प्रोग्रामिंग (Object-Oriented Programming) भाषा माना जाता है, जहाँ सब कुछ एक ऑब्जेक्ट है। [Asked in UPPSC RO/ARO Mains 2016]
- विरासत की जटिलता (Inheritance Complexity):डायमंड प्रॉब्लम (Diamond Problem) बहु-विरासत (Multiple Inheritance) में उत्पन्न होने वाली एक कुख्यात अस्पष्टता (Ambiguity) है, जिसे जावा (Java) में इंटरफ़ेस (Interfaces) का उपयोग करके हल किया जाता है। [Asked in UPSSSC Computer Operator 2019]
- प्लेटफ़ॉर्म स्वतंत्रता (Platform Independence): जावा (Java) के स्रोत कोड को संकलित (Compile) करने के बाद एक '.class' फ़ाइल उत्पन्न होती है, जिसमें बाइटकोड (Bytecode) होता है, जिसे जावा वर्चुअल मशीन (JVM) द्वारा किसी भी ऑपरेटिंग सिस्टम पर चलाया जा सकता है। [Asked in SSC CGL Tier-2 2022]
- पायथन में मेमोरी प्रबंधन (Memory Management in Python): पायथन में अवांछित या अप्रयुक्त ऑब्जेक्ट्स (Unused Objects) को हीप मेमोरी (Heap Memory) से स्वचालित रूप से हटाने का कार्य गार्बेज कलेक्टर (Garbage Collector) द्वारा किया जाता है। [Asked in UPPCL Assistant Accountant 2021]
- सी++ का उदय (Evolution of C++): 1979 में बेल लैब्स (Bell Labs) में बजारने स्ट्राउस्ट्रुप (Bjarne Stroustrup) द्वारा विकसित सी++ (C++) का प्रारंभिक नाम C with Classes था, जो मूल C भाषा का ही एक ऑब्जेक्ट-ओरिएंटेड (Object-Oriented) विस्तार था। [Asked in RRB NTPC Mains 2017]
- डेटा सुरक्षा (Data Security): ओओपी (OOP) में किसी क्लास (Class) के आंतरिक डेटा (Internal Data) को बाहरी दुनिया के सीधे हस्तक्षेप से सुरक्षित रखने की ढालनुमा प्रक्रिया को इनकैप्सुलेशन (Encapsulation) कहते हैं। [Asked in DSSSB TGT Computer Science 2021]
- डायनामिक बाइंडिंग (Dynamic Binding): सी++ (C++) में रनटाइम पॉलीमॉरफिज्म (Runtime Polymorphism) को लागू करने के लिए बेस क्लास (Base Class) में एक विशेष फ़ंक्शन घोषित किया जाता है, जिसे वर्चुअल फंक्शन (Virtual Function) कहा जाता है। [Asked in KVS PGT Computer Science 2018]
आपके लिए आज का सवाल (Today's question for you, Comment Below!)
प्रश्न (Question): प्रयोजन उन्मुख प्रोग्रामिंग (Object-Oriented Programming - OOPs) और विभिन्न प्रोग्रामिंग भाषाओं के संदर्भ में, निम्नलिखित कथनों पर विचार करें और असत्य कथन (Incorrect Statement) चुनें:
- A. सी++ (C++) भाषा बहु-विरासत (Multiple Inheritance) का प्रत्यक्ष रूप से समर्थन करती है।
- B. जावा (Java) भाषा सुरक्षा कारणों से सीधे मेमोरी एक्सेस के लिए पॉइंटर्स (Explicit Pointers) के उपयोग की अनुमति देती है।
- C. पायथन (Python) में लगभग हर चीज़ (यहाँ तक कि संख्याएँ और फ़ंक्शन भी) को एक ऑब्जेक्ट (Object) माना जाता है।
- D. एब्स्ट्रैक्शन (Abstraction) का मुख्य उद्देश्य केवल आवश्यक जानकारी दिखाना और बैकग्राउंड के जटिल विवरण (Complex details) को छिपाना है।
- E. उपरोक्त में से कोई नहीं (None of the above)
👉 अपने उत्तर और उसका कारण कमेंट बॉक्स में विस्तार से लिखें। देखते हैं आपकी तैयारी का स्तर क्या है!
अक्सर पूछे जाने वाले प्रश्न (FAQs)
सी (C) भाषा को प्रयोजन उन्मुख प्रोग्रामिंग (Object-Oriented Programming) भाषा क्यों नहीं माना जाता है? (Why is C language not considered an Object-Oriented Programming language?)
सी (C) भाषा एक विशुद्ध प्रक्रियात्मक प्रोग्रामिंग (Procedural Programming) भाषा है। यह प्रोग्राम को छोटे-छोटे फ़ंक्शंस (Functions) में बांटती है। इसमें ओओपी (OOP) के मुख्य स्तंभों जैसे कि क्लास (Class), ऑब्जेक्ट (Object), इनकैप्सुलेशन (Encapsulation), और इनहेरिटेंस (Inheritance) का पूर्ण अभाव होता है। इसलिए इसे प्रयोजन उन्मुख (Object-Oriented) नहीं माना जाता है।
प्रक्रियात्मक (Procedural) और प्रयोजन उन्मुख (Object-Oriented) प्रोग्रामिंग के बीच मुख्य अंतर क्या है? (What is the main difference between Procedural and Object-Oriented programming?)
मुख्य अंतर डेटा सुरक्षा (Data Security) और दृष्टिकोण का है। प्रक्रियात्मक प्रोग्रामिंग (POP) 'टॉप-डाउन दृष्टिकोण' (Top-Down Approach) का पालन करती है और इसमें डेटा पूरे प्रोग्राम में असुरक्षित रूप से घूमता है। वहीं, प्रयोजन उन्मुख प्रोग्रामिंग (OOP) 'बॉटम-अप दृष्टिकोण' (Bottom-Up Approach) अपनाती है और डेटा को ऑब्जेक्ट्स (Objects) के भीतर इनकैप्सुलेट (Encapsulate) करके सुरक्षित रखती है।
पायथन (Python) और सी++ (C++) में से कौन सी भाषा बेहतर ओओपी (OOP) अवधारणाओं का समर्थन करती है? (Which language supports better OOP concepts between Python and C++?)
दोनों ही भाषाएं शक्तिशाली ओओपी (OOP) का समर्थन करती हैं, लेकिन उनका तरीका अलग है। सी++ (C++) एक संकलित भाषा (Compiled Language) है जो हार्डवेयर-स्तर (Hardware-level) के करीब है और सख्त ओओपी नियमों (Strict OOP rules) का पालन करती है। पायथन (Python) एक इंटरप्रिटेड (Interpreted) और गतिशील (Dynamic) भाषा है जो ओओपी (OOP) को अधिक सरल और पठनीय (Readable) तरीके से लागू करती है। 'शुद्धता' की बात करें तो पायथन (Python) में हर चीज़ एक ऑब्जेक्ट (Object) है।