प्रोग्रामिंग टूल

प्रोग्रामिंग टूल या सॉफ़्टवेयर डेवलपमेंट टूल एक कंप्यूटर प्रोग्राम है। जिसका उपयोग सॉफ्टवेयर डेवलपर अन्य प्रोग्राम और एप्लिकेशन बनाने, डीबग करने, बनाए रखने या अन्यथा समर्थन करने के लिए करते हैं। यह शब्द सामान्यतः अपेक्षाकृत सरल प्रोग्रामो को संदर्भित करता है। जिसे किसी प्रोग्राम को पूरा करने के लिए जोड़ा जा सकता है, जैसे कोई भौतिक वस्तु को सही करने के लिए कई हाथों का उपयोग कर सकता है। सबसे मूलभूत उपकरण स्रोत कोड संपादक और संकलक या दुभाषिया (कंप्यूटिंग) हैं | जिनका उपयोग सर्वव्यापी और निरंतर किया जाता है। भाषा, विकास पद्धति और व्यक्तिगत इंजीनियर के आधार पर अन्य उपकरणों का अधिक या कम उपयोग किया जाता है। जो अधिकांशतः असतत प्रोग्राम के लिए उपयोग किया जाता है। जैसे डिबगर या प्रोफाइलर उपकरण असतत प्रोग्राम हो सकते हैं, अलग से निष्पादित - अधिकांशतः कमांड लाइन से - या बड़े प्रोग्राम के भाग हो सकते हैं | जिसे एकीकृत विकास वातावरण (आईडीई) कहा जाता है। कई स्थितियों में, विशेष रूप से सरल उपयोग के लिए, उपकरण के अतिरिक्त सरल तदर्थ विधियों का उपयोग किया जाता है। जैसे डिबगर का उपयोग करने के अतिरिक्त प्रिंट डिबगिंग, प्रोफाइलर के अतिरिक्त मैन्युअल समय (समग्र प्रोग्राम या कोड के अनुभाग का) या बग को ट्रैक करना बग ट्रैकिंग सिस्टम के अतिरिक्त टेक्स्ट फ़ाइल या स्प्रेडशीट का उपयोग किया जाता है।

टूल और एप्लिकेशन के बीच का अंतर अस्पष्ट है। उदाहरण के लिए, डेवलपर्स हर समय उपकरण के रूप में सरल डेटाबेस (जैसे फ्लैट फ़ाइल डेटाबेस) का उपयोग करते हैं। चूँकि पूर्ण विकसित डेटाबेस को सामान्यतः अपने आप में एप्लिकेशन या सॉफ़्टवेयर के रूप में माना जाता है। कई वर्षों तक, कंप्यूटर-सहायता प्राप्त सॉफ़्टवेयर इंजीनियरिंग (प्रकरण) उपकरणों की मांग की गई थी। सफल उपकरण मायावी सिद्ध हुए हैं। एक मायने में, प्रकरण टूल ने रचना और आर्किटेक्चर समर्थन पर जोर दिया, जैसे कि यूएमएल के लिए किन्तु इनमें से सबसे सफल उपकरण आईडीई हैं।

मानव से कंप्यूटर भाषा में अनुवाद
आधुनिक कंप्यूटर बहुत जटिल हैं और उन्हें उत्पादक रूप से प्रोग्राम करने के लिए विभिन्न सार की आवश्यकता होती है। उदाहरण के लिए, प्रोग्राम के बाइनरी प्रतिनिधित्व को लिखने के अतिरिक्त प्रोग्रामर सी, जावा या पायथन जैसी प्रोग्रामिंग भाषा में प्रोग्राम लिखता है। असेंबली लैंग्वेज असेम्बलर्स, कंपाइलर्स और लिंकर (कंप्यूटिंग) जैसे प्रोग्रामिंग टूल प्रोग्राम को मानव द्वारा लिखने योग्य और पठनीय स्रोत भाषा से बिट्स और बाइट्स में अनुवादित करते हैं | जिन्हें कंप्यूटर द्वारा निष्पादित किया जा सकता है। दुभाषिए वांछित व्यवहार उत्पन्न करने के लिए प्रोग्राम की तत्काल व्याख्या करते हैं।

