Search

0.4 — Development का एक परिचय

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

The software development process

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 करेगा ।

The compilation process

उदाहरण: ज्यादातर 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 की सहायता से पूरी होती है ।

The linking process

एक 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 करने के विषय में और अधिक चर्चा करेंगे ।

0.5 -- एक Integrated Development Environment (IDE) install करना
Index
0.3 -- C/C++ का एक परिचय

Leave a Comment

Put C++ code inside [code][/code] tags to use the syntax highlighter