0.4 —
Development का एक
परिचय
इससे पहले कि हम अपना पहला program लिखकर execute
करे, हमें C++ में programs
develop करने
की प्रक्रिया को अच्छी तरह से समझना होगा । इस प्रक्रिया का एक आसान सा चित्रात्मक
प्रतिरूप नीचे दिखाया गया है:

Step 1: आप जिस problem को solve करना चाहते हो, उसे पहले define करो
ये development के process में “क्या” का जवाब है, जहाँ आप स्पष्ट करने वाले हो
कि आप अपने program से क्या solve करना चाहते हो । आप जो भी program
करना
चाहते हो, उसके लिए एक योजना बनाना, या तो सबसे आसान या फिर सबसे
मुश्किल काम भी साबित हो सकता है । लेकिन copceptually, ये आसान ही है । आपके पास program
design करने
का बस एक ऐसा idea होना चाहिए, जो अच्छी तरह से define किया जा सके । बस, आप अगले step के लिए तैयार हैं ।
ऐसे ideas के कुछ examples:
- “मै एक ऐसा program लिखना चाहता/चाहती हूँ, जो user को कुछ numbers enter करने की अनुमति देता हो, और फिर उनका औसत (average) ज्ञात करता हो ।”
- “मै एक ऐसा program लिखना चाहता/चाहती हूँ, जो एक 2 dimensional भूल-भुलैया generate करता हो और user को इसमें से navigate करने देता हो ।”
- “मै एक ऐसा program लिखना चाहता/चाहती हूँ जो किसी file में से stocks के दाम को read करके ये पता लगाता हो, की stock के भाव बढ़ेंगे या घटेंगे । “
Step 2: सुनिश्चित कीजिये की आप problem
को
कैसे solve करने वाले हैं
ये development के process में “कैसे” का जवाब है, जहाँ आप निर्धारित करते हो की
step 1 में आये problem को किस तरह से solve किया जाये । ये software
development का वो step है जिसपे अक्सर ध्यान नहीं
दिया जाता । वो इसलिए, क्यूंकि किसी problem
को solve करने के लिए कई तरीके अपनाये
जा सकते हैं -- फिर भी, इनमे से कुछ अच्छे और कुछ
बुरे हैं । अक्सर, programmer को जैसे ही कोई idea आता है, वो तुरंत codes लिखना शुरू कर देता है । इस
तरह की coding से उन्हें जो solution मिलता है, वो ज्यादातर मामलों में अच्छा
साबित नहीं होता ।
अच्छे solutions की कुछ निशानियाँ नीचे दी
गयीं हैं:
- ये
समझने में आसान होते हैं
- ये
बहुत अच्छी तरह से लिखे होते हैं (विशेषतः किसी मानी जा चुकी बात के आधार पर)
- इनके
एक-एक भाग को अलग-अलग design किया जाता है, ताकि ज़रूरत पड़ने पर program के किसी दुसरे भाग पर अनचाहा प्रभाव
डाले बिना,
किसी एक भाग
में परिवर्तन किया जा सके, या फिर इसका दोबारा इस्तेमाल किया जा
सके
- ये
मजबूती से बने होते हैं, और अचानक किसी तरह की कोई गड़बड़
होने पर बहुत उपयोगी error messages दे सकते हैं, या फिर किसी खराबी को खुद-ब-खुद
सुधार सकते हैं
जब आप किसी problem पर तुरंत coding करना शुरू कर देते हो, आम तौर पर आपके दिमाग में यही
चल रहा होता है, कि “मुझे कैसे भी _ये_ करना ही है”, और इस तरह के ख्याल आने से, आप problem
को solve करने के लिए वो solution
अपनाते
हो, जो आपको आपकी मंजिल तक जल्द से जल्द पहुंचा सके । फलस्वरूप, आप कुछ ऐसा बना लेते हो जो
कमज़ोर, कुछ बदलाव लाने या उन्हें बड़ा आकार देने में काफी मुश्किल, या फिर कई सारे bugs से भरा होता है ।
Studies में ये सामने आया है कि programmer’s
का
सिर्फ 20% समय शुरुआती program लिखने में लगता है और बाकी का
80% इसे debug करने (program
की
गलतियाँ सुधारने) या फिर इसे maintain करने (नए features
जोड़ने
में) चला जाता है । इसलिए, किसी problem
पे coding करने से पहले उसे solve करने का सबसे बेहतर तरीका
क्या हो सकता है, आप future में इसे लेकर क्या plan करने वाले हो, इन सब के बारे में सोचने के
लिए थोडा वक़्त लेना सही है ताकि आगे चलते हुए आप अपना ढेर सारा समय बचा सको, और साथ ही खुद को मुसीबतों से
भी दूर रख सको ।
आगे के lesson में हम किसी problem
के solution
को
बेहतरीन तरीके से design करने के विषय में और अधिक चर्चा करेंगे ।
Step 3: अब program को लिखो
program को लिखने के लिए हमे दो चीजों की ज़रूरत पड़ेगी: सबसे पहले
तो हमें किसी programming language का ज्ञान होना चाहिए -- और इसी के लिए ये सभी tutorials
यहाँ
मौजूद हैं! दूसरा, हमें एक editor चाहिए । Programs
को
अपनी पसंद के किसी भी editor में लिखा जा सकता है, यहाँ तक की windows
में notepad
और Linux में vi या pico की सहायता से भी । फिर भी, हमारे अनुसार आपको कोई ऐसा editor
use करना
चाहिए जो coding के लिए ही design किया गया हो । यदि आपके पास
अब तक नहीं है तो कोई बात नहीं । कुछ ही देर में हम जानेंगे की इनमें से कुछ को
कैसे install करना है ।
आम तौर पर editors जो coding के लिए dsigned
होते
हैं, उनमे कुछ ऐसी खूबियां होती हैं जो programming
को
काफी आसान बना देती हैं, जैसे
1) Line numbering. ये तब सहायक साबित होता है जब compiler
हमे error देता है । एक compiler
कुछ इस
तरह का error दे सकता है “error, line 64” । एक Editor
codes लिखते
समय line numbers भी दिखाता है । अब ज़रा सोचिये,
Editor के
बिना, program में 64वे line को खोजना मुश्किल होगा या
नहीं ।
2) Syntax highlighting और colouring.
Editor का ये feature,
आपके program
के
विभिन्न भागों को पहचानने में आसान बनाने के लिए tokens
(जैसे keywords,
operators आदि)
को अलग-अलग रंगों में दर्शाता है ।
3) साफ़-सुथरे fonts. Non-programming fonts में अकसर number
0 और letter
O या तो number
1 और letter
l (small L) के बीच अंतर कर पाना काफी मुश्किल हो जाता है । Programming
fonts की
खासियत होती है की इनमें इन सभी की पहचान साफ़-साफ़ की जा सकती है, ताकि गलती से भी numbers
या letters
एक
दूसरे की जगह ना ले लें ।
आपके C++ programs के नाम कुछ इस तरह होने चाहिए: name.cpp, जहाँ name आपके program
का नाम
है और .cpp extension आपको और compiler को ये बताता है की इस file में C++ के instructions
दिए गए
हैं । ध्यान दें की कुछ लोग .cpp की जगह .cc
extension का
उपयोग करते हैं, पर हमारी सलाह है की आप .cpp का ही इस्तेमाल करे ।
और एक बात यहाँ ध्यान देने लायक है । कुछ complex
C++ programs एक से अधिक .cpp files से बने होते हैं । हालाँकि
शुरुआत में आप जो programs बनाने वाले हो, उनमें केवल एक .cpp
file होगा ।
एक C++ program में 10 या यहाँ तक की 100 .cpp
files भी हो
सकते हैं ।
Step 4: Compiling
किसी program को compile करने के लिए एक ख़ास तरह के program
की
ज़रूरत पड़ती है जिसे compiler कहते हैं । Compiler
के दो
काम हैं:
1) आपके program को check कर ये पक्का करना कि program
C++ के
सारे rules को follow करता हो । यदि ऐसा नहीं है, तो compiler
आपको error देता है (line
number के
साथ) ताकि आपने जिस जगह पर गलती की है, उसे fix कर सको ।
2) Source code के हर file को convert
कर एक machine
language file में बदलना जिन्हें object file कहा जाता है । Object
files के नाम
कुछ इस प्रकार होते हैं: name.o या name.obj, जहाँ name उस .cpp
file का नाम
है, जिसका ये object file दिया गया है । यदि आपके program
में 5 .cpp
files हैं, तो compiler
5 object files भी generate करेगा ।