ये प्रोग्राम कई अच्छी तरह से परिभाषित और दोहराए जाने वाले प्रोग्राम करते हैं | जो मानव द्वारा किए जाने पर समय लेने वाली और त्रुटि-प्रवण होंगे, जैसे किसी प्रोग्राम के कुछ भागो को स्मृति में रखना और लिंकर के रूप में प्रोग्राम के कुछ भागो के बीच संदर्भों को सही करना होता है। दूसरी ओर ऑप्टिमाइज़िंग कंपाइलर निष्पादन की गति या किसी प्रोग्राम की अन्य विशेषताओं को उत्तम बनाने के लिए स्रोत कोड पर जटिल परिवर्तन कर सकते हैं। यह प्रोग्रामर को उच्च स्तर पर अधिक ध्यान केंद्रित करने की अनुमति देता है। जिस मशीन पर वह चल रहा है। उसके विवरण के बारे में चिंता किए बिना प्रोग्राम के वैचारिक स्वरूप होते है।

मनुष्यों के लिए प्रोग्राम की जानकारी उपलब्ध कराना
सॉफ्टवेयर की उच्च जटिलता के कारण, सबसे अनुभवी सॉफ्टवेयर डेवलपर के लिए भी अधिकांश प्रोग्रामो को एक नज़र में समझना संभव नहीं है। उच्च-स्तरीय प्रोग्रामिंग भाषाओं द्वारा प्रदान किए गए सार भी प्रोग्रामर द्वारा लिखे गए स्रोत कोड और वास्तविक प्रोग्राम के व्यवहार के बीच संबंध को समझना कठिन बनाते हैं। प्रोग्राम में सॉफ्टवेयर बग खोजने के लिए और प्रोग्राम को विस्तारित करते समय नई बग बनाने से रोकने के लिए, सॉफ़्टवेयर डेवलपर प्रोग्राम के बारे में सभी प्रकार की जानकारी देखने के लिए कुछ प्रोग्रामिंग टूल का उपयोग करता है।

उदाहरण के लिए, डीबगर एक प्रोग्रामर को प्रोग्राम करने के लिए उपयोग की जाने वाली स्रोत भाषा के संदर्भ में चल रहे प्रोग्राम के बारे में जानकारी निकालने की अनुमति देता है। डिबगर कंपाइलर द्वारा संग्रहीत जानकारी का उपयोग करके कंक्रीट मशीन की स्थिति से स्रोत प्रोग्राम में चर के मान की गणना कर सकता है। मेमोरी डिबगर्स सीधे चल रहे प्रोग्रामों की संदिग्ध या एकमुश्त गलत मेमोरी एक्सेस को संकेत कर सकते हैं | जो अन्यथा अनिर्धारित रह सकते हैं और प्रोग्राम विफलताओं का सामान्य स्रोत हैं।

