क्या प्रोग्रामर के लिए C और C ++ के बीच का अंतर नहीं जानना आम है? [बन्द है]


16

एक साक्षात्कार के दौरान, मुझसे पूछा गया कि क्या मुझे C और C ++ के बीच का अंतर पता है।

मैं सोच रहा था कि ऐसा सवाल क्यों पूछा जा रहा है?


11
सी सवालों की संख्या को देखते हुए मैंने पिछले कुछ हफ्तों में C ++ को टैग किया है और मैं कहूंगा कि यह एक बहुत महत्वपूर्ण सवाल था।
रोबोट

13
मैं कितनी बार "C / C ++" देखता हूं, मैं कहता हूं कि यह बहुत सामान्य है।
user16764

6
आपने क्या जवाब दिया?
दिमा

8
प्रोग्रामिंग आवेदक के लिए आवेदक के लिए यह सामान्य है कि वह कुछ भी नहीं जानता। लेकिन मैं उस व्यक्ति को प्रोग्रामर नहीं कहूंगा।
vartec

6
@ टार्टर्ट - आप समझते हैं कि वहाँ सिस्टम हैं जहाँ एक बाइट 8 बिट्स सही नहीं है?
रामहुंड

जवाबों:


25

यदि प्रश्न "जैसे कि क्या आप सी और सी ++ के बीच अंतर जानते हैं?" और आपको "हां" के साथ जवाब देने की अनुमति दी गई थी, तब मैं आपका भ्रम देख सकता था, लेकिन अगर वे वास्तव में पूछ रहे थे "क्या-क्या- C और C ++ के बीच अंतर?" और एक और अधिक खुला जवाब की उम्मीद थी, मैं इसे एक वैध "जांच का राजस्व" के रूप में देख सकता हूं जैसा कि वे कहते हैं।

उदाहरण के लिए, केवल C में कभी C और कभी C ++ में कोडिंग होने पर, मैं मुश्किल से एक अस्पष्ट "C ++ से परे उत्तर दे पाऊंगा जो ऑब्जेक्ट ओरिएंटेड कोडिंग का समर्थन करता है?"।


40

कुछ लोगों ने देखा है कि बड़ी संख्या में प्रोग्रामिंग जॉब आवेदक हैं जो कोड नहीं लिख सकते हैं । तो, हाँ, "स्पष्ट" प्रश्न पूछना पूर्ण समझ में आता है।


7
यह मेरे लिए बहुत ज्यादा जवाब देने वाला था। प्रोग्रामिंग पदों के लिए लोगों का साक्षात्कार लेने के बाद, मैं आपको बता सकता हूं कि स्पष्ट प्रश्न पूछने से उम्मीदवारों की अच्छी संख्या बहुत आसानी से कट जाएगी।
तानना

आपके लिए एक मिलियन अपवोट्स। मैं शुरुआती स्तर के प्रश्नों पर आश्चर्यचकित हूं, इसलिए कई साक्षात्कारकर्ता जवाब नहीं दे सकते हैं।
HLGEM

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

1
वास्तव में। जैसा कि एक और P.SE धागे पर चर्चा की गई है, साक्षात्कार के लिए मैंने हास्यास्पद स्पष्ट सवालों के साथ शुरुआत करने की आदत डाल ली है ("आप JS में एक चर घोषित कैसे करते हैं?", "Java में 1 int के लिए कितने बाइट्स?", " पॉइंटर क्या है? "आदि ...)। मुझे पहली त्रुटि नहीं है (तनाव एक कारक है, भले ही मैं उन्हें आराम करने के लिए बातचीत के साथ साक्षात्कार शुरू करता हूं), लेकिन आमतौर पर अगर मुझे सभ्य सवालों तक पहुंचने से पहले 3 हमले मिल सकते हैं, तो मैं इसे बिना जाने के लिए पूरी तरह से स्वीकार्य मानता हूं आगे या उन्हें बाहर किक। बेवकूफ सवाल पूछने में जो 5 मिनट लगते हैं, वह समय की बचत के लायक है।
जाइलम

3
वास्तव में, मैं इन पहले प्रश्नों को पूछने से पहले भी माफी मांगता हूं , क्योंकि मैं नहीं चाहता कि कुशल आवेदक उनके द्वारा अजीब तरह से तैयार हों, या मुझे लगता है कि मैं उन्हें गंभीरता से नहीं ले रहा हूं और यह महसूस कर रहा हूं कि वे यहां नहीं होंगे।
जाइलम ha

8

उनमें से एक पूरा गुच्छा है। वहाँ लोग हैं, जो मूर्ख व्याख्याताओं जो सी-तार और सिखाना है एक अनन्तता है newऔर delete, या बाहर के तारीख ट्यूटोरियल या बुरा किताबें, जो "सी ++" लेकिन वास्तव में सी जानने के लिए, जो सोचते हैं कि दो बहुत करीब हैं।

बेशक, यदि आप एक नियोक्ता हैं, तो यह कहना कि वे समान हैं या समान भी एक बड़ी चेतावनी प्रकाश है।


2
यह एक बहुत अच्छा बिंदु लाता है। यह C को पढ़ाने के लिए स्वीकार्य है और शायद आम भी है लेकिन C ++ कंपाइलर का उपयोग करें। यह निश्चित रूप से उन छात्रों द्वारा भ्रम की स्थिति पैदा करता है जो कभी भी प्रमुख मतभेदों को नहीं सीखते हैं सी और सी ++। मैं केवल एक ही संशोधन के बीच प्रमुख अंतर के बारे में बात कर रहा हूं।
रामहुंड

4
@Ramhound: यह स्वीकार्य नहीं है सब पर । तथ्य यह है कि यह आम है।
डेडएमजी

1
सबसे दुख की बात यह है कि C और C ++ लगभग सार्वभौमिक रूप से बुरी तरह से सिखाया जाता है। SO पर जाएं और C और C ++ टैग देखें, और आप एक ही गलत धारणा, एक ही गलत व्याख्या, एक ही गलत व्यवहार को बार-बार देखेंगे। ये लोग बेतरतीब ढंग से एक ही गलती नहीं कर रहे हैं; उन्हें सिखाया गया कि वे ये गलतियाँ कैसे करें। "मेरे प्रोफेसर ने कहा ..." अब मेरे लिए लगभग सार्वभौमिक रूप से एक लाल झंडा है।
जॉन बोड

5

कुछ छोटे लोग भी हैं (जैसे खुद के) जिन्होंने C ++ सीखने से पहले C सीखा।

मुझे यकीन है कि आप मतभेदों को जानते हैं, लेकिन अगर आप एक ऐसे छात्र हैं, जिनके पास केवल C ++ क्लास है, और C क्लास नहीं, तो C ++ के वे हिस्से जो सी संगत नहीं हैं, स्पष्ट नहीं होंगे।

कुछ अधिक स्पष्ट अंतर जो मैंने सीखे हैं (एक विस्तृत सूची नहीं) ( ) संरचनात्मक डेटा प्रकार मूल रूप से कार्य नहीं कर सकते हैं, और इसमें निजी सदस्य नहीं हो सकते हैं, जिसका अर्थ है कि एक सार डेटा प्रकार की वैधता नियमों को लागू करना बहुत मुश्किल है सी में ( ) कक्षाएं सी में समर्थित नहीं हैं ( ) एम्परसेंड ऑपरेटर का उपयोग करके संदर्भ से गुजरना C ++ के लिए विशिष्ट है ( ) C धाराओं या टेम्पलेट्स का समर्थन नहीं करता है (*) मॉलॉक और नि: शुल्क केवल सी में उपयोग के लिए हैं और में नहीं सी ++


2
मुझे लगता है कि यह एक महत्वपूर्ण अंतर्दृष्टि है ... पुराने दिनों में, आपके पास सी संकलक था, फिर सी ++ आया, इसलिए आपने अंतर सीखा। अब आपके पास C / C ++ कंपाइलर हैं और यदि आपको C ++ स्पष्ट रूप से सिखाया जाता है, तो यह जानना बहुत ही मुश्किल है कि C क्या है और C ++ क्या है "ऑब्जेक्ट ओरिएंटेड सामान" से परे, इसके अलावा, मुझे यकीन नहीं है कि C / C ++ सबसे आम है क्रोध में सीखने की भाषा (?)
अल बिगलान

1
मुझे बहुत उम्मीद है कि प्रतिशत उतना छोटा नहीं होगा, क्योंकि "C ++ में परिवर्तित" C प्रोग्रामर अक्सर बहुत खराब C ++ प्रोग्रामर होते हैं
sbi

1

दुर्भाग्य से, मुझे लगता है कि यह आम होता जा रहा है।

मुझे लगता है कि युवा प्रोग्रामर तकनीकी स्कूल (या जहां से अपने कौशल सीखते हैं) से बाहर निकलते हैं, बस सी, सी ++, लिस्प, ओकेमेल, आदि जैसी पुरानी भाषाएं नहीं सीखते हैं। वे बस "सी # प्रोग्रामर" या "जमैका प्रोग्रामर" के रूप में सामने आते हैं। ", आदि और जब वे एक नौकरी पाते हैं, तो वे अन्य भाषाओं को सीखने के साथ खुद को चुनौती नहीं देते हैं।

निश्चित रूप से कुछ ऐसे हैं जो करते हैं, लेकिन जिन लोगों के साथ मैंने काम किया है, उनमें इस पैटर्न का पालन करने के लिए युवा प्रोग्रामर के लिए एक सामान्य प्रवृत्ति है।

डिस्क्लेमर: चूंकि मैं शिक्षा के बारे में बात कर रहा हूं, तो निश्चित रूप से देश में देश से लेकर शिक्षा में इस बात पर जोर दिया जा सकता है।


आप किन विश्वविद्यालयों की बात कर रहे हैं? "रहस्यमय" भाषाएँ? मुझे रोम यूनिवर्सिटी में MIPS के लिए असेंबली सीखनी थी ...
Виталий Олегович

आम तौर पर, जो "युवा" प्रोग्रामर मुझे मिले हैं, उन्होंने इंजीनियरिंग में डिग्री हासिल की है। यह सोचने के लिए आओ, मेरे साथ काम करने वाले लगभग सभी प्रोग्रामर इंजीनियरिंग में डिग्री प्राप्त करते हैं, जिसमें मैं भी शामिल हूं।
पीट

1
C और C ++ अभी भी स्कूल में पढ़ाए जाते हैं। समस्या ज्यादातर समय एक ही संकलक का उपयोग दोनों को सिखाने के लिए किया जाता है। इसका मतलब यह है कि वे वास्तव में कभी भी दो भाषाओं के बीच अंतर नहीं सीखते हैं।
रामहुंड

@Pete अगर मैं 'C # प्रोग्रामर' के रूप में सामने आया, तो मैं C या C ++ को 'दूसरी भाषा' के रूप में सीखने की कल्पना नहीं कर सकता। निश्चित रूप से मैं रूबी, हास्केल, जावास्क्रिप्ट, पायथन को पसंद करूंगा। सी-फैमिली लैंग्वेज काफी करीब हैं कि एक को जानना काफी है।
कर्क ब्रॉडहर्स्ट

0

संभवतः नहीं, शाब्दिक रूप से, वे सोचते हैं कि C ++ और C एक हैं और समान हैं, लेकिन वास्तव में समझने और C ++ की विभिन्न विशेषताओं का उपयोग करने में सक्षम होने के मामले में, हाँ।

मुख्य कारण आपके रिज्यूमे / सीवी पर भाषाओं / टूल को सूचीबद्ध करने की द्विआधारी प्रकृति है। अनिवार्य रूप से, मानक यह प्रतीत होता है कि यदि आपको "हैलो वर्ल्ड" किसी भाषा में संकलित करने और चलाने के लिए मिला है, तो इसे फिर से शुरू / सीवी पर सूचीबद्ध करने के लिए ठीक है।

जैसा कि होता है, "हैलो, वर्ल्ड!" का C संस्करण C ++ में भी संकलित और चलता है। इसलिए, किसी भी अन्य जानकारी को अनुपस्थित करें, जो सभी "सी ++" को फिर से शुरू करने पर मुझे बताता है कि यह व्यक्ति "हैलो, वर्ल्ड!" प्राप्त करने के लिए पर्याप्त सी जानता है। चल रहा है और जानता है कि अधिकांश C प्रोग्राम C ++ में संकलित होंगे।

यह देखते हुए, मुझे यह जांच करने की आवश्यकता है कि साक्षात्कार पर थोड़ा सा। मैं शायद "हां / नहीं" पूछकर ऐसा नहीं करूंगा "क्या आप अंतर जानते हैं?" प्रश्न, संक्षेप में क्योंकि इसका एक स्पष्ट "सही" उत्तर है। मैं शायद उम्मीदवार से पूछूंगा कि उसे कौन सी भाषा बेहतर लगी, क्यों, और अगर उसे कोई फायदा नहीं हुआ, तो उसे नहीं लेना चाहिए।


0

उत्तर

हाँ, इसका सामान्य। मैंने स्वयं, सहकर्मियों या तीसरे पक्ष के पुस्तकालयों के कोड में इस स्थिति को देखा है।

स्वयं, उदाहरण के लिए, कभी-कभी अन्य प्रोग्रामिंग भाषाओं या प्रोग्रामिंग फ्रेमवर्क के साथ काम करते हैं, और "शुद्ध c" या "c ++" पुस्तकालयों से लिंक या अपडेट करना पड़ता है।

मुझे सिर्फ कुछ "प्योर सी" कोड को संशोधित करने की समस्या थी। और "नए" और "हटाएं" मेमोरी आवंटन कार्यों का उपयोग करके, जो "सी ++" हैं। बाकी कोड ऑब्जेक्ट ओरिएंटेड नहीं था

संकलक C ++ था। बाद में, मैंने एक और संकलक पर मुकदमा दायर किया, और त्रुटि की खोज की।

बक्शीश

अगर कोई लिखित, मौखिक या लिखित परीक्षा या वेब ऑनलाइन टेस्ट में पूछे:

"क्या आप C या C ++ के बीच अंतर जानते हैं"

और आप "हां" या "नहीं" का जवाब देते हैं।

वे वास्तव में मतलब है:

"क्या आप सी या सी ++ के बीच का अंतर जानते हैं, अगर आप कृपया मुझे बताएं?"

तो, आपको जवाब देना होगा:

"हाँ। इसका अंतर यह है कि C ++ इसकी ऑब्जेक्ट ओरिएंटेड है, हालाँकि, आप बैकग्राउंड कम्पैटिबिलिटी के लिए C ++ प्रोग्राम के अंदर प्योर सी का उपयोग कर सकते हैं।"

कभी-कभी, वे आपसे नहीं पूछेंगे "यदि आप कृपया मुझे बताएं", और वे मान लेंगे कि आपको नहीं पता है। बस "हां", या "नहीं" का जवाब न दें।


2
खैर, मुझे नहीं लगता कि यह जवाब पूरी तरह से सही है। सही उत्तर यह है कि C ++ में ऑब्जेक्ट ओरिएंटेड कोड के लिए मजबूत समर्थन है। इसकी आवश्यकता नहीं है। (पहली जगह में इस भ्रम का स्रोत क्या है।)
रोबोट

इसके अलावा "आप C ++ प्रोग्राम के अंदर Pure C का उपयोग कर सकते हैं" का अर्थ कुछ ऐसा हो सकता है जैसे "C ++ C का सुपरसेट है, अर्थात कोई भी C मान्य प्रोग्राम भी एक मान्य C ++ प्रोग्राम है" (गलत)। या इसका मतलब हो सकता है "आप C ++ प्रोग्राम्स को C लाइब्रेरीज़ से लिंक कर सकते हैं" (सही है, लेकिन ज्यादातर लैंग्वेजेज C लाइब्रेरियों से या किसी और तरह से लिंक कर सकते हैं।) आपको एक वास्तविक इंटरव्यू में बहुत अधिक सटीक होना चाहिए।
निकी

-2

संपादित करें

एक बात के रूप में, ध्यान दें कि यह उत्तर यह घोषित करने के लिए नहीं है कि कोई मतभेद नहीं हैं या कि मैं मतभेदों को जानने के लिए प्रोफेसर हूं, या यहां तक ​​कि मैं "हैलो वर्ल्ड" से या तो सी या सी ++ में जानता हूं। यह संदर्भ की शर्तों को तैयार करके प्रश्न का उत्तर है, यह इंगित करता है कि बहुत से लोग प्राथमिक अंतर जानते हैं (जैसे +कि इसके नाम में कुछ वर्ण हैं) और बहुत कम लोग सभी या यहां तक ​​कि अधिकांश मतभेदों को भी जानते होंगे।


यह निर्भर करता है कि आपको 'प्रोग्रामर' से क्या मतलब है और 'अंतर' से आपका क्या मतलब है।

मैं एक 'प्रोग्रामर' हूं (हालांकि मैं खुद को एक डेवलपर कहता हूं) और मैं सी और सी ++ के बीच कोई वास्तविक अंतर देने के लिए संघर्ष करूंगा। अगर दबाया जाता तो मैं शायद कहता कि C ++ C का सुपरसेट है जिसमें नेमस्पेस और इनहेरिटेंस है; स्मृति से निपटने के विभिन्न तरीके। मैं कुछ बग्स को पैच करना या आपके मौजूदा कार्यक्रम में कुछ बदलाव करना जानता हूं, लेकिन मैं सी या सी ++ में एक साधारण उपयोगिता से अधिक कुछ भी लिखने की कल्पना नहीं कर सकता। मैं इसके द्वारा प्राप्त करने के लिए पर्याप्त जानता हूं, लेकिन मैं खुद को उन भाषाओं में से "जानने" के रूप में चित्रित नहीं करता हूं।

मैं अन्य 'प्रोग्रामर्स' (भी डेवलपर्स) को जानता हूं जो आपको जावा और फोरट्रान, या जावास्क्रिप्ट और पास्कल के बीच का अंतर भी नहीं बताएंगे। वे जो करते हैं उसमें अच्छे हैं और वे प्रक्रियात्मक भाषा नहीं करते हैं।

फिर लाखों औसत दर्जे के प्रोग्रामर हैं जो हर दिन उनके साथ काम करने वाली एकल भाषा को बमुश्किल जानते हैं।

Is अंतर ’शब्द अस्पष्ट है। मैंने बताया है कि मैं ऊपर दिए गए कुछ अंतरों के रूप में क्या देखता हूं, लेकिन मुझे पता है कि वे निश्चित और पूर्ण नहीं हैं। बहुत कम लोग हर अंतर को जानने जा रहे हैं - ऑब्जेक्ट ओरिएंटेशन के लिए बहुत अधिक लोग कुछ अस्पष्ट उत्तर देने में सक्षम होने जा रहे हैं (जैसा कि मेरे पास है)।


5
"मैं सी और सी ++ के बीच कोई वास्तविक अंतर देने के लिए संघर्ष करूंगा।" आप निश्चित रूप से C ++ प्रोग्रामर नहीं हैं। कृप्या?
sbi