उदाहरण: ज्यादातर Linux और Mac OS
X systems एक C++
compiler के साथ
आते हैं जिसे g++ कहा जाता है । g++ की सहायता से किसी file को command
line में compile
करने
के लिए हमे ये करना होगा:
g++
-c file1.cpp file2.cpp file3.cpp
ये file1.o, file2.o, और file3.o नाम के तीन object
files बनाएगा
। यहाँ -c का मतलब है “compile only”, जो g++ को बतलाता है की उसे बस .o
(object) file प्रदान करना है ।
Compilers Linux, Windows और लगभग बाकी सभी systems
के लिए
उपलब्ध हैं । अगले section में हम एक compiler को system में install
करना
सीखेंगे, फ़िलहाल उसकी कोई ज़रूरत नहीं है ।
Complex projects के लिए, कुछ development
environments makefile का इस्तेमाल करते हैं, जो खुद एक file है और compiler
को ये
बताता है कि किन files को compile करना है । Makefiles
एक advanced
topic है और
इनपर पूरी की पूरी किताबें लिखी जातीं हैं । सौभाग्य से आपको इसके बारे में चिंता
करने की ज़रूरत नहीं है, इसलिए हम उसकी चर्चा यहाँ
नहीं करेंगे ।
Step 5: Linking
Compiler द्वारा generated object files को मिलाकर एक single
executable प्रदान करने की प्रक्रिया को Linking के नाम से जाना जाता है । ये linker नामक एक program
की
सहायता से पूरी होती है ।

