मुझे यह स्वीकार करना चाहिए कि मैं अभी भी मुख्य रूप से Microsoft के कारण pseudo-C89 कोड (पूरी तरह से C99-अनुरूप) नहीं लिखता हूं। मैं विंडोज साइड के लिए MSVC पर बहुत अधिक झुकाव रखता हूं और वे अभी भी पूरी तरह से C99- अनुरूप नहीं हैं, इसके बजाय C ++ 17 और उसके बाद के अपने फोकस के थोक को रखते हैं।
इसके शीर्ष पर मैं सी एसडीके पर काम कर रहा हूं, जिसके खिलाफ बहुत सारे प्लगइन डेवलपर्स अपने प्लगइन विकास के लिए MSVC का उपयोग करते हैं, और कुछ अभी भी MSVC 2010 हैं। इसलिए अभी भी लोकप्रिय कंपाइलर व्यापक रूप से प्लेटफार्मों पर उपयोग किए जा रहे हैं जो इतने विदेशी नहीं हैं (जब तक आप विचार नहीं करते हैं Windows विदेशी) जो अभी तक पूरी तरह से C99 को लागू नहीं करते हैं। जब आप संकलक की सबसे बड़ी श्रेणी के साथ व्यापक संगतता को लक्षित करते हैं (जो कि मुख्य कारणों में से एक है एसडीके सी और सी ++ में नहीं लिखा गया है), तो अभी भी उनमें से कई का व्यापक रूप से उपयोग किया जा रहा है (कम से कम एमएसवीसी) जो समय के पीछे हैं। जब यह सी समर्थन की बात आती है। C99 के बाद से लगभग दो दशक हो गए हैं और अभी भी हमारे पास वीएलएएस नहीं हैं, उदाहरण के लिए, MSVC AFAIK में (MSVC 2017 को अभी तक चेक नहीं किया गया है लेकिन C पर Microsoft का रुख दिया गया है, मुझे संदेह है कि यह C99 के साथ अधिक अनुरूप है) ।
और इसलिए अभी भी दुर्भाग्य से नए संकलक हैं जो वास्तव में अच्छे ऑप्टिमाइज़र और डीबगर्स के साथ काफी अच्छे हैं जो अभी भी पूरी तरह से सी 99-अनुरूप नहीं हैं। बेशक अगर यह इस के लिए नहीं था, मैं C11 भर में कूद जाएगा।
प्लगइन्स और MSVC के साथ स्रोत संगतता के अलावा, अन्य भाषाओं के साथ भी इंटरोप है। कुछ अन्य भाषाएं एक एफएफआई के माध्यम से एसडीके का उपयोग करती हैं, और उनमें से कुछ एफएफआई केवल C89 को समझते हैं। एक dylib से कार्यों को आयात करते समय वे केवल एक साधारण उदाहरण के रूप में समझ नहीं सकते हैं bool
या _Bool
केवल समझ सकते हैं, कह सकते हैं int
।
हां, पक्ष में तर्क पोर्टेबिलिटी है लेकिन सवाल यह है कि क्या वास्तव में गैर-काल्पनिक सिस्टम हैं जो केवल C89 कंपाइलर का उपयोग कर सकते हैं लेकिन सॉफ्टवेयर के नए वितरण को संकलित कर रहे हैं। यानी अगर मैं एक नई सी परियोजना शुरू कर रहा था, तो मैं कैसे तय करूंगा कि C89 का पालन करने से संभावित उपयोगकर्ताओं की संख्या बढ़ सकती है?
बस इस पर एक तरह का ध्यान दिया Blrfl
, लेकिन C99 और C11 का उपयोग करके उत्पादकता लाभ मेरे मामले में इतना बड़ा नहीं है, जबकि लोगों को MSVC में अपने प्लगइन्स को लिखने की अनुमति देने की क्षमता बहुत बड़ी लागत हो सकती है (विशेषकर जब मैं उत्पाद काम करता हूं सबसे बड़ी बाजार हिस्सेदारी है, अब तक, विंडोज ओर और औसत उपयोगकर्ता अक्सर कई थर्ड पार्टी प्लगइन्स खरीदता है और डाउनलोड करता है)। जिस तरह का उत्पाद मैं काम करता हूं, वह प्रोग्रामर / स्क्रिप्टर्स और कलाकारों के लिए उपयोगकर्ता-अंत उत्पाद के विकास के माहौल के बीच लगभग आधा है, क्योंकि बहुत से लोग नई क्षमताओं को विकसित करने और विशेष प्रभाव प्राप्त करने के लिए इसके शीर्ष पर नई चीजों को विकसित करना चाहते हैं दयालु लोगों ने अभी तक नहीं देखा है। तो मेरे मामले में यह वास्तव में कम से कम एसडीके के लिए C89 के पक्ष में एक बहुत ही सरल निर्णय था।
मुझे लगता है कि आपको अपने आस-पास के कंपाइलरों पर ध्यान देना है और अपने लक्ष्य जनसांख्यिकीय का पता लगाने की कोशिश करनी है। यदि आप विंडोज के लिए एक प्लगइन आर्किटेक्चर विकसित नहीं कर रहे हैं या कोई एम्बेडेड प्रोग्रामिंग कर रहे हैं या एक सॉफ्टवेयर डेवलपमेंट किट बनाने की कोशिश कर रहे हैं जो कि कंपाइलर और भाषाओं की व्यापक रेंज द्वारा उपयोग किया जा सकता है, तो यह निश्चित रूप से C99 + के लिए पहुंचने के लिए चीजों को आसान बनाता है दूर। इसके अलावा शायद इस बात पर विचार करें कि आपको उत्पादकता बढ़ाने में कितना फायदा होता है। मुझे वीएलएएस जैसी चीजों से उतना फायदा नहीं होता है क्योंकि मैं स्टैक का उपयोग करने के लिए सरल पर्याप्त तरीकों पर निर्भर करता हूं जब डेटा फिट बैठता है और अन्यथा ढेर होता है।
लेकिन एमएसवीवी से लेकर एफएफआई जैसी अन्य भाषाओं में लोकप्रिय कंपाइलरों से पीछे रहने वाली कई सारी चीजें हैं, जो इस मायने में अच्छी हैं कि वे डीआईएलआई से सीधे सी फंक्शंस को आयात और कॉल कर सकते हैं, लेकिन हो सकता है बार। इसलिए आपके डोमेन के आधार पर, पुराने के अनुकूल और किसी प्रकार के सौंदर्य के लिए मानकीकृत होने के बजाय, बहुत अधिक व्यावहारिक व्यावसायिक चीजें हैं।