C ++ मानक समिति उनके डिजाइन विचारों का परीक्षण कैसे करती है?


29

क्या C ++ कमेटी किसी नए मानक को जारी करने से पहले किसी प्रकार के प्रोटोटाइप कंपाइलर के साथ उनके नए डिजाइन विनिर्देशों का परीक्षण करती है? या क्या वे एक मानक जारी करते हैं, जो वास्तव में, केवल सैद्धांतिक है जब तक कि बड़े संकलक इसे लागू नहीं करते हैं?



4
बूस्ट बड़ी संख्या में पुस्तकालय सुधार के लिए प्रोटोटाइप के रूप में कार्य करता है। जैसे boost::shared_ptr=> std::shared_ptr
एमएसल्टर्स

6
मुझे लगता है कि वे एक सरल "वे नहीं" की उम्मीद करते हैं।
सेब

@MSalters: बूस्ट ने भी मुख्य भाषा सुधारों की एक उचित संख्या के लिए एक प्रोटोटाइप के रूप में काम किया है (उदाहरण के लिए, boost.lambda=> C ++ 11 लंबोदर भाव)।
जेरी कॉफिन

जवाबों:


26

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

जहाँ तक मुझे पता है कि किसी फीचर या उसके डिज़ाइन को "परीक्षण" करने की कोई औपचारिक आवश्यकता नहीं है। C ++ भी कुछ हद तक अद्वितीय है कि इसमें कोई संदर्भ या "प्राथमिक" कार्यान्वयन नहीं है (जैसे Microsoft CLR, Oracle JDK, Zend PHP)। हालांकि, समिति के सदस्यों में भाषा और संकलक कार्यान्वयन के गहन ज्ञान के साथ कई संगठन शामिल हैं। उदाहरण के लिए, यदि आप उस पिछले लिंक का अनुसरण करते हैं, तो आप Microsoft और Intel के प्रतिनिधियों को देखेंगे, जिनके पास C ++ कंपाइलर के लिए अच्छी तरह से सम्मानित हैं। रेड हैट और कुछ अन्य कंपनियां जो जीसीसी में योगदान करती हैं, वे भी शामिल हैं।

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

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

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

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


5
ConceptGCC और ConceptClang संकलक (या संकलक के कांटे) के दो उदाहरण हैं जो स्पष्ट रूप से एक जटिल भाषा सुविधा के साथ प्रोटोटाइप और वास्तविक अनुभव प्राप्त करने के लिए बनाए गए थे। अवधारणाओं का एक उदाहरण यह भी है कि C ++ में पूरी तरह से भाषा की विशेषताओं को कैसे डिज़ाइन किया गया है: अवधारणाएं 1998 के आसपास से हैं, पहले C ++ टेम्प्लेट के बारे में बात करने के लिए एक अनौपचारिक विचार के रूप में, फिर 2006 में बजरने द्वारा प्रस्तावित भाषा की सुविधा के रूप में, और संकल्पना में भी लागू किया गया। तब से। वे हो सकता है ...
Jörg W Mittag

3
… C ++ 17 में समाप्त होता है, जिसका अर्थ है कि वे एक कार्यान्वयन के रूप में लगभग 10 वर्षों के लिए परिपक्व हो जाएंगे और 20 साल एक विचार के रूप में।
जोर्ग डब्ल्यू मित्तग

2
यह ज्यादातर गलत है, मुझे लगता है। नई सुविधाओं में आम तौर पर की आवश्यकता होती है एक कार्यान्वयन पहले। एक बार ऐसा नहीं हुआ, हमें निर्यात मिला।
इसनाई

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

1
@ आर .. मैं असहमत हूं। सी ++ 11 एक विसंगति थी, लेकिन इसमें बहुत सारे सामान शामिल थे जो पहले से मौजूद थे (उदाहरण के लिए, मेरी बूस्ट टिप्पणी देखें)। C ++ के अधिकांश जीवन के लिए यह बहुत धीरे-धीरे विकसित हुआ है , जो एक बड़ी शिकायत है जो कई डेवलपर्स को भाषा के बारे में है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.