उपकरणों की सूची
सॉफ्टवेयर उपकरण कई रूपों में आते हैं:
 * बाइनरी-कोड संगतता विश्लेषण उपकरण
 * बग डेटाबेस: इश्यू ट्रैकिंग सिस्टम की तुलना - बग ट्रैकिंग सिस्टम सहित
 * बिल्ड टूल्स: स्वचालन बनाएँ, बिल्ड ऑटोमेशन सॉफ्टवेयर की सूची
 * कॉल ग्राफ
 * कोड कवरेज़ : कोड कवरेज सॉफ़्टवेयर कोड कवरेज टूल।
 * कोड समीक्षा: कोड समीक्षा के लिए उपकरणों की सूची
 * कोड साझा करने वाली साइटें: फ्रेशमीट, क्रुगल, सोर्सफोर्ज, गिटहब यह भी देखें :श्रेणी:कोड खोज इंजन।
 * संकलक और लिंकर (कंप्यूटिंग) उपकरण: जीएनयू टूलचेन, जीएनयू संकलक संग्रह, माइक्रोसॉफ्ट विजुअल स्टूडियो, कोडवॉरिअर, एक्सकोड, इंटेल सी संकलक
 * डिबगर्स: डीबगर डिबगर्स की सूची डिबगिंग भी देखें।
 * विध्वंसक: सामान्यतः रिवर्स इंजीनियरिंग टूल।
 * दस्तावेज़ जनरेटर: डॉक्यूमेंटेशन जेनरेटर की तुलना, हेल्प2मैन, सादा पुराना दस्तावेज़ीकरण, अस्कीडोक
 * औपचारिक तरीके: विशिष्टता, विकास और सत्यापन के लिए गणितीय विधिया |
 * ग्राफिकल यूजर इंटरफेस बिल्डर
 * पुस्तकालय इंटरफ़ेस जनरेटर: एसडब्ल्यूआईजी
 * एकता उपकरण
 * मेमोरी डीबगर अधिकांशतः प्रोग्रामिंग भाषाओं (जैसे सी (प्रोग्रामिंग भाषा) और सी ++) में उपयोग किए जाते हैं | जो मैन्युअल मेमोरी प्रबंधन की अनुमति देते हैं और इस प्रकार स्मृति रिसाव और अन्य समस्याओं की संभावना होती है। वे स्मृति उपयोग की दक्षता को अनुकूलित करने के लिए भी उपयोगी होते हैं। उदाहरण: डीमॉलोक, विद्युत बाड़ ,इन्सेयोर++, वेलग्रिंड
 * पदच्छेद : पार्सिंग पार्सर विकास सॉफ्टवेयर |
 * रूपरेखा (कंप्यूटर प्रोग्रामिंग) या प्रोफाइलिंग: प्रदर्शन विश्लेषण उपकरणों की सूची |
 * संशोधन नियंत्रण: संशोधन नियंत्रण सॉफ्टवेयर की सूची, संशोधन नियंत्रण सॉफ्टवेयर की तुलना |
 * स्क्रिप्टिंग भाषाएँ: पीएचपी, एडब्ल्यूके (प्रोग्रामिंग भाषा), पर्ल, पायथन (प्रोग्रामिंग भाषा), रेक्स, रूबी (प्रोग्रामिंग भाषा), ऑपरेटिंग सिस्टम खोल, टीसीएल
 * खोज: ग्रेप, फाइंड (यूनिक्स) |
 * सोर्स कोड क्लोन/डुप्लिकेशंस फाइंडिंग: डुप्लीकेट कोड टूल्स |
 * स्रोत कोड संपादक
 * पाठ संपादक: पाठ संपादकों की सूची, पाठ संपादकों की तुलना
 * प्रोग्रामिंग शैली: इंडेंट (यूनिक्स), प्रिटीप्रिंट, सौंदर्यीकरण, मिनिमिफिकेशन (प्रोग्रामिंग)
 * स्रोत कोड पीढ़ी टूल: स्वचालित प्रोग्रामिंग कार्यान्वयन
 * स्थैतिक कोड विश्लेषण: लिंट (सॉफ्टवेयर), स्थैतिक कोड विश्लेषण के लिए उपकरणों की सूची
 * यूनिट टेस्टिंग: यूनिट टेस्टिंग फ्रेमवर्क की सूची

आईडीई
एकीकृत विकास वातावरण कई उपकरणों की सुविधाओं को पैकेज में जोड़ता है। उदाहरण के लिए, वे विशिष्ट प्रोग्राम को करना सरल बनाते हैं | जैसे किसी विशेष प्रोजेक्ट में केवल फाइलों में पदार्थ खोजना होता है। उदाहरण के लिए आईडीई का उपयोग उद्यम स्तर के अनुप्रयोगों के विकास के लिए किया जा सकता है।

विशिष्ट प्रोग्रामिंग भाषाओं के लिए आईडीई के विभिन्न प्रारूपो को एकीकृत विकास परिवेशों की इस तुलना में पाया जा सकता है।

यह भी देखें

 * कंप्यूटर एडेड सॉफ्टवेयर इंजीनियरिंग उपकरण
 * कंप्यूटर विज्ञान
 * विन्यास सिस्टम
 * भाषा का अंकन
 * सॉफ़्टवेयर विकास किट
 * सॉफ्टवेयर इंजीनियरिंग और सॉफ्टवेयर इंजीनियरिंग विषयों की सूची
 * सॉफ्टवेयर सिस्टम
 * यूजर इनोवेशन के लिए टूलकिट
 * डेवलपर अनुभव

संदर्भ

 * Software Development Tools for Petascale Computing Workshop 2007