उद्योग ने C से C ++ में स्विच क्यों किया है? [बन्द है]


19

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

मेरा प्रश्न सी ++ के लिए एक बड़े पैमाने पर स्विच के बारे में है जो कयामत 3 के साथ पूरा हुआ था।

मेरे लिए दिलचस्प बात यह है कि इस मील के पत्थर से पहले, अधिकांश खेल इंजन और खेल स्वयं सी में लिखे गए थे, जैसे कि यह क्वेक युग के बाद से था । यह भी ध्यान रखना दिलचस्प है कि आईडी सॉफ्टवेयर C ++ में IdTech 4 के लिए कोडबेस को पूरी तरह से फिर से लिखने का फैसला करता है, काम की एक बड़ी मात्रा जिसे ईमानदारी से मैं कारणों की एक अच्छी सूची के बिना नहीं समझ सकता।

मैं डूम 3 पर ध्यान केंद्रित कर रहा हूं क्योंकि मैं मुख्य रूप से ओपनग्लैंड की दुनिया में दिलचस्पी रखता हूं और अपनी यात्रा में मैं इस विषय पर केंद्रित रहने की कोशिश करता हूं, इसलिए मैं इस बारे में बहुत कुछ पढ़ता हूं, लेकिन मुझे लगता है कि इस तरह का एक प्रश्न रेंडर-एपीआई हो सकता है -बहुत अधिक समस्याओं के बिना।

क्यों एक निश्चित समय पर उद्योग ने C ++ में बड़े पैमाने पर स्विच किया? आईडी बनाने के विकल्प के कारण क्या हैं?

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

उदाहरण के लिए एंड्रॉइड के लिए NDK में अभी भी सभी नवीनतम और सबसे बड़ी विशेषताओं के साथ एक अच्छा C ++ समर्थन (r8b रिलीज़ के साथ) नहीं है, और यह दुनिया में सबसे लोकप्रिय मोबाइल ओएस के लिए मूल टूलकिट है!

अगर मैंने एक आधुनिक C ++ में अपना कोड लिखा होता तो मैं शायद अब दर्द में होता क्योंकि दुनिया में सबसे लोकप्रिय OS में से एक मेरे लिए ऑफ-लिमिट होगा। और एंड्रॉइड की तरह, कई अन्य कंपाइलर भी इतने महान नहीं हैं।

मुझे सी ++ कोड लिखना चाहिए जो सी ++ संस्करण का संदर्भ देता है जो 2-3 रिलीज पुराना है?


1
मुझे इस पर शक है कि C ++ C का एक अर्ध विस्तार है। लोगों ने C को C ++ की विशेषताओं जैसे कि std :: वेक्टर के साथ लिखना शुरू किया, वहां से C ++ की जगह C को पढ़ाया गया और इस तरह लोगों ने पूर्ण विकसित C ++ लिखना शुरू कर दिया।
एपीआई-जानवर

1
एक बड़े अनुप्रयोग को विकसित करते समय, सी बनाम सी ++ ? OOP एक महान प्रतिमान है और .. C ++ इसका समर्थन करता है। यदि आप C में कोई गेम लिखने जा रहे हैं, तो डेटा ओरिएंटेड डिज़ाइन पर विचार करें । अन्यथा, आइए इस पर विचार करें कि उद्योग के सभी प्रमुख खिलाड़ी C ++ का उपयोग क्यों करते हैं। सॉफ्टवेयर इंजीनियरिंग, यह वित्तीय अनुप्रयोगों या अवकाश वाले लोगों के लिए हो, ओओपी प्रतिमान के कंधों पर और वास्तुशिल्प और डिजाइन पैटर्न के लिए प्रस्तुत करता है। सीधे शब्दों में कहें, C बड़ी तस्वीर पेश नहीं कर सकता है जो एनकैप्सुलेशन आपको प्रदान करती है। क्या सी में लिखे गए किसी भी बड़े सॉफ्टवेयर के आधुनिक टुकड़े हैं? शायद गुठली और एम्बेडेड सिस्टम।
टेओड्रन

