मेरे पास हाल ही में एक नौकरी का साक्षात्कार था जिसमें उन्होंने मुझे कुछ वास्तविक कोड लिखने के लिए एक घंटे का समय दिया। यह एक बड़ी राशि नहीं थी, शायद 100 से कम लाइनें। लगभग 45 मिनट के बाद, मैंने संकलित किया, इसे चलाया, और इसे काम करने के लिए मिला। हो सकता है कि मैंने 5-10 मिनट का समय कंपाइल एरर और कुछ मामूली बग्स में बिताया हो, लेकिन कुल मिलाकर यह बहुत सहज था। (संयोग से, मुझे उनसे एक प्रस्ताव मिला।)
हालाँकि, मुझे जो अचरज हुआ, वह यह कि मैंने पूरा कोड सौंपने के बाद, साक्षात्कारकर्ता ने मुझे बताया कि केवल एक चीज जो मैंने गलत की थी, "मैं साथ नहीं जाने के रूप में संकलन नहीं कर रहा था"। मैंने उनसे पूछा कि अंतर क्या है, और उन्होंने कहा कि "यदि आपने कोड पूरा कर लिया है और आपने समय पर संकलन नहीं किया है तो आपने क्या किया होगा"।
मेरी समझ में यह एक अमान्य तर्क है, क्योंकि कोड की दी गई लंबाई के लिए "संकलन करने के लिए कोड प्राप्त करना" में आम तौर पर संकलन त्रुटियों की एक निरंतर संख्या को ठीक करना शामिल है और काफी निरंतर मात्रा में समय लगता है, जो आपके बाद ऐसा ही होना चाहिए कोड लिखना समाप्त करें, या यदि आप इसे अपने कोडिंग समय के साथ इंटरलेवे करते हैं। यदि कुछ भी, लापता अर्धविरामों की खोज के लिए आपके कोडिंग में व्यवधान डालना संभवत: आपकी दक्षता के लिए हानिकारक होगा। अत्यधिक परिस्थितियों को छोड़कर जब मैं व्युत्पन्न कक्षाओं में वर्चुअल फ़ंक्शंस जैसी चीज़ों पर किनारे-मामलों के अस्पष्ट प्रयोग कर रहा हूं, तो यह अपेक्षा करना उचित लगता है कि किसी अनुभवी डेवलपर द्वारा लिखा गया कोड समसामयिक टाइपिंग त्रुटि, और यहां तक कि माइनस को संकलित करेगा। अगर यह नहीं है, यह '
इसी तरह की एक अन्य घटना में, मुझे एक साक्षात्कार में एक अपूर्ण कोडबेस दिया गया था, और इसे खत्म करने और इसे चलाने के लिए आवश्यक संशोधन करने के लिए कहा। मैंने मौजूदा कोड के माध्यम से पढ़ना शुरू किया, और फिर कुछ मिनटों के बाद (यहां तक कि इससे पहले कि मैं कोड को देखना समाप्त कर चुका था), साक्षात्कारकर्ता ने मुझे बताया कि यह पर्याप्त है। जब मैंने उनसे पूछा कि उन्होंने क्या किया होगा (यानी "मैंने क्या गलत किया है"), उन्होंने मुझे बताया कि उन्होंने तुरंत ही संकलन करने के लिए कोड प्राप्त करके शुरू कर दिया होगा।
वह भी प्रासंगिक क्यों है? मेरी राय में और मेरे अनुभव में, कोड संकलन का एक टुकड़ा अनिवार्य रूप से यादृच्छिक है, जिसमें अर्धविराम गायब हैं या नहीं जैसे चीजें शामिल हैं, और अंतर्निहित कार्यक्रम की शुद्धता के साथ बहुत कम है। (मेरे लिए, संकलन पर ध्यान केंद्रित करना, व्याकरण की जांच करने के लिए प्रूफरीडिंग के बिना एक वर्तनी-जांच के माध्यम से एक लेख चलाने जैसा है)।
यदि आप मुझे अपूर्ण कोड का एक टुकड़ा देते हैं, तो सबसे पहले मैं इसे पढ़ूंगा। मैं इसे तब तक संकलित करने की कोशिश भी नहीं करूंगा जब तक मुझे पता न चले कि कोड क्या कर रहा है और मुझे पता है कि एल्गोरिथ्म सही है।
वैसे भी, ये हाल ही में हुई कुछ घटनाएं हैं, लेकिन सामान्य तौर पर मैंने कई डेवलपर्स को अपने कोड को संकलित करने के बारे में बात करते हुए सुना है क्योंकि वे साथ जाते हैं, और अभी तक कोई भी मुझे ऐसा करने का लाभ नहीं बता पाया है। जैसा कि आप साथ चलते हैं, मैं आपके कोड के परीक्षण के लाभों को समझता हूं , लेकिन संकलन क्यों?
तो मेरा सवाल यह है: क्या कुछ ऐसा है जो मैंने याद किया? क्या वास्तव में आपके साथ जाते हुए संकलन करने का कोई लाभ है? या सॉफ्टवेयर समुदाय द्वारा प्रचारित इस प्रकार का मिथक है जिसे आपको अपने कोड को बार-बार संकलित करना होगा?