Ticker

6/recent/ticker-posts

C++ शुरू से अंत तक सीखे , गेम में कैसे उपयोग किया जाता है।

 OOPS and C++

सबसे पहला सवाल तो यही है कि C++ क्यों सीखा जाए? ये आज की प्रभावशाली भाषा है। जब Programmers को बडे य जटिल प्रोग्राम बनाने होते हैं, तब Professional Programmers c++ को Choose करते हैं। कई और भी सरल व प्रभावी भाषाएं हैं, लेकिन उनकी कुछ कमियों की वजह से उनमें प्रोग्राम Development की एक सीमा है।


जैसे Visual Basic Microsoft Company की एक बहुत ही सरल भाषा है, लेकिन जब प्रोग्राम बहुत ही बडे व जटिल होते हैं, तब इस भाषा में Program Develop करना समझदारी की बात नहीं होती है। क्योंकि इस भाषा में Graphics का बहुत प्रयोग होता है, और भी कई कारण हैं, जिससे यदि इस भाषा में बड़े प्रोग्राम Develop किए जाएं तो प्रोग्राम की Speed बहुत कम हो जाती है। Assembly भाषा भी काफी अच्छी है। इसमें लिखे गए प्रोग्रामों की गति काफी अच्छी होती है, लेकिन ये भाषा Hardware के Device Drivers के प्रोग्राम लिखने के लिये ज्यादा अच्छी है ना कि Application प्रोग्राम लिखने के।


इसी तरह Java Internet के लिये अच्छी है, हालांकि Java C++ से ही प्रेरित है। लेकिन एक बड़े Standalone Application Development करने के लिये C++ सबसे लोकप्रिय भाषा है। ये एक बहुत ही Flexible व Best Performing Language है।


Procedural Languages


Pascal, C, Basic, Fortran जैसी पारम्परिक भाषाएं Procedural Languages के उदाहरण हैं। जिसमें प्रत्येक Statement Computer को कुछ काम करने का आदेश देता है। यानी Procedural Languages Instructions va E E tI Procedural Languages छोटे Programs के लिये किसी भी अन्य प्रकार के Pattern की आवश्यकता नही होती है। Programmer Instructions की List बनाता है और Computer उनके अनुसार काम करता है।


जब प्रोग्राम काफी बड़े व जटिल हो जाते हैं, तब Instructions की यह List काफी परेशानी पैदा करती है। इसलिये एक बड़े प्रोग्राम को छोटे-छोटे टुकड़ों में बांट दिया जाता है। इन छोटे-छोटे टुकड़ों को Functions कहा जाता है। Functions को दूसरी अन्य भाषाओं में Subroutine, Subprogram या Procedure कहा जाता है।


एक बड़े प्रोग्राम को छोटे-छोटे Functions में विभाजित करने से पूरा Program Functions का एक समूह बन जाता है, जिसे Module कहा जाता है।


लेकिन ये Modules भी Procedural Programming के अन्तर्गत ही आते हैं क्योंकि सभी Functions में Statements की एक लिस्ट होती है और सभी Functions मिल कर पूरा Program बनाते हैं, जिससे पूरा Program Instructions की एक बहुत बडी List बन जाता है।


Procedural Languages के शुरूआती दौर में इनमें ही Program Develop किए जाते थे। C" भी एक Procedural Languages है और जब "C" भाषा का आविष्कार हुआ था, तब Programmers अन्य भाषाओं को छोड कर "C" में ही अपने Program Develop करने लगे थे।


लेकिन समय व आवश्यकता के अनुसार जब Program बडे व जटिल होने लगे, तब Programmers को इस भाषा में प्रोग्राम बनाने में दिक्कतें आने लगीं। उन्होने महसूस किया कि इस भाषा में कुछ सुधार की आवश्यकता है ताकि ये भाषा सरल व लोकप्रिय बन सके।





ये भाषा सरल बन सके इसके लिये इसका वास्तविक जीवन के अनुसार होना जरूरी था। यानी हम हमारे सामान्य जीवन में जिस प्रकार से व्यवहार करते हैं, इस भाषा का भी वैसा ही होना जरूरी था ताकि Programmers इसमें अधिक सरलता व सफलता से Program बना सकें। भाषा वास्तविक जीवन के अनुसार हो, यही Concept Object Oriented Programming यानी OOPS का आधार बना। C" भाषा की इन कमियों को पहचाना गया और इसमें सुधार किया गया।


फलस्वरूप हमें "C" भाषा का एक नया संस्करण C++ प्राप्त हुआ। आइये, हम भी जानने की


कोशिश करते हैं कि "C" भाषा में ऐसी कौनसी कमियां थीं, जिनमें सुधार की आवश्यकता महसूस की


गई?


Procedural Languages में काम होने का महत्व था Data का नहीं, यानी कि Keyboard से Data Input किया जाए. Data पर Processing की जाए. Errors को Check किया जाए आदि। Functions में भी इसी महत्व को जारी रखा गया। Functions कोई काम करते हैं, उसी प्रकार से जिस प्रकार से साधारण Statement करता है। Functions कोई जटिल काम भी कर सकते हैं, लेकिन इनमें भी काम के होने का ही महत्व था।


पूरे Program में Data पर कोई ध्यान नहीं दिया जाता था, जबकि पूरे प्रोग्राम का मूल आधार Data


ही होता है। किसी Inventory के Program में इस बात का कोई ज्यादा महत्व नहीं होता है कि


Data को किस प्रकार से Display किया जाता है या एक Function किस प्रकार से Corrupt


Data को Check करता है, बल्कि इस बात का होता है कि Data क्या है और वह किस प्रकार से


Program में काम आ रहा है। Procedural Program में Data को द्वितीय स्तर पर रखा गया था


