-
David A. Wheeler की समीक्षा
- David J. Agans की "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems" को software और hardware developers के लिए एक अनिवार्य debugging किताब माना गया है.
- यह किताब किसी खास तकनीक पर नहीं, बल्कि bugs को ढूंढने और ठीक करने के मूल सिद्धांतों को समझाती है, और खास तौर पर beginners तथा intermediate developers के लिए उपयोगी है.
- किताब "नौ नियमों" के इर्द-गिर्द संगठित है, और हर नियम की व्याख्या तथा उसके उपयोग का तरीका बताती है.
-
नौ नियम
- सिस्टम को समझें: manual पढ़ना, basics को समझना, और tools का सही उपयोग करना महत्वपूर्ण है.
- failure को दोबारा पैदा करें: failure को फिर से reproduce करना और intermittent bugs के कारण को ढूंढना महत्वपूर्ण है.
- सोचना रोकें और observe करें: पहले data इकट्ठा करें, और अनुमान पर निर्भर न रहें.
- divide and conquer: समस्या को धीरे-धीरे सीमित करें और ऐसे test patterns का उपयोग करें जिन्हें आसानी से पहचाना जा सके.
- एक बार में एक ही चीज़ बदलें: मुख्य तत्वों को isolate करें और tests को एक-एक करके बदलें.
- audit trail बनाए रखें: आपने क्या किया और उसके क्या परिणाम मिले, इसे दर्ज करें, और समझें कि हर detail महत्वपूर्ण हो सकती है.
- plug की जांच करें: अपनी धारणाओं पर शक करें और tools को test करें.
- नई दृष्टि प्राप्त करें: नई insights लें और अनुभव की आवाज़ को सुनना महत्वपूर्ण है.
- अगर fix नहीं हुआ, तो ठीक नहीं हुआ: यह सुनिश्चित करें कि समस्या सच में हल हुई है, और उसके root cause को ठीक करें.
-
किताब की खूबियां और कमियां
- यह किताब debugging के मूल सिद्धांतों पर केंद्रित है, और इसी कारण दूसरी technical किताबों से अलग दिखती है.
- इसमें intermittent problems को संभालने के तरीकों पर व्यावहारिक सलाह शामिल है.
- किताब के appendix में संबंधित websites और poster download links दिए गए हैं.
- कमी यह है that सभी नियमों और sub-rules की one-page सूची नहीं है, और किसी खास तकनीक पर ठोस सलाह भी सीमित है.
-
निष्कर्ष
- यह किताब debugging के मूल सिद्धांतों को सीखने या फिर से याद करने के लिए उपयोगी है, और beginners तथा experts दोनों के लिए मददगार है.
- David A. Wheeler इस किताब की जोरदार सिफारिश करते हैं और मूल सिद्धांतों के महत्व पर ज़ोर देते हैं.
1 टिप्पणियां
Hacker News राय
बग वाले कोड को ठीक करने का प्रलोभन बहुत होता है, लेकिन टूटे हुए कोड को ठीक करने से कहीं आसान काम चल रहे कोड को तोड़ देना है। Christmas lights के उदाहरण की तरह, काम करने वाले न्यूनतम उदाहरण से शुरू करके समस्या ढूँढना प्रभावी होता है
समस्या हल करते समय सबसे ज़रूरी बात घबराना नहीं है। स्पष्ट सोच की ज़रूरत होती है, और अच्छा मैनेजर समस्या-समाधान पर ध्यान केंद्रित करने में मदद करता है
git bisectकई commits में से समस्या पैदा करने वाले commit को खोजने में उपयोगी है। खासकर बड़े codebase में यह समस्या को जल्दी ढूँढने में मदद करता हैसिस्टम को समझना महत्वपूर्ण है, लेकिन हर manual पढ़ना अव्यावहारिक है। व्यावहारिक दृष्टिकोण ज़रूरी है
सही file को सही machine पर edit करना महत्वपूर्ण है
समस्या-समाधान की सोच विकसित करने के लिए सुझाई गई किताबें:
अतिरिक्त नियम:
regression रोकने के लिए CI में बग को test के रूप में जोड़ना चाहिए। fix से पहले और बाद में यह जाँचना चाहिए कि CI fail और pass हो रहा है या नहीं
debugging के बाद भी काम खत्म नहीं होता। हर बग के लिए तीन सवाल पूछने चाहिए:
न्यूनतम setup के साथ समस्या को reproduce करना महत्वपूर्ण है। ज़्यादातर मामलों में इससे बग मिल जाता है। कोड को आधा-आधा बाँटकर यह ढूँढना प्रभावी है कि ठीक कौन-सा हिस्सा गलत है