एक साक्षात्कार के दौरान, मुझसे पूछा गया कि क्या मुझे C और C ++ के बीच का अंतर पता है।
मैं सोच रहा था कि ऐसा सवाल क्यों पूछा जा रहा है?
एक साक्षात्कार के दौरान, मुझसे पूछा गया कि क्या मुझे C और C ++ के बीच का अंतर पता है।
मैं सोच रहा था कि ऐसा सवाल क्यों पूछा जा रहा है?
जवाबों:
यदि प्रश्न "जैसे कि क्या आप सी और सी ++ के बीच अंतर जानते हैं?" और आपको "हां" के साथ जवाब देने की अनुमति दी गई थी, तब मैं आपका भ्रम देख सकता था, लेकिन अगर वे वास्तव में पूछ रहे थे "क्या-क्या- C और C ++ के बीच अंतर?" और एक और अधिक खुला जवाब की उम्मीद थी, मैं इसे एक वैध "जांच का राजस्व" के रूप में देख सकता हूं जैसा कि वे कहते हैं।
उदाहरण के लिए, केवल C में कभी C और कभी C ++ में कोडिंग होने पर, मैं मुश्किल से एक अस्पष्ट "C ++ से परे उत्तर दे पाऊंगा जो ऑब्जेक्ट ओरिएंटेड कोडिंग का समर्थन करता है?"।
कुछ लोगों ने देखा है कि बड़ी संख्या में प्रोग्रामिंग जॉब आवेदक हैं जो कोड नहीं लिख सकते हैं । तो, हाँ, "स्पष्ट" प्रश्न पूछना पूर्ण समझ में आता है।
उनमें से एक पूरा गुच्छा है। वहाँ लोग हैं, जो मूर्ख व्याख्याताओं जो सी-तार और सिखाना है एक अनन्तता है new
और delete
, या बाहर के तारीख ट्यूटोरियल या बुरा किताबें, जो "सी ++" लेकिन वास्तव में सी जानने के लिए, जो सोचते हैं कि दो बहुत करीब हैं।
बेशक, यदि आप एक नियोक्ता हैं, तो यह कहना कि वे समान हैं या समान भी एक बड़ी चेतावनी प्रकाश है।
कुछ छोटे लोग भी हैं (जैसे खुद के) जिन्होंने C ++ सीखने से पहले C सीखा।
मुझे यकीन है कि आप मतभेदों को जानते हैं, लेकिन अगर आप एक ऐसे छात्र हैं, जिनके पास केवल C ++ क्लास है, और C क्लास नहीं, तो C ++ के वे हिस्से जो सी संगत नहीं हैं, स्पष्ट नहीं होंगे।
कुछ अधिक स्पष्ट अंतर जो मैंने सीखे हैं (एक विस्तृत सूची नहीं) ( ) संरचनात्मक डेटा प्रकार मूल रूप से कार्य नहीं कर सकते हैं, और इसमें निजी सदस्य नहीं हो सकते हैं, जिसका अर्थ है कि एक सार डेटा प्रकार की वैधता नियमों को लागू करना बहुत मुश्किल है सी में ( ) कक्षाएं सी में समर्थित नहीं हैं ( ) एम्परसेंड ऑपरेटर का उपयोग करके संदर्भ से गुजरना C ++ के लिए विशिष्ट है ( ) C धाराओं या टेम्पलेट्स का समर्थन नहीं करता है (*) मॉलॉक और नि: शुल्क केवल सी में उपयोग के लिए हैं और में नहीं सी ++
दुर्भाग्य से, मुझे लगता है कि यह आम होता जा रहा है।
मुझे लगता है कि युवा प्रोग्रामर तकनीकी स्कूल (या जहां से अपने कौशल सीखते हैं) से बाहर निकलते हैं, बस सी, सी ++, लिस्प, ओकेमेल, आदि जैसी पुरानी भाषाएं नहीं सीखते हैं। वे बस "सी # प्रोग्रामर" या "जमैका प्रोग्रामर" के रूप में सामने आते हैं। ", आदि और जब वे एक नौकरी पाते हैं, तो वे अन्य भाषाओं को सीखने के साथ खुद को चुनौती नहीं देते हैं।
निश्चित रूप से कुछ ऐसे हैं जो करते हैं, लेकिन जिन लोगों के साथ मैंने काम किया है, उनमें इस पैटर्न का पालन करने के लिए युवा प्रोग्रामर के लिए एक सामान्य प्रवृत्ति है।
डिस्क्लेमर: चूंकि मैं शिक्षा के बारे में बात कर रहा हूं, तो निश्चित रूप से देश में देश से लेकर शिक्षा में इस बात पर जोर दिया जा सकता है।
संभवतः नहीं, शाब्दिक रूप से, वे सोचते हैं कि C ++ और C एक हैं और समान हैं, लेकिन वास्तव में समझने और C ++ की विभिन्न विशेषताओं का उपयोग करने में सक्षम होने के मामले में, हाँ।
मुख्य कारण आपके रिज्यूमे / सीवी पर भाषाओं / टूल को सूचीबद्ध करने की द्विआधारी प्रकृति है। अनिवार्य रूप से, मानक यह प्रतीत होता है कि यदि आपको "हैलो वर्ल्ड" किसी भाषा में संकलित करने और चलाने के लिए मिला है, तो इसे फिर से शुरू / सीवी पर सूचीबद्ध करने के लिए ठीक है।
जैसा कि होता है, "हैलो, वर्ल्ड!" का C संस्करण C ++ में भी संकलित और चलता है। इसलिए, किसी भी अन्य जानकारी को अनुपस्थित करें, जो सभी "सी ++" को फिर से शुरू करने पर मुझे बताता है कि यह व्यक्ति "हैलो, वर्ल्ड!" प्राप्त करने के लिए पर्याप्त सी जानता है। चल रहा है और जानता है कि अधिकांश C प्रोग्राम C ++ में संकलित होंगे।
यह देखते हुए, मुझे यह जांच करने की आवश्यकता है कि साक्षात्कार पर थोड़ा सा। मैं शायद "हां / नहीं" पूछकर ऐसा नहीं करूंगा "क्या आप अंतर जानते हैं?" प्रश्न, संक्षेप में क्योंकि इसका एक स्पष्ट "सही" उत्तर है। मैं शायद उम्मीदवार से पूछूंगा कि उसे कौन सी भाषा बेहतर लगी, क्यों, और अगर उसे कोई फायदा नहीं हुआ, तो उसे नहीं लेना चाहिए।
उत्तर
हाँ, इसका सामान्य। मैंने स्वयं, सहकर्मियों या तीसरे पक्ष के पुस्तकालयों के कोड में इस स्थिति को देखा है।
स्वयं, उदाहरण के लिए, कभी-कभी अन्य प्रोग्रामिंग भाषाओं या प्रोग्रामिंग फ्रेमवर्क के साथ काम करते हैं, और "शुद्ध c" या "c ++" पुस्तकालयों से लिंक या अपडेट करना पड़ता है।
मुझे सिर्फ कुछ "प्योर सी" कोड को संशोधित करने की समस्या थी। और "नए" और "हटाएं" मेमोरी आवंटन कार्यों का उपयोग करके, जो "सी ++" हैं। बाकी कोड ऑब्जेक्ट ओरिएंटेड नहीं था
संकलक C ++ था। बाद में, मैंने एक और संकलक पर मुकदमा दायर किया, और त्रुटि की खोज की।
बक्शीश
अगर कोई लिखित, मौखिक या लिखित परीक्षा या वेब ऑनलाइन टेस्ट में पूछे:
"क्या आप C या C ++ के बीच अंतर जानते हैं"
और आप "हां" या "नहीं" का जवाब देते हैं।
वे वास्तव में मतलब है:
"क्या आप सी या सी ++ के बीच का अंतर जानते हैं, अगर आप कृपया मुझे बताएं?"
तो, आपको जवाब देना होगा:
"हाँ। इसका अंतर यह है कि C ++ इसकी ऑब्जेक्ट ओरिएंटेड है, हालाँकि, आप बैकग्राउंड कम्पैटिबिलिटी के लिए C ++ प्रोग्राम के अंदर प्योर सी का उपयोग कर सकते हैं।"
कभी-कभी, वे आपसे नहीं पूछेंगे "यदि आप कृपया मुझे बताएं", और वे मान लेंगे कि आपको नहीं पता है। बस "हां", या "नहीं" का जवाब न दें।
संपादित करें
एक बात के रूप में, ध्यान दें कि यह उत्तर यह घोषित करने के लिए नहीं है कि कोई मतभेद नहीं हैं या कि मैं मतभेदों को जानने के लिए प्रोफेसर हूं, या यहां तक कि मैं "हैलो वर्ल्ड" से या तो सी या सी ++ में जानता हूं। यह संदर्भ की शर्तों को तैयार करके प्रश्न का उत्तर है, यह इंगित करता है कि बहुत से लोग प्राथमिक अंतर जानते हैं (जैसे +
कि इसके नाम में कुछ वर्ण हैं) और बहुत कम लोग सभी या यहां तक कि अधिकांश मतभेदों को भी जानते होंगे।
यह निर्भर करता है कि आपको 'प्रोग्रामर' से क्या मतलब है और 'अंतर' से आपका क्या मतलब है।
मैं एक 'प्रोग्रामर' हूं (हालांकि मैं खुद को एक डेवलपर कहता हूं) और मैं सी और सी ++ के बीच कोई वास्तविक अंतर देने के लिए संघर्ष करूंगा। अगर दबाया जाता तो मैं शायद कहता कि C ++ C का सुपरसेट है जिसमें नेमस्पेस और इनहेरिटेंस है; स्मृति से निपटने के विभिन्न तरीके। मैं कुछ बग्स को पैच करना या आपके मौजूदा कार्यक्रम में कुछ बदलाव करना जानता हूं, लेकिन मैं सी या सी ++ में एक साधारण उपयोगिता से अधिक कुछ भी लिखने की कल्पना नहीं कर सकता। मैं इसके द्वारा प्राप्त करने के लिए पर्याप्त जानता हूं, लेकिन मैं खुद को उन भाषाओं में से "जानने" के रूप में चित्रित नहीं करता हूं।
मैं अन्य 'प्रोग्रामर्स' (भी डेवलपर्स) को जानता हूं जो आपको जावा और फोरट्रान, या जावास्क्रिप्ट और पास्कल के बीच का अंतर भी नहीं बताएंगे। वे जो करते हैं उसमें अच्छे हैं और वे प्रक्रियात्मक भाषा नहीं करते हैं।
फिर लाखों औसत दर्जे के प्रोग्रामर हैं जो हर दिन उनके साथ काम करने वाली एकल भाषा को बमुश्किल जानते हैं।
Is अंतर ’शब्द अस्पष्ट है। मैंने बताया है कि मैं ऊपर दिए गए कुछ अंतरों के रूप में क्या देखता हूं, लेकिन मुझे पता है कि वे निश्चित और पूर्ण नहीं हैं। बहुत कम लोग हर अंतर को जानने जा रहे हैं - ऑब्जेक्ट ओरिएंटेशन के लिए बहुत अधिक लोग कुछ अस्पष्ट उत्तर देने में सक्षम होने जा रहे हैं (जैसा कि मेरे पास है)।
क्या प्रोग्रामर के लिए C और C ++ के बीच का अंतर नहीं जानना आम है?
बीस वर्ष पूर्व? हाँ।
आज? इतना नहीं।
इसका कारण यह है क्योंकि प्रोग्रामिंग परिदृश्य एक बड़े पैमाने पर बदल गया है। आज के कई कार्यक्रम वेब आधारित हैं; यहां तक कि डेस्कटॉप के लिए लिखे गए प्रोग्रामों को C या C ++ की तुलना में उच्च-स्तरीय भाषा में लिखा जा सकता है। जैसे कि, जब तक आप एक प्रोग्रामर नहीं हैं जो ओएस कोड लिखते हैं, तो आप दोनों में से किसी भी भाषा के बारे में ज्यादा नहीं जानते होंगे।
एक साक्षात्कारकर्ता इस सवाल को एक साक्षात्कार में पूछ सकता है कि आप प्रोग्रामिंग की बुनियादी बातों के बारे में कितना जानते हैं; यदि आप C और C ++ के बीच अंतर जानते हैं, तो आप संभवतः यह जानते हैं कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग क्या है, आप शायद पुस्तकालयों और संकलकों को समझते हैं, आप मेमोरी फ़ंक्शंस, संदर्भों, बिंदुओं को समझते हैं .... कई चीजें जो आज की प्रोग्रामिंग भाषाओं को प्रभावित करती हैं । मैं C ++ का उपयोग नहीं करता (और मैं वास्तव में यह नहीं कह सकता कि मैं किसी भी भाषा में एक उत्कृष्ट प्रोग्रामर हूं; ज्ञान समय के साथ आएगा) लेकिन मैं कह सकता हूं कि C ++ के साथ मेरे अनुभव ने मुझे निश्चित रूप से एक बेहतर प्रोग्रामर बनाया है।