सी, प्रसिद्ध रूप से, एचएलएल के रूप में एक निम्न-स्तरीय भाषा है। C ++, हालाँकि यह C की तुलना में काफी उच्च-स्तरीय भाषा हो सकती है, फिर भी इसके कई लक्षण साझा करती है। और उन लक्षणों में से एक यह है कि भाषाओं को प्रोग्रामर द्वारा डिज़ाइन किया गया था, प्रोग्रामर के लिए - और, विशेष रूप से, प्रोग्रामर जो जानते थे कि वे क्या कर रहे थे।
[इस उत्तर के बाकी हिस्सों के लिए मैं सी पर ध्यान केंद्रित करने जा रहा हूं। अधिकांश मैं जो कहूंगा वह सी ++ पर भी लागू होता है, हालांकि शायद उतना दृढ़ता से नहीं। यद्यपि बज़्ने स्ट्रॉस्ट्रुप ने प्रसिद्ध रूप से कहा है, "सी खुद को पैर में गोली मारना आसान बनाता है; सी ++ इसे कठिन बनाता है, लेकिन जब आप इसे करते हैं तो यह आपके पूरे पैर को उड़ा देता है।" ]
यदि आप जानते हैं कि आप क्या कर रहे हैं - वास्तव में जानते हैं कि आप क्या कर रहे हैं - कभी-कभी आपको "नियमों को तोड़ना" पड़ सकता है। लेकिन अधिकांश समय, हम में से अधिकांश इस बात से सहमत होंगे कि सुविचारित नियम हमें मुसीबत से बाहर रखते हैं, और हर समय उन नियमों को तोड़ना एक बुरा विचार है।
लेकिन सी और सी ++ में, आश्चर्यजनक रूप से बड़ी संख्या में चीजें हैं जो आप कर सकते हैं कि "बुरे विचार" हैं, लेकिन जो "नियमों के खिलाफ" औपचारिक रूप से नहीं हैं। कभी-कभी वे कुछ बुरे विचार रखते हैं (लेकिन अन्य समय में खराब हो सकते हैं); कभी-कभी वे लगभग हर समय एक बुरा विचार होते हैं। लेकिन परंपरा हमेशा इन चीजों के बारे में चेतावनी देने के लिए नहीं रही है - क्योंकि, फिर से, धारणा यह है कि प्रोग्रामर जानते हैं कि वे क्या कर रहे हैं, वे इन चीजों को एक अच्छे कारण के बिना नहीं कर रहे हैं, वे एक झुंड से नाराज होंगे। अनावश्यक चेतावनी के।
लेकिन निश्चित रूप से सभी प्रोग्रामर वास्तव में नहीं जानते कि वे क्या कर रहे हैं। और, विशेष रूप से, हर सी प्रोग्रामर (कोई फर्क नहीं पड़ता कि कितना अनुभवी) शुरुआत सी प्रोग्रामर होने के एक चरण से गुजरता है। और यहां तक कि अनुभवी सी प्रोग्रामर लापरवाह हो सकते हैं और गलतियां कर सकते हैं।
अंत में, अनुभव ने न केवल यह दिखाया है कि प्रोग्रामर गलती करते हैं, बल्कि यह कि इन गलतियों के वास्तविक, गंभीर परिणाम हो सकते हैं। यदि आप कोई गलती करते हैं, और संकलक आपको इसके बारे में चेतावनी नहीं देता है, और किसी भी तरह कार्यक्रम तुरंत दुर्घटना नहीं करता है या स्पष्ट रूप से कुछ गलत नहीं करता है, तो गलती वहाँ दुबक सकती है, छिपी हुई, कभी-कभी वर्षों तक, जब तक इसका कारण नहीं बनता है एक बहुत बड़ी समस्या।
तो यह पता चला है कि, ज्यादातर समय, चेतावनी एक अच्छा विचार है, आखिरकार। यहां तक कि अनुभवी प्रोग्रामर ने सीखा है (वास्तव में, यह " विशेष रूप से अनुभवी प्रोग्रामर ने सीखा है") कि, संतुलन पर, नुकसान की तुलना में चेतावनियां अधिक अच्छा करती हैं। हर बार जब आपने जानबूझकर कुछ गलत किया था और चेतावनी एक उपद्रव थी, तो संभवतः कम से कम दस बार आपने दुर्घटना से कुछ गलत किया और चेतावनी ने आपको और परेशानी से बचा लिया। और अधिकांश चेतावनियों को अक्षम या उन कुछ समय के लिए काम किया जा सकता है जब आप वास्तव में "गलत" चीज करना चाहते हैं।
(इस तरह की "गलती" का एक उत्कृष्ट उदाहरण परीक्षण है if(a = b)
अधिकांश समय, यह एक गलती है, तो सबसे compilers इन दिनों उस बारे में चेतावनी है -।। कुछ भी डिफ़ॉल्ट रूप से लेकिन अगर आप वास्तव में दोनों असाइन करना चाहते थे b
करने के लिए a
और परीक्षण परिणाम, आप टाइप करके चेतावनी को अक्षम कर सकते हैं if((a = b))
।)
दूसरा सवाल यह है कि आप संकलक से चेतावनी को त्रुटियों के रूप में क्यों पूछना चाहेंगे? मैं कहता हूँ कि यह मानव स्वभाव के कारण है, विशेष रूप से, "ओह, यह सिर्फ एक चेतावनी है, यह इतना महत्वपूर्ण नहीं है कि मैं बाद में इसे साफ कर दूंगा।" लेकिन अगर आप एक विलंबकर्ता हैं (और मैं आपके बारे में नहीं जानता, लेकिन मैं एक हूँ भयानक शिथिलता ) तो मूल रूप से हमेशा के लिए आवश्यक सफाई को बंद करना आसान है - और अगर आपको चेतावनी की अनदेखी करने की आदत है, तो एक महत्वपूर्ण चेतावनी संदेश याद करने के लिए आसान और आसान हो जाता है , जिस पर आप ध्यान नहीं दे रहे हैं।
इसलिए संकलक को चेतावनी के बारे में पूछने के लिए त्रुटियों के रूप में एक छोटी सी चाल है जो आप इस मानव को प्राप्त करने के लिए अपने आप पर खेल सकते हैं।
व्यक्तिगत रूप से, मैं चेतावनी को त्रुटियों के रूप में मानने के लिए आग्रह नहीं कर रहा हूं। (वास्तव में, अगर मैं ईमानदार हूं, तो मैं कह सकता हूं कि मैंने अपने "व्यक्तिगत" प्रोग्रामिंग में वास्तव में उस विकल्प को कभी भी सक्षम नहीं किया है।) लेकिन आप सुनिश्चित कर सकते हैं कि मुझे वह विकल्प काम में सक्षम हो गया है, जहां हमारी शैली मार्गदर्शिका है (जो मैं लिखा) इसका उपयोग अनिवार्य है। और मैं कहूंगा - मुझे संदेह है कि अधिकांश पेशेवर प्रोग्रामर कहेंगे - कि कोई भी दुकान जो चेतावनियों को चेतावनी नहीं मानती है क्योंकि सी गलत व्यवहार कर रही है, आमतौर पर स्वीकृत उद्योग सर्वोत्तम प्रथाओं का पालन नहीं कर रही है।