Procedural Programming Paradigm: सबसे पहला सवाल तो यही है कि C++ क्यों सीखा जाए? इसका जवाब भी इतना ही सरल है। ये आज तक की सबसे Powerful Programming Language है। 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 का एक समूह होता है।
Procedural Languages में छोटे Programs के लिये किसी भी अन्य प्रकार के Pattern की आवश्यकता नही होती है। Programmer Instructions की List बनाता है और Computer उनके अनुसार काम करता है।
जब प्रोग्राम काफी बडे व जटिल हो जाते हैं, तब Instructions की यह List काफी परेशानी पैदा करती है। इसलिये एक बडे प्रोग्राम को छोटे-छोटे टुकडों में बांट दिया जाता है। इन छोटे-छोटे टुकडों को Functions कहा जाता है। Functions को दूसरी अन्य भाषाओं में Subroutine, Subprogram या Procedure कहा जाता है।
एक बडे प्रोग्राम को छोटे-छोटे Functions में विभाजित करने से पूरा Program Functions का एक समूह बन जाता है, जिसे Module कहा जाता है। लेकिन ये Modules भी Procedural Programming के अन्तर्गत ही आते हैं क्योंकि सभी Functions में Statements की एक List होती है और सभी 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 को Secondary Level पर रखा गया था जबकि किसी भी Program का मूल आधार Data ही होता है।
उदाहरण के लिये, किसी Inventory के Program में किसी Data File को Memory में Load किया जाता है, तब ये File एक Global Variable की तरह होती है, जिसे कोई भी Function Use कर सकता है। ये Functions Data पर विभिन्न प्रकार के Operations करते हैं। यानी ये:
- Data को Read करते है,
- Analyze करते हैं,
- Update करते हैं,
- Rearrange करते हैं,
- Display करते हैं और
- वापस Disk पर Write करते हैं।
“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 को Use कर सकें। ये पता करना कि कौन-कौन से Function Data करे Use कर रहे हैं और सभी को बिल्कुल सही तरीके से Modify करना काफी कठिन होता है।
Procedural Programs को Design करना काफी कठिन होता है। समस्या ये होती है कि इनका Design वास्तविक जीवन से Related नहीं होता है। जैसे कि, माना आप एक Graphics User Interface में Menus Window के लिये Code लिखना चाहते हैं, तो आपको ये तय करना कठिन होगा कि कौनसा Function Use किया जाए? कौनसा Data Structure Use किया जाए? आदि। इनका कोई स्पष्ठ उत्तर नहीं है।
Procedural Programs के साथ कई और परेशानियां हैं। उनमें से एक समस्या नए Data Type की है। Computer Languages में कई प्रकार के Built-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 की तरह Use नहीं कर सकते हैं। Procedural Language इतने उन्नत नहीं हैं। जटिल तरीकों को अपनाए बिना हम Procedural Languages में x व y दोनों Coordinates को एक ही Variable में Store करके उस पर Processing नहीं कर सकते हैं। साथ ही Procedural Languages को लिखना व Maintain करना काफी कठिन काम होता है।
सारांश
- Procedural Language में कामों को करने का महत्व था, 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 करते थे।
(Procedural Programming Paradigm)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF