आज C ++ की क्या भूमिका है?


41

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

दूसरे शब्दों में, मुझे एक सफल C ++ प्रोग्रामर बनने के लिए क्या सीखना चाहिए?

वर्तमान में मैं जावा को सिर्फ इसलिए सीख रहा हूं क्योंकि मुझे यह स्पष्ट नहीं है कि आज C ++ किस क्षेत्र में उपयोगी हो सकती है, लेकिन मुझे स्पष्ट रूप से पता है कि मैं जावा प्रोग्रामर के रूप में किस तरह का काम करूंगा। लेकिन मुझे अभी भी उम्मीद है कि C ++ मृत नहीं है।


2
यह मेरा नजरिया है। वास्तविक समय की स्थिति (और वीडियोगेम) में C ++ बहुत उपयोगी है। मैं भी प्रदर्शन कारणों के लिए डेस्कटॉप अनुप्रयोगों के लिए सी + + (क्यूटी के बारे में मत भूलना) का उपयोग करता हूं।
होसोमकी

1
@stign IMO यह संभावना है कि यह अंततः मर जाएगा क्योंकि संभवतः एक समय आएगा जब सभी भाषाएँ आज अप्रचलित हैं (शायद हार्डवेयर में बड़े पैमाने पर बदलाव के कारण इसका उपयोग किया जा रहा है)।
केनेथ

17
C ++ मृत से दूर है (मैं हर दिन इसमें नया कोड लिखता हूं), और अगर COBOL कोई संकेत है, तो मुझे आने वाले कई, कई वर्षों तक काम करना होगा।
माइकल कोहेन

2
प्रोग्रामिंग लैंग्वेज बीकन पर एक नज़र डालें और अपना निष्कर्ष निकालें: lextrait.com/vincent/implementations.html
Nemanja Trifunovic

1
हाल ही में मैंने माइक्रोसॉफ्ट के चैनल 9 पर कुछ दिलचस्प वीडियो देखे हैं । Microsoft ने बाजार अनुसंधान पर लाखों खर्च किए हैं और अपने शोध के आधार पर यह C ++ पुनर्जागरण की बात कर रहा है। देखें इस वीडियो
ग्रुकस

जवाबों:


57

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

यही कारण है कि C ++ का उपयोग वित्त, वीडियो गेम, उच्च-प्रदर्शन एम्बेडेड और रीयल-टाइम सिस्टम, परिवहन, निर्माण, और अन्य उद्योगों में किया जाता है जहां नियतत्व और परिशुद्धता महत्वपूर्ण हैं। कोई विकल्प नहीं हैं।

दी, इसका उपयोग इससे कहीं अधिक कार्यों के लिए किया गया था, और उन कार्यों को C # और पायथन और अन्य अधिक उपयुक्त भाषाओं के लिए खो दिया जा रहा है, लेकिन यह इसके मूल स्थान को प्रभावित नहीं कर रहा है।


20
कोई भी जो C ++ में Malloc का उपयोग करता है, मैं उनके सिर को किसी कठोर वस्तु से मारना चाहता हूं। इसके अलावा, newC ++ में ऑपरेटर की कम ज्ञात विशेषता है जिसे प्लेसमेंट कहा जाता है। यह वर्तमान में कब्जे वाले मेमोरी स्पेस का पुन: उपयोग करने की अनुमति देता है। इसलिए अगर कोई चाहते थे कि वे (या कम से कम) विखंडन से बच सकें, तो सिद्धांत रूप में वे ऐसा कर सकते हैं। और पूर्वानुमेय वही नियतात्मक नहीं है।
तमसे सजेलेई

4
@ अपाला C ++ में संदर्भ गिनती भी है, लेकिन यह वस्तु जीवनकाल प्रबंधन के मामले में SBRM से बहुत खराब है। मैं केवल हार्ड-आरटी निर्धारकवाद के बारे में बात नहीं कर रहा हूं, मैं ऑब्जेक्ट मॉडल के निर्धारक व्यवहार के बारे में बात कर रहा हूं।
क्यूबाई

4
जब मैंने C ++ सीखा, तो RAII व्यापक रूप से ज्ञात कण नहीं था; मैंने नया और डिलीट और ब्रेन-आधारित पॉइंटर मैनेजमेंट सीखा। इसलिए मुझे नहीं लगता कि आप इसे "अवधारणा के आसपास निर्मित" होने के रूप में चिह्नित कर सकते हैं। आज उपयोग की जाने वाली लाइब्रेरी और अन्य समर्थन संरचनाएं हो सकती हैं, लेकिन मूल भाषा या वाक्य रचना नहीं।
jprete

7
@jprete यह सच है कि C ++ की कई ताकतें डिज़ाइन के बजाय खोजी गईं। यह पोस्ट 2005 के बाद की भाषा के बारे में है।
क्यूबाई

5
RAII को C ++ में डिज़ाइन किया गया था । लेकिन ज्यादातर C ++ प्रोग्रामर सिर्फ C लिखते हुए, मॉलॉक को नए और फ्री के साथ डिलीट करते रहे।
केविन क्लाइन

40