2
C और C ++ हैं बेहद विविध भाषाओं में कोडित बेहद अलग अलग तरीकों से। आप स्पष्ट रूप से उन्हें नहीं जानते।
डेडएमजी

@sbi "मैं खुद को उन भाषाओं में से" जानने "के रूप में चित्रित नहीं करता।" मैं आपको अपने लिए यह तय करने देता हूँ।
कर्क ब्रॉडहर्स्ट

चढ़ाव पर कोई प्रतिक्रिया? क्या इसलिए कि मुझे दोनों में अंतर नहीं पता है? मुझे लगता है कि मुझे इस सवाल का जवाब देने से अयोग्य घोषित नहीं होगा।
कर्क ब्रॉडहर्स्ट

1
@KirkBroadhurst: मुझे लगता है कि मैंने संकेत दिया कि आपके उत्तर के किस हिस्से को मैंने काफी नापसंद किया है, और उस टिप्पणी को पांच बार उतारा गया, जितनी बार आप उसके बाद नीचे गए थे, इसलिए मुझे यकीन नहीं है कि आप किस स्पष्टीकरण के बाद हैं। हालांकि, विस्तृत करने के लिए: "अंतर" शब्द यहां पर्याप्त है, क्योंकि C और C ++ केवल सतही वाक्यविन्यास समानताएं साझा करते हैं, और, इसके अलावा, बहुत अलग भाषाएं हैं। योग्यता के लिए: मुझे नहीं लगता कि यहां जवाब देने के लिए एक योग्यता की आवश्यकता है, लेकिन जब एक जवाब इस तरह से गलत है, तो यह योग्यता के अप्रासंगिक हो जाएगा।
sbi

-3

क्या प्रोग्रामर के लिए C और C ++ के बीच का अंतर नहीं जानना आम है?

बीस वर्ष पूर्व? हाँ।

आज? इतना नहीं।

इसका कारण यह है क्योंकि प्रोग्रामिंग परिदृश्य एक बड़े पैमाने पर बदल गया है। आज के कई कार्यक्रम वेब आधारित हैं; यहां तक ​​कि डेस्कटॉप के लिए लिखे गए प्रोग्रामों को C या C ++ की तुलना में उच्च-स्तरीय भाषा में लिखा जा सकता है। जैसे कि, जब तक आप एक प्रोग्रामर नहीं हैं जो ओएस कोड लिखते हैं, तो आप दोनों में से किसी भी भाषा के बारे में ज्यादा नहीं जानते होंगे।

एक साक्षात्कारकर्ता इस सवाल को एक साक्षात्कार में पूछ सकता है कि आप प्रोग्रामिंग की बुनियादी बातों के बारे में कितना जानते हैं; यदि आप C और C ++ के बीच अंतर जानते हैं, तो आप संभवतः यह जानते हैं कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग क्या है, आप शायद पुस्तकालयों और संकलकों को समझते हैं, आप मेमोरी फ़ंक्शंस, संदर्भों, बिंदुओं को समझते हैं .... कई चीजें जो आज की प्रोग्रामिंग भाषाओं को प्रभावित करती हैं । मैं C ++ का उपयोग नहीं करता (और मैं वास्तव में यह नहीं कह सकता कि मैं किसी भी भाषा में एक उत्कृष्ट प्रोग्रामर हूं; ज्ञान समय के साथ आएगा) लेकिन मैं कह सकता हूं कि C ++ के साथ मेरे अनुभव ने मुझे निश्चित रूप से एक बेहतर प्रोग्रामर बनाया है।


8
दूसरे तरीके से कहा होगा। मैं 5 से 10 साल पहले की तुलना में अब अधिक भ्रमित लोगों को देखता हूं।
जाइलम ha

@ हेल्मे पीछे मुड़कर देखें, मुझे लगता है कि मेरा मतलब दूसरे तरीके से कहने का है।
लंचमीट 317
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.