एक program के object files के अलावे linker,
runtime support library (या पहले से compile की हुई दूसरी libraries,
जिसका
आप इस्तेमाल कर रहे हो, जैसे graphics
या sound
libraries) से भी, executable देने के लिए files को combine
कर
सकता है । असल में C++ language खुद में बहुत छोटा और साधारण है । लेकिन ये कई बड़ी-बड़ी libraries
के साथ
आता है जिसके components को आपका program काम में ला सकता है । ये सारे
components runtime support library में स्थित हैं । उदहारण के
लिए, यदि आप screen पर कोई ouput पाना चाहते हैं, तो इसके लिए आपका program
एक खास
तरह का command use करेगा जो compiler को ये सुचना देगा कि आप runtime
support library से I/O (input/output) routines का इस्तेमाल करना चाहते हैं ।
जैसे ही linker सारे object
files को link कर लेता है (माना जा रहा है की
सबकुछ ठीक हुआ है), आपके पास एक executable होगा जिसे आप direct
run कर
सकते हो ।
उदाहरण: Linux या OS X
machine में
ऊपर बनाये गए .o files को link करने के लिए हम फिर से g++ का इस्तेमाल कर सकते हैं:
g++
-o prog file1.o file2.o file3.o
यहाँ -o, g++ को ये बता रहा है की हमे “prog” नाम का एक executable
चाहिए
जो file1.o,file2.o और file3.o के combination
से बना
है ।
यदि आप चाहो, तो compiling
और linking
क़े steps को एक साथ कुछ इस तरह से combine
कर
सकते हो:
g++
-o prog file1.cpp file2.cpp file3.cpp
ये command compiling और linking के process
को एक
ही बार में पूरा कर “prog” नाम का एक executable
देता
है ।
Step 6: Testing और Debugging
ये काम मज़ेदार है (वैसे, उम्मीद है)! अब आप अपने executable
को run करके ये देख सकते हो की outputs
आपके
सोचे अनुसार हैं या नहीं । अगर नहीं हैं, तो अब वक़्त है debugging
का ।
जल्द ही हम debugging को और करीब से जानेंगे ।
ध्यान दें की steps 3, 4, 5, और 6, सभी में softwares
की
ज़रूरत है । जहाँ आप ऊपर बताये गए सभी functions
(linking,compiling,debugging आदि) का प्रयोग अलग-अलग software
packages की
सहायता से कर सकते हैं, वहीँ इन सब के लिए integrated development environment
(IDE) का इस्तेमाल करना सबसे बढ़िया उपाय है । IDE
linker,compiler, debugger आदि का एक bundle pack है, अर्थात् इस program
को install
कर
लेने के बाद आपको हर function के लिए अलग से program
install करने
की ज़रूरत नहीं है । IDE में ही सबकुछ मिल जायेगा ।
आपको एक code editor भी मिलेगा, जो line
numbering और syntax
highlighting के लिए उपयोगी है, और इसके साथ में compiler
और linker तो है ही । यदि आपका program
multiple files से भी बना है, तो IDE अपने आप इसे compile
और link कर executable
देने
के लिए ज़रूरी parameters generate कर लेगा । और जब आपको अपने program
को debug करने की ज़रूरत पड़ेगी,आप integrated
debugger (जो IDE के साथ ही आता है) का
इस्तेमाल कर सकते हैं । इसके अलावे, IDE’s कई और helpful
editing features प्रदान करते हैं, जैसे की integrated
help, name completion, hierarchy browsers और कभी-कभी एक version
control system भी ।
अगले section में हम IDEs को install
करने
और उन्हें use करने के विषय में और अधिक चर्चा करेंगे ।

No comments:
Post a Comment