C और C ++ के लिए कुछ बाज़ार हैं (मेरी सीमित सीमित समझ के लिए)

  1. मौजूदा कोड। C और C ++ में कुछ सबसे बड़े मौजूदा कोडबेस हैं। इस आकार का कोड केवल इसलिए नहीं फेंका जा सकता है क्योंकि "अगली गर्म नई भाषा" चारों ओर आ गई है। सी बाइंडिंग अधिकांश प्लेटफार्मों पर अंतर-लैंगगेज इंटरैक्शन के मानक हैं, इसलिए सी या सी ++ में लेखक (बहुत कम से कम) रैपर लाइब्रेरी में सक्षम होना उपयोगी है।
  2. उच्च प्रदर्शन अनुप्रयोगों (जैसे उच्च आवृत्ति वित्त)। C और C ++ अभी भी अधिकांश अन्य प्रोग्रामिंग भाषाओं की तुलना में बेहतर समग्र प्रदर्शन प्राप्त करते हैं। C ++ में सबसे महत्वपूर्ण, एक अक्सर संकलक जैसी चीजों के साथ सार का निर्माण होता है, जो रनटाइम से संकलित करने के लिए संकलित समय को संकलित करता है (आपके समग्र एप्लिकेशन को तेज बनाता है)।
  3. (2 के समान) कम विलंबता अनुप्रयोग। सीएलआर या जेवीएम पर चलने वाली भाषाएं अक्सर एप्लिकेशन के आधार पर सी ++ के रूप में लगभग तेज हो सकती हैं, लेकिन किसी को अभी भी अपने प्रोग्राम को निष्पादित करने से पहले सीएलआर या जेवीएम को स्वयं मेमोरी में लोड करने की आवश्यकता होती है। यदि आपके पास कठोर स्टार्टअप आवश्यकताएं हैं, तो यह महत्वपूर्ण है। संस्करण से टिप्पणी : उस मामले के लिए, किसी भी विवरण की कठिन विलंबता आवश्यकताएं यहां ध्यान दें हैं। आभासी मशीनों पर चलने वाली भाषा शायद ही कभी कठिन समय सीमा प्रदान करती हैं क्योंकि उदाहरण के लिए कचरा संग्रह एक नियतात्मक प्रक्रिया नहीं है।
  4. अंत: स्थापित प्रणाली। कुछ एम्बेडेड सिस्टम में JVM (Google का Android) (ठीक है, यह वास्तव में JVM नहीं है, लेकिन यह नज़दीकी है), RIM का ब्लैकबेरी) या CLR (विंडोज़ फोन) चलाने के लिए हार्डवेयर है, लेकिन अधिकांश एम्बेडेड सिस्टम में पावर नहीं है ऐसी भाषाएं जिन्हें C या C ++ के लिए आवश्यक से अधिक रनटाइम समर्थन की आवश्यकता होती है (जो कि किसी रनटाइम समर्थन के बगल में नहीं है)।
  5. तैनाती के लिए विवश अनुप्रयोग। कभी-कभी जेवीएम या सीएलआर की स्थापना की आवश्यकता अधिक होती है, यदि आपका पूरा कार्यक्रम केवल कुछ सौ केबी का हो। (जैसे मैं जिन कार्यक्रमों पर काम करता हूं उनमें से अधिकांश को किसी भी तरह के इंस्टॉलर या उस जैसी किसी भी चीज के बिना एक फाइल के रूप में तैनात किया जाना चाहिए .EXE, इसके लिए कोई विकल्प नहीं हैं)

2
स्टार्टअप लेटेंसी केवल एक ही तरह की लेटेंसी नहीं है: इससे संबंधित कठिन समय की आवश्यकताएं बहुत बड़ी डीलब्रेकर हो सकती हैं।
ग्रेफेड

1
ऐसी किसी भी चीज़ में जोड़ें जहाँ आप किसी विशेष निर्माता (C # या ऑब्जेक्टिव-सी) में बंद नहीं होना चाहते हैं या नहीं चाहते हैं कि आपकी भाषा मुकदमों (जावा) के एक समूह में गायब हो जाए
मार्टिन बेकेट

@ ग्रेफडे: यह उस तरह का है जिसका मैं मतलब था (2), लेकिन मैं मानता हूं कि यह स्पष्ट नहीं है। संपादित। @ मर्टिन: जबकि मुझे लगता है कि C ++ के लिए यह एक अच्छी ताकत है, मुझे नहीं लगता कि यह इस सवाल का जवाब देता है - जो कि C ++ आमतौर पर किस बाजार में है। इसके अलावा, मुझे नहीं लगता कि मैं एक विशेष निर्माता को C # लॉक करूंगा जब एक <S> BSD </ S> (OOPS: यह LGPL है) CLR का लाइसेंस प्राप्त संस्करण मौजूद है (मोनो)।
बिली ओनेल

1
इसके अलावा 5. ऑपरेटिंग सिस्टम और कोर फ्रेमवर्क। आप वर्चुअल मशीन में बहुत कुछ कर सकते हैं, लेकिन वर्चुअल मशीन को अभी भी C और / या C ++ में लागू किया जाना है।
Jan Hudec

1
@ जान: हाँ यह होगा। प्रतिबिंब और दोस्तों जैसी चीजें समस्याओं को 2-4 कर देती हैं। केवल उपसमुच्चय आपको वास्तव में कचरा कलेक्टर लिखने की आवश्यकता होगी कुछ वस्तु होगी जो भौतिक स्मृति का प्रतिनिधित्व करती है।
बिली ओनेल

3

C ++ अभी भी बहुत उपयोगी है और किसी भी तरह से मृत नहीं है। यदि आप कुछ अलग प्रोग्रामिंग भाषाओं के बीच एक गंभीर तुलना पढ़ना चाहते हैं , तो C, C ++, Java, Perl, Python, Rexx और Tcl की एक अनुभवजन्य तुलना करें । यह सबसे अधिक अद्यतन नहीं है, लेकिन मेरा मानना ​​है कि अधिकांश चीजें अभी भी पकड़ में हैं।

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