@teodron 1) मुझे एक अच्छा निष्पादन योग्य उत्पादन करना है, मैं इस भाषा के बारे में परवाह करता हूं जैसे कि मैं एक महत्वपूर्ण संपत्ति के बारे में परवाह करता हूं, लेकिन यह सब कुछ नहीं है और यह नहीं है कि मैं क्या बेचता हूं 2) एनकैप्सुलेशन यह प्रदर्शन के लिए अच्छा नहीं है, अगर कोई चाहता है मुझे समझाने के लिए सी ++ दुनिया छोड़ दें, इनकैप्सुलेशन इसके लिए अच्छे विषय में से एक है।
user827992

3
" मेरे लिए दिलचस्प बात यह है कि इस मील के पत्थर से पहले, अधिकांश खेल इंजन और खेल सी में ही लिखे गए थे, जैसे कि यह क्वेक युग के बाद से था। " मैं उसके लिए कुछ सबूत देखना चाहूंगा। इसके अलावा ईद-सॉफ्टवेयर के ओपन-सोर्स इंजन। वे वीडियोगेम उद्योग के पूरे नहीं हैं।
निकोल बोलस

@NicolBolas मैं कारण बता रहा था कि मैं आईडी के बारे में क्यों बात कर रहा था, कृपया पूरे प्रश्न का अर्थ निकालें।
user827992

जवाबों:


28

C ++ सब कुछ करता है C करता है। आप उन मामलों में C और C ++ को तुच्छ रूप से मिला सकते हैं जहां C के लाभ C ++ से अधिक हैं। यह C ++ का एक बहुत ही जानबूझकर डिजाइन निर्णय है।

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

वर्चुअल फ़ंक्शंस ग़ैर-वर्चुअल फ़ंक्शंस की तुलना में धीमे होते हैं। हालाँकि, आपको वर्चुअल फ़ंक्शंस का विकल्प चुनना होगा, और एक सक्षम प्रोग्रामर ऐसा तभी करता है जब वे फायदेमंद हों। सी प्रोग्रामर के पास फ़ंक्शन पॉइंटर्स होते हैं और अक्सर उन संरचनाओं के संग्रह को संग्रहीत करते हैं जो अन्य संरचनाओं द्वारा संदर्भित होते हैं; दूसरे शब्दों में, वे आभासी कार्य तालिकाओं के समान सटीक कार्य को फिर से बनाने के लिए अतिरिक्त कार्य करते हैं। ऐसे मामलों में जहां केवल एक ही फ़ंक्शन पॉइंटर की आवश्यकता होती है और किसी तालिका की आवश्यकता नहीं होती है, सी ++ अभी भी पूरी तरह से अनुमति देता है और सी के बराबर है। एक आधुनिक संकलक के साथ, सी ++ केवल विशिष्ट मामलों में सी की तुलना में धीमा है जो प्रोग्रामर एक विशेषता में चयन कर रहा है। । साथ ही, मॉडेम CPU पर वर्चुअल फ़ंक्शन ओवरहेड बहुत छोटा होता है। हार्डवेयर आज C ++ के उपयोग पैटर्न के लिए डिज़ाइन किया गया है, और उच्च स्तर की व्याख्या किए गए लैंगिएज की जरूरतों के लिए भी तेजी से डिज़ाइन किया गया है।

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

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

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

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


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

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

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

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

1
@ डैनियल कर्ल्सन: पर्याप्त रूप से, मैं सिर्फ पांडित्यपूर्ण हूं। माफ़ करना। उस नस में, हालांकि ... सी ++ कुछ भी नहीं करता है जो सी के मुकाबले अनुकूलन को कठिन बना देता है। :) मेरा मतलब है, निश्चित रूप से, यदि आप एसटीएल का उपयोग करते हैं तो आप एसटीएल क्या करते हैं, पर सीमित हैं, लेकिन क्यों का एक बड़ा हिस्सा हम सी ++ के बजाय सी # या जावा क्योंकि हम सिर्फ पूरे एसटीएल reimplement या कच्चे सरणियों या इनलाइन कोडांतरक या (SSE intrinsics) की तरह भाषा एक्सटेंशन में भी क्रैंक का उपयोग कर सकते है, आदि का उपयोग
शॉन Middleditch

12

क्यों एक निश्चित समय पर उद्योग ने C ++ में बड़े पैमाने पर स्विच किया? आईडी बनाने के विकल्प के कारण क्या हैं?

आईडी सॉफ्टवेयर है नहीं "उद्योग"। वे एक कंपनी हैं। हालांकि वे प्रभावशाली हो सकते हैं, वे हर कोई नहीं हैं।

मैंने कुछ गेम इंजनों पर काम किया है, जो 1999 की तारीख से पहले के हैं, और उन्होंने C ++ का उपयोग किया।

C ++ को "उस समय के आसपास" अपनाने के सिद्धांत कारण हैं:

  1. इसे मानकीकृत किया गया । C ++ 98 का ​​नाम इसलिए रखा गया है क्योंकि इसे 1998 में ISO मानक के रूप में जारी किया गया था। तब तक, C ++ की कई बोलियाँ बिना किसी स्पष्ट विचार के थीं, जो "वास्तविक" या "सही" थीं। एक बार जब यह मानकीकृत हो गया, और संकलक ने मानक को लागू करना शुरू कर दिया, तो खेल डेवलपर्स वास्तविक मानक पर भरोसा कर सकते थे।

  2. पुराने मज़ाक को याद रखें: एक आदमी एक डॉक्टर के कार्यालय में जाता है और कहता है, "जब मैं इस तरह से हाथ बढ़ाता हूं तो दर्द होता है।" तो डॉक्टर कहते हैं, "तो अपने हाथ को ऐसे मत बढ़ाओ।"

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

    वास्तव में, इसने बहुत सारे C ++ गेम्स को मुहावरेदार C ++ (कम से कम, आधुनिक मुहावरेदार C ++) नहीं, बल्कि "सी विद क्लासेस" कहा। और यह C ++ प्रोग्राम करने के लिए एक बिल्कुल कार्यात्मक तरीका है। नर्क, बस typedef structजब आप एक नया प्रकार बनाते हैं तो एक लाभ नहीं है।

    C ++ सुविधाओं का एक बड़ा बैग है, और आप जो चाहें उसे चुन सकते हैं।

उदाहरण के लिए एंड्रॉइड के लिए NDK में अभी भी सभी नवीनतम और सबसे बड़ी विशेषताओं के साथ एक अच्छा C ++ समर्थन (r8b रिलीज़ के साथ) नहीं है, और यह दुनिया में सबसे लोकप्रिय मोबाइल ओएस के लिए मूल टूलकिट है!

आपकी बात? Google NDK का उपयोग करने वाले लोगों को मुश्किल से सहन करता है; यह स्पष्ट है कि वे चाहते हैं कि हर कोई जावा का उपयोग करे। एनडीके का एकमात्र कारण मौजूद है क्योंकि कुछ महत्वपूर्ण डेवलपर्स हैं जो बस इसके बिना मंच का उपयोग नहीं करेंगे। इस प्रकार, एनडीके उन्हें और उनकी सुविधा की जरूरत को पूरा करने के लिए मौजूद है।

हां, C ++ लागू करने के लिए एक बड़ा, अधिक जटिल विनिर्देश है। तो जावा है। तो सी के अलावा कोई भी भाषा है।

इसके अलावा, "सभी नवीनतम और सबसे बड़ी विशेषताओं" का क्या मतलब है? यदि आप C ++ 11 सामान के बारे में बात कर रहे हैं, ठीक है, कोई भी पूरी तरह से लागू नहीं करता है कि अभी तक। कल्पना अभी मुश्किल से एक साल की है। इसके अलावा, मुझे नहीं पता कि NDK C11 का समर्थन करता है या नहीं; हां, सी में "नवीनतम और सबसे बड़ी विशेषताएं" भी हैं जो हर जगह समर्थित नहीं हैं।

जो एक महत्वपूर्ण बिंदु लाता है: यदि आप चाहते हैं कि आपका शुद्ध-सी एप्लिकेशन विजुअल स्टूडियो पर संकलित हो, तो उसे C89 के अनुरूप होना चाहिए, और इससे अधिक कुछ भी नहीं होना चाहिए। इसलिए सी के साथ विखंडन पहले से मौजूद है। कुछ प्लेटफ़ॉर्म केवल C89 का समर्थन करते हैं। कुछ C99 का समर्थन करते हैं। कुछ सी 11 का समर्थन करते हैं, अलग-अलग डिग्री के लिए। आदि।

यदि आप C का उपयोग करना चाहते हैं, तो C का उपयोग करें । यह तथ्य कि अन्य लोगों ने यह पसंद नहीं किया, इसका मतलब यह नहीं है कि आपकी पसंद गलत है या उनकी पसंद गलत है। आपको उन्हें अपने आप को सही ठहराने की जरूरत नहीं है, और उन्हें आपको खुद को सही ठहराने की जरूरत नहीं है।


2
मुझे नहीं लगता कि Google मुश्किल से एनडीके का उपयोग करता है, क्योंकि एनडीके का विकास जारी है और एंड्रॉइड के लिए कई रिलीज़ उपलब्ध हैं, भले ही Google सी / सी ++ से नफरत करता हो, मुझे नहीं लगता कि मैं इसे प्राप्त कर सकता हूं। जावा में मेरे खेल के लिए अच्छे स्तर का प्रदर्शन या बाजार में सबसे महत्वपूर्ण खिलाड़ी सिर्फ जावा और एंड्रॉइड के लिए अपने कोड को फिर से लिख सकते हैं, संभवतः Google के लिए एक आवश्यक बुराई है, मुझे नहीं पता, मेरी बात एक व्यापक के बारे में पूछना है सी बनाम सी ++ बनाम जावा बनाम दुनिया के बारे में एक लंगड़ा सवाल नहीं, मैं भाषा से एक और अधिक सामान्यीकृत उत्तर की तलाश में रहा
हूं

संकलक को सभी भाषा विशेषताओं पर विचार करते हुए, आपका उत्तर भी मुझे बाजार पर सी कंपाइलरों की उपलब्धता के बारे में मेरे प्रारंभिक बिंदु पर जोर देने की अनुमति देता है, विंडोज पर मेरे पास लगभग सभी सॉफ्टवेयर हाउस हैं जो अपने स्वयं के संकलक के साथ एक कंपाइलर का उत्पादन करते हैं, मेरे पास भी है MinGW जैसे अन्य मुफ्त विकल्प। वास्तविक समस्या जो मुझे सी के साथ मिली है, डेटा संरचनाओं, कंटेनरों के लिए मूल समर्थन की कमी है, सी ++ में आप अंदाजा लगा सकते हैं कि आप किसी विशेष कंटेनर या किसी विशेष स्टेटमेंट को कितना खर्च करते हैं,
user827992

सी में शायद कोड जो एक ही काम करता है उसके पास केवल 1 कार्यान्वयन से अधिक है, सी ++ में भी संकलक इसके परिणामस्वरूप अधिक अनुकूलन कर सकता है। मुझे संभवतः C ++ का अधिक अध्ययन करना चाहिए, लेकिन मुझे लगता है कि मैं कुछ विशेष विशेषताओं के लिए केवल एक अच्छी सहायता के लिए C ++ पर स्विच करूंगा, न कि केवल भाषा के लिए।
user827992

7

यह भी ध्यान रखना दिलचस्प है कि आईडी सॉफ्टवेयर C ++ में IdTech 4 के लिए कोडबेस को पूरी तरह से फिर से लिखने का फैसला करता है, काम की एक बड़ी मात्रा जिसे ईमानदारी से मैं कारणों की एक अच्छी सूची के बिना नहीं समझ सकता।

उनके लिए यह बहुत आम हो गया है कि वे हर रिलीज़ के लिए पूरे इंजन को फिर से लिखें (कम से कम हाल तक - मुझे पिछले कुछ मैचों के बारे में ज़्यादा जानकारी नहीं है), और चूंकि सी ++ लोकप्रियता में बढ़ रहा है, इसलिए यह छड़ी के बजाय इसका उपयोग करने के लिए समझ में आता है C. समय के साथ कम और कम लोग C के साथ सक्षम होने जा रहे हैं।

क्यों एक निश्चित समय पर उद्योग ने C ++ में बड़े पैमाने पर स्विच किया?

क्योंकि यह आपको सी कोड के साथ लगभग पूरी तरह से पीछे रहते हुए उच्च स्तर की कार्यक्षमता प्रदान करता है।

आईडी बनाने के विकल्प के कारण क्या हैं?

Google ने आपके लिए इसका उत्तर दिया होगा: http://fabiensanglard.net/doom3/interviews.php

"... आधे प्रोग्रामर्स के पास शुरुआत में C ++ बैकग्राउंड था। मेरे पास C और ऑब्जेक्टिव-सी बैकग्राउंड थी, और मैं" C ++ में स्लाइड करता था "को सिर्फ उस कोड को देखकर देखता था जो C ++ लोग लिख रहे थे। काश मैंने पूरी तरह से शोध करने और भाषा का पता लगाने से पहले इसका उपयोग करने के लिए समय का बजट निर्धारित किया।

आप अभी भी यह बताने में सक्षम हो सकते हैं कि रेंडर कोड को मोटे तौर पर C में विकसित किया गया था, फिर C ++ में छांटा गया।

आज, मुझे दृढ़ता से विश्वास है कि C ++ महत्वपूर्ण प्रदर्शन आवश्यकताओं के साथ बड़ी, बहु-डेवलपर परियोजनाओं के लिए सही भाषा है, और टेक 5 डूम 3 अनुभव के लिए बहुत बेहतर है। "

अगर मैंने एक आधुनिक C ++ में अपना कोड लिखा होता तो मैं शायद अब दर्द में होता क्योंकि दुनिया में सबसे लोकप्रिय OS में से एक मेरे लिए ऑफ-लिमिट होगा।

  1. प्रोग्रामर भविष्य में नहीं देख सकते हैं। उन्हें नहीं पता होगा कि खराब C ++ समर्थन के साथ एक नया प्लेटफॉर्म होगा। एंड्रॉइड 2009 तक ठीक से मौजूद नहीं था। Doom 3 2004 से था।
  2. क्या आपको लगता है कि प्रोग्रामर जो पीसी और कंसोल के लिए अत्याधुनिक 3 डी गेम लिख रहे हैं, उन्हें उम्मीद है कि उनका कोड फोन पर भी चलेगा? पोर्टेबिलिटी की उस डिग्री के लिए निशाना लगाना बहुत दुर्लभ है और अक्सर उपलब्ध शक्ति में भारी अंतर के कारण व्यर्थ है।

मुझे सी ++ कोड लिखना चाहिए जो सी ++ संस्करण का संदर्भ देता है जो 2-3 रिलीज पुराना है?

आप इसकी परवाह क्यों करते हैं? नवीनतम बात का पीछा करते हुए मत फंसो। यदि यह 5 साल पहले काफी अच्छा था, तो यह अब अचानक खराब नहीं होगा।


3

खैर, C ++ 80 के दशक से बाहर है, इसलिए यदि कोई कंपाइलर इसका समर्थन नहीं करता है, तो शायद आपको एक अलग कंपाइलर का उपयोग करना चाहिए। और भी, सी ++ वास्तव में सी की तुलना में बहुत धीमा नहीं है। यह वास्तव में केवल धीमा है यदि आप इसे वर्चुअल फ़ंक्शन और अन्य सार के साथ लोड करते हैं। हालाँकि, C ++ का उपयोग गैर-यूनिक्स दुनिया में आज बहुत किया जाता है क्योंकि इसके लचीलेपन और नए फीचर्स जो C के पास नहीं हैं। C ++ में मॉड्यूलर कोड लिखना C में ऐसा करने से बहुत आसान है और आपको अधिक पोर्टेबल कोड लिखने में मदद करता है। संकलक के विषय पर वापस, मुझे कोई भी संकलक नहीं पता है जो C ++ का समर्थन नहीं करता है (शायद पूरी तरह से C ++ 11 नहीं, लेकिन किसी भी आधे संकलक को C ++ का समर्थन करना चाहिए)।

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