कंपनियां अभी भी Visual Studio के पुराने संस्करणों का उपयोग क्यों करती हैं?


9

मैं समझता हूं कि C ++ का उपयोग क्यों किया जाता है। यह सवाल यह नहीं है।

जब मैं गेम स्थापित करता हूं, तो आमतौर पर स्टीम (इन दिनों मैं केवल स्टीम का उपयोग करता हूं) सी ++ 2005 रनटाइम वितरण योग्य स्थापित करेगा।

मेरा सवाल यह है कि यह मामला क्यों है? 8 साल पहले जारी किया गया रनटाइम अभी भी प्रचलित क्यों है? मेरे द्वारा हाल ही में स्थापित किए गए कुछ खेल थोड़े पुराने हैं, इसलिए कुछ साल देव समय मानकर आप इस मामले को आजमा सकते हैं और उस समय इसका मानक परीक्षण किया गया था।

गेम कंपनियां VC ++ रनटाइम के नए संस्करण का उपयोग क्यों नहीं करती हैं?


1
यह एक जवाब की तलाश में एक समस्या की तरह महसूस नहीं करता है। आप यह क्यों पसंद कर रहे हैं कि यह "पसंदीदा" है?
तेतराद

मुझे लगता है कि आपका प्रश्न वास्तव में है "कंपनियां अभी भी विज़ुअल स्टूडियो के पुराने संस्करणों का उपयोग क्यों करती हैं?" पुनर्वितरण पैकेज वास्तव में क्या है, इसके लिए यहां देखें
बोबोबो

जवाबों:


20

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

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

अधिकांश कॉर्पोरेट इकाइयाँ सॉफ़्टवेयर के किसी भी टुकड़े को अपडेट करने के बारे में बहुत ही रूढ़िवादी हैं, चाहे वह विज़ुअल स्टूडियो, ऑफिस, विंडोज, पेरफोर्स हों। जबकि विज़ुअल स्टूडियो 2005 का उपयोग आज के खेल के लिए बहुत दुर्लभ है, 2008 अभी भी बहुत आम है। बहुत कम लोग 2012 का उपयोग कर रहे हैं। यह बहुत संभव है कि 2012 से आगे कभी भी कोई गड़बड़ नहीं होगी और विजुअल स्टूडियो का अगला लोकप्रिय संस्करण 2013 या 2014 होगा।

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

एक अन्य कारक आज एक्सबॉक्स 360 संगतता है। यदि आप XBox अनुकूलता के लिए विशेष रूप से एक की आवश्यकता है, तो IDE / कंपाइलर के दो संस्करणों को खरीदना और स्थापित करना मूर्खतापूर्ण है। वीएस का कौन सा अगला संस्करण गेम के लिए लोकप्रिय हो जाता है, यह काफी हद तक इस बात पर निर्भर करेगा कि एक्सबॉक्स वन अपने भक्तों के रिलीज संस्करणों के लिए किस कंपाइलर का उपयोग करता है (2012 का उपयोग लॉन्च गेम के लिए उपयोग किए जाने वाले बीटा भक्तों के लिए किया जाता है, लेकिन 2013 में पोस्ट के लिए सड़क की सिफारिश की जा सकती है- लॉन्च खिताब)।

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

void foo(char* name, int length);

और अब प्रदर्शन बी पर विचार करें:

void foo(int length, char* name);

यदि ये सी फ़ंक्शन रनटाइम के दो अलग-अलग संस्करणों में शामिल थे, तो वे दोनों प्रतीक होंगे _fooलेकिन एक का उपयोग करने के लिए संकलित कोड स्पष्ट रूप से दूसरे के लिए काम नहीं करेगा। जबकि संगतता समस्याएं आम तौर पर थोड़ी अधिक शामिल और सूक्ष्म होती हैं, अंतिम परिणाम अभी भी समान है: VS2005 के साथ संकलित कोड में VS2005 से हेडर होगा जो केवल वर्णन करता है कि कैसे VS2005 रनटाइम काम करता है। VS2012 पूरी तरह से अलग रनटाइम को लक्षित करने वाले अलग-अलग हेडर के साथ जहाज।

Microsoft पुराने क्रियाओं को लक्षित करने का समर्थन नहीं करता है क्योंकि वास्तव में यह केवल एक दर्द होगा। उन्हें जहाज चलाना होगा और फिर रनटाइम के अलावा पुराने हेडर को जारी रखना होगा। विंडोज में डीएलएल उपयोग प्रथाओं के रूप में इसके लिए अपेक्षाकृत कम कारण है डेवलपर्स को विभिन्न रनटाइम का उपयोग करके पुस्तकालयों को मिश्रण करने की अनुमति मिलती है। यदि आपके पास VS2012 है, तो आप अभी भी VS2005 के साथ बने पुस्तकालयों के खिलाफ लिंक कर सकते हैं, जब तक कि आप और पुस्तकालय कुछ आसान नियमों का पालन करते हैं।

जीएनयू / लिनक्स जैसे प्लेटफ़ॉर्म इन मुद्दों से बचने के लिए कुछ प्रयास करते हैं, लेकिन कभी-कभी बहुत गहरे स्तर पर उनके माध्यम से चले जाते हैं। मैं अभी भी libc5 को glibc संक्रमण या समय के लगातार libstdc ++ विराम को याद करता हूं (यह एक कारण है कि लिनक्स / UNIX डेवलपर्स वर्षों से C ++ के विषय पर अपेक्षाकृत ठंडे बने हुए हैं)।

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

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


कुछ और कारण: नए संकलक पुराने प्लेटफार्मों के साथ संगतता तोड़ते हैं (जैसे पूर्व अद्यतन 1 VS2012 ने XP का समर्थन नहीं किया ); पुराने कंपाइलरों में अच्छी तरह से समझे जाने वाले कीड़े होते हैं, जबकि नए कंपाइलरों में अज्ञात कीड़े होते हैं (यदि आप अभी भी कंपाइलर्स बग-फ्री होने के भ्रम में हैं, उठो और कॉफी को
सूंघो

1

जहां तक ​​मुझे पता है कि दृश्य स्टूडियो 2008 विंडोज मोबाइल और विंडोज सीई अनुप्रयोगों के निर्माण में सक्षम अंतिम संस्करण है।

मुझे CE उपकरणों पर चलने वाले ऐप्स का समर्थन करने की आवश्यकता है इसलिए VS2008 अभी भी वही है जो मैं उपयोग करता हूं।

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

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