जबकि किसी भी Program का मूल आधार Data ही होता है।


उदाहरण के लिये, किसी Inventory के Program में किसी Data File को Memory Load किया जाता है, तब ये File एक Global Variable की तरह होती है, जिसे कोई भी Function Use कर सकता है। ये Functions Data पर विभिन्न प्रकार के Operations करते हैं। यानी ये Data को Read करते है, Analyze करते हैं, Update करते हैं, Rearrange करते हैं, Display करते हैं और वापस Disk पर Wrote करते हैं। "C" में Local Variables भी होते हैं लेकिन Local Variables, महत्वपूर्ण Data के लिये इतने उपयोगी नहीं होते हैं, जो कि विभिन्न Functions द्वारा Access किए जाते हैं।


मान लो कि एक नए Programmer को Data को किसी खास तरीके से Analyze करने के लिये एक Function लिखने को कहा गया। प्रोग्राम की गूढता से अनभिज्ञ Programmer एक ऐसा Function बनाता है जो कि अचानक किसी महत्वपूर्ण Data को नष्ट कर देता है। ऐसा होना काफी आसान है क्योंकि कोई भी Function Data को Access कर सकता है, इसलिये क्योंकि Procedural Language में Data Global होता है। ये कुछ ऐसा ही है जैसे कि आप अपने Personal कागजात को Telephone Directory के पास रख दें जहां कभी भी कोई भी पहुंच सकता है, उससे छेड़छाड़ कर सकता है और उसे नष्ट कर सकता है। इसी प्रकार से Procedural Languages में होता है जहां आपका Data Global होता है और कोई भी Function उसे Use करके खराब कर सकता है या नुकसान पहुंचा सकता है। Procedural Languages की दूसरी कमी ये थी कि कई Functions एक साथ एक ही Data को


Use कर रहे होते हैं, इसलिये Data को Store करने का तरीका काफी जटिल हो जाता है। समान


Data को Use कर रहे सभी Functions को Modify किए बिना Data में किसी प्रकार का कोई


परिवर्तन नहीं किया जा सकता है। उदाहरण के लिये यदि आप एक नया Data Add करते हैं तो


उन सभी Functions को Modify करना होगा जो कि Data को use कर रहे हैं ताकि ये सभी


Functions Add किए गए नए Data को उसे कर सकें। ये पता करना कि कौन-कौन से Function Data को उसे कर रहे हैं और सभी को बिल्कुल सही तरीके से Modify करना काफी कठिन होता है।


Procedural Programs को Design करना काफी मुश्किल होता है। समस्या ये होती है कि इनका Design वास्तविक जीवन से Related नहीं होता है। जैसे कि माना आप एक Graphics User Interface में Menus Window के लिये Code लिखना चाहते हैं, तो आपको ये तय करना मुश्किल होगा कि कौनसा Function Use किया जाए? कौनसा Data Structure Use किया जाए? आदि। इनका कोई स्पष्ठ उत्तर नहीं है।


Procedural Programs के साथ कई और परेशानियां हैं। उनमें से एक समस्या नए Data Type की है। Computer Languages में कई प्रकार के Buit-in Data Types होते हैं, जैसे कि Integer, Float, Character आदि। मानलो कि आप Complex Numbers के साथ प्रक्रिया करना चाहते हैं या Two-dimensional Coordinates के साथ काम करना चाहते हैं या Date के साथ प्रक्रिया करना चाहते हैं।


Built-in Data Type इनको आसानी से Handle नहीं कर सकते हैं। इसलिए हमें हमारी आवश्यकतानुसार स्वयं के Data Type बनाने की जरूरत होती है। यानी Real World Objects को Represent करने के लिए हमें एक ऐसे तरीके की जरूरत होती है, जिससे आसानी से Real World Objects को Computer में Represent किया जा सके और जिस तरह से Real World में विभिन्न Objects आपस में Interaction करके किसी समस्या का एक उचित समाधान प्राप्त करते हैं, उसी तरह से Computer में भी किसी समस्या का समाधान प्राप्त किया जा सके।


Procedural Language में स्वयं के Data Type बना कर हम उन्हे बिल्कुल Built-in Data Type


की तरह उसे नहीं कर सकते हैं। Procedural Language इतने उन्नत नहीं है। जटिल तरीकों


को अपनाए बिना हम Procedural Languages में x व y दोनों Coordinates को एक ही


Variable में स्टोर करके उस पर Processing नहीं कर सकते हैं। Procedural Languages


को लिखना व Maintain करना काफी मुश्किल काम होता है।


सारांश


कामों को करने का महत्व था, Data का नहीं। यानी Primary Attention Problem को Functions में विभाजित करने का था Data की Security का नहीं। (Algorithm)


• बडे Program को छोटे Programs में विभाजित किया जाता था, जिन्हें Functions कहते हैं। ज्यादातर Functions Global Data को Share करते थे, जिससे Data Insecure हो जाता था। Application में Data का काफी आसानी से विभिन्न Functions के बीच Transaction होता था।


विभिन्न Functions Data को विभिन्न Forms में Transform करते थे। 

• Top-Down Approach को Support करते थे।


The Object-Oriented Approach


Object Oriented Language के पीछे का मूलभूत विचार ये है कि एक Program में Data और उस Data पर काम करने वाले Functions को Combine करके एक Unit के रूप में ले लिया जाए। इस Unit को Object कहा जाला है। एक Object के Function यानी Data व Data पर काम करने के लिये लिखे गए Function को "C++" में Member Function कहा जाता है।


क्योंकि ये किसी Object के किसी अमुक Class से सम्बंधित होते हैं. जो कि किसी Data को Access करने का एक मात्र माध्यम होते हैं। यदि आप किसी Object के अन्दर रखे किसी Data


Post a Comment

0 Comments