Microsoft द्वारा आयोजित
GoingNative'2012 सम्मेलन हाल ही में समाप्त हुआ। यह 2 और 3 फरवरी को रेडमंड में आयोजित किया गया था, और मुख्य विषय C ++ 11 था। मुझे ऐसा लगा कि यह उल्लेखनीय घटना पूरी तरह से शांत नहीं थी, और मैं स्थिति को सुधारना चाहता था।
"C ++ 11 एक नई भाषा की तरह महसूस करता है" Bjarne Stroustrup द्वारा
"हम सभी C ++ 11 सीख रहे हैं" हर्ब सटर
"हमने ग्रह पर हर एक किताब को तोड़ दिया, और हमने ग्रह पर हर एक प्रोग्रामर को तोड़ दिया" हर्ब सटर
अपनी प्रारंभिक टिप्पणियों में, हर्ब सटर ने सम्मेलन को सी भाषा के निर्माता डेनिस रिची और यूनिक्स संचालन प्रणाली के प्रमुख डेवलपर के लिए समर्पित किया।
यह C ++ समुदाय के लिए एक बहुत ही महत्वपूर्ण घटना है, जहाँ C ++ की दुनिया में किंवदंतियाँ बने लोगों ने सवालों के जवाब दिए और बड़े पैमाने पर इसके विकास को निर्धारित किया। रिपोर्ट बहुत दिलचस्प हैं, और मैंने अपने लिए बहुत सी नई चीजें बनाई हैं। अगला सभी रिपोर्टों और प्रश्न और उत्तर सत्रों का अवलोकन है।
बोलने वालों की सूची:
- बज़्ने स्ट्रॉस्ट्रुप (C ++ का निर्माता)
- हर्ब सटर (C ++ मानक समिति के अध्यक्ष, Microsoft पर सॉफ्टवेयर वास्तुकार)
- आंद्रेई अलेक्जेंड्रेस्कु (C ++ टेम्पलेट और फेसबुक से बड़े कंप्यूट मास्टर, डी प्रोग्रामिंग भाषा के लेखकों में से एक)
- चांडलर कारूथ (Google से LLVM / Clang डेवलपर)
- Stephan T. Lavavej (विजुअल C ++ लाइब्रेरी टीम से एसटीएल मास्टर)
- हंस बोएहम (एचपी लैब्स से वितरित और समानांतर कंप्यूटिंग विशेषज्ञ)
- एंड्रयू सटन (C ++ पुस्तकालय डिजाइन विशेषज्ञ और टेक्सास ए एंड एम विश्वविद्यालय से आईएसओ समिति के सदस्य)
किसी को भी भाषा की वर्तमान स्थिति में दिलचस्पी है, मैं इन 3 दिखावे को देखने की सलाह देता हूं:
- हर्ब सटर: सी ++ 11, वीसी ++ 11 और बियॉन्ड ( लिंक )
- बज़्ने स्ट्रॉस्ट्रुप: C ++ 11 स्टाइल ( लिंक )
- Stephan T. Lavavej: STL11 - मैजिक और& राज ( लिंक )
अन्य रिपोर्ट भी ध्यान देने योग्य हैं, लेकिन वे संकीर्ण विषयों (समानांतर प्रोग्रामिंग, क्लैंग संकलक, टेम्पलेट्स, अवधारणाओं) के लिए समर्पित हैं। इस आयोजन को दो सत्रों और प्रश्नों के साथ सजाया गया था। सम्मेलन से सभी वीडियो और स्लाइड
चैनल 9 पर ऑनलाइन डाउनलोड और देखने के लिए उपलब्ध हैं।
दिन 1 - सी ++ 11 आज - 2 फरवरी, 2012
ब्रजने स्ट्रॉस्ट्रुप: सी ++ 11 स्टाइल
Bjarne C ++ की ताकत, एक अच्छी प्रोग्रामिंग शैली के बारे में बात करता है, और कई उदाहरण देता है। एक वेक्टर और एक सूची के प्रदर्शन की तुलना दिलचस्प है: परिणाम अप्रत्याशित लगता है, और विचार के लिए भोजन प्रदान करता है।
हंस बोएहम: सी ++ 11 में धागे और साझा चर
अंत में, C ++ में, मल्टीथ्रेडिंग भाषा मानक में गिर गया। थ्रेड्स का डिजाइन काफी हद तक प्रसिद्ध बूस्ट.थ्रेड लाइब्रेरी के डिजाइन का अनुसरण करता है। अतुल्यकालिक कॉल के लिए उल्लेख किया गया async / भविष्य का समर्थन। म्यूटेक्स / ताले का उपयोग करने के उदाहरण हैं।
प्रस्तुति का मुख्य भाग डेटा दौड़ के लिए समर्पित है। सी ++ प्रोग्राम में क्या है इसकी एक सटीक परिभाषा दी गई है, और डेटा रेस की स्थिति में क्या उम्मीद की जानी चाहिए। बहुत कुछ उन परमाणु प्रकारों के बारे में कहा जाता है जो दिखाई देते हैं, तुलना जावा, सी # से अस्थिर के साथ की जाती है।
Stephan T. Lavavej: STL11 - मैजिक और& राज
STL मानक C ++ लाइब्रेरी में कई नवाचारों के बारे में बात करता है:
- एक संदर्भ काउंटर के साथ इंगित करें। तकनीक "प्रकार erasure"। Share_ptr बनाने के लिए make_sared का उपयोग करना बेहतर क्यों है
auto sp1 = make_shared<T>( args )
- विस्थापन: सीधे कंटेनर में एक वस्तु का निर्माण
v.emplace_back("Carmichael", 3 * 11 * 17); // more efficient, easier to type v.push_back( make_pair("Carmichael", 3 * 11 * 17) );
- कैसे नया मानक लगभग "टूट गया" एसटीडी :: जोड़ी, या क्यों यह नल के बजाय नल्ट्रप्र का उपयोग करने के लायक है
pair<X*, double> p1(NULL, 3.14);
- वायदा / async, और संदर्भ के बजाय मूल्य के द्वारा भारी वस्तुओं को पास करना कभी-कभी बेहतर क्यों होता है
- रेंज-आधारित के लिए VC11 दिखाई देगा, और पहले से ही VC11 बीटा में होगा। इसे कैसे लागू किया जाता है, और ऑटो के साथ संयोजन में उपयोग करना बेहतर क्यों है
- ऑटो: न केवल लिखना आसान है, लेकिन कभी-कभी अधिक कुशल कोड प्राप्त होता है
map<string, int> m; // ? for (const auto& p1 : m) { … } for (const pair<string, int>& p2 : m) { … }
आंद्रेई अलेक्जेंड्रेस्कु: वैराडिक टेम्प्लेट्स फनाडिक हैं
"... आखिरकार, वह-हू-मस्ट-नॉट-बी-नेम ने महान चीजें कीं - भयानक, हां, लेकिन महान।"
टेम्प्लेट मेटाप्रोग्रामिंग गुरू की प्रस्तुति में, हम Variadic टेम्प्लेट्स के बारे में बात कर रहे हैं: C ++ 11 मानक की एक नई विशेषता जो आपको टेम्प्लेट क्लास / फ़ंक्शंस बनाने के लिए अनुमति देती है जो पैरामीटर्स की एक पैरा संख्या द्वारा परिचालित होती है। उदाहरण के लिए, अब आप C. से प्रिंटफ / स्कैन फंक्शन का एक प्रकार-सुरक्षित एनालॉग लिख सकते हैं। सबसे अधिक संभावना है, अधिकांश C ++ प्रोग्रामर को कभी भी वैरिएडिक टेम्प्लेट का उपयोग करके खुद को कुछ लिखने की आवश्यकता नहीं होगी, लेकिन लाइब्रेरी रचनाकारों के लिए यह सुविधा बहुत महत्वपूर्ण है। प्रस्तुति उन लोगों के लिए दिलचस्प होगी जो उपयोग किए गए सिंटैक्स को देखना चाहते हैं और समझते हैं कि वेरिएडिक टेम्प्लेट का उपयोग कैसे किया जाए।
प्रदर्शन में 3 भाग शामिल हैं:
- यह बताता है कि वैरिएडिक टेम्प्लेट्स क्या हैं, उनकी आवश्यकता क्यों है, वाक्यविन्यास का वर्णन किया गया है, और फ़ंक्शन का एक उदाहरण दिखाया गया है जो यह निर्धारित करता है कि पारित पहला तर्क निम्न में से एक के बराबर है
isOneOf(1, 1); // => true isOneOf(1, 2, 6); // => false isOneOf(1, 3.5, 4, 1, 2); // => true
- सी से प्रिंटफ फ़ंक्शन के लिए एक सरल ऐड-ऑन लागू किया जाता है, जो कि पास किए गए प्रकारों के पत्राचार को प्रारूप स्ट्रिंग में जांचता है।
safe_printf( “%d %f”, 12.1, 1.1 ); // => throws invalid format exception safe_printf( “%d”, 1, 2, 3, 4, 5 ); // => throws too few format specifiers exception safe_printf( “%d %f”, 11, 12.1 ); // => ok, redirects to printf(…)
- एसटीडी का संभावित कार्यान्वयन :: टपल क्लास दिखाया गया है (C ++ 11 मानक से)
tuple<int, string, double> t; get<0>(t) = 42; assert(get<0>(t) == 42); get<0>(t) = “this will not compile”; // => compilation error get<1>(t) = "forty-two"; get<2>(t) = 0.42;
पैनल: द इंपोर्टेंस ऑफ बीइंग नेटिव (बज़्ने, आंद्रेई, हर्ब, हंस, स्टीफ़न)
उत्तर प्रश्न सत्र:
- यदि C ++ उत्तर है, तो प्रश्न क्या है?
- क्या कोई C ++ भाषा के लक्षित प्रचार में शामिल है?
- क्या निकट भविष्य में C ++ में मॉड्यूल सपोर्ट दिखाई देगा?
- Variadic Templates का उपयोग करके कौन कोड लिखेगा और फिर उसका समर्थन करेगा?
- GPGPU, corutin का उपयोग करते हुए कार्य-आधारित समानता (जैसे PPL) का समर्थन करने वाले मानक टूल में शामिल करने की क्या संभावनाएँ हैं?
- C ++ में कचरा संग्रहण के लिए क्या संभावनाएं हैं?
- क्या सी + + में द्विआधारी संगतता दिखाई देगी?
- हार्ड रीयल-टाइम सिस्टम, कर्नेल विकास को प्रोग्रामिंग करने के लिए C ++ कितना लागू है
- ...
दिलचस्प उद्धरण की एक जोड़ी:
“लेकिन मुझे लगता है कि गार्बेज कलेक्शन C ++ के लिए उतना महत्वपूर्ण नहीं है जितना कि कई अन्य भाषाओं के लिए है। हम बस इतना कचरा उत्पन्न नहीं करते हैं ”बज़्ने स्ट्रॉस्ट्रुप
"... ईमेल की सबसे लगातार श्रेणी मैं सी ++ प्रशिक्षण और जानकारी के बारे में लोगों से कह रहा हूं, जहां मैं जावा और सी # डेवलपर्स के लिए आधुनिक सी ++ 11 का उपयोग करने के बारे में एक अच्छा श्वेत पत्र खोजने जा सकता हूं ..." हर्ब सटर
दिन 2 - सी ++ 11 आज और कल - 3 फरवरी, 2012
हर्ब सटर: सी ++ 11, वीसी ++ 11 और परे
वीसी 11 के अगले संस्करण में सी ++ 11 मानक पुस्तकालय, साथ ही (सुखद आश्चर्य) के लिए सटर ने पूर्ण समर्थन का वादा किया, इस महीने के कारण बीटा संस्करण में, रेंज-फॉर और फाइनल / ओवरराइड समर्थन दिखाई देगा। नए मानक के लिए धीरे-धीरे समर्थन में सुधार के साथ VC11 की रिलीज़ के तुरंत बाद कई "आउट-ऑफ-बैंड" रिलीज़ (विजुअल स्टूडियो रिलीज़ से बंधे नहीं) को रिलीज़ करने की योजना बनाई गई है: इनिशलाइज़र लिस्ट, टेम्प्लेट एलियास, वेरैडिक टेम्प्लेट, कॉन्स्ट्रेक्स, नॉइसेप्ट, = डिफ़ॉल्ट / डिलीट, ... हाँ सर्वेक्षण में भाग लेने का अवसर, नए मानक की कौन-सी विशेषताएं सबसे महत्वपूर्ण हैं, और मैं इसे जल्द से जल्द देखना
चाहूंगा :
bit.ly/mscpp11 ।
दूसरा भाग नई शैली, मुहावरों और C ++ में प्रोग्रामिंग के अनुशंसित तरीकों के लिए समर्पित है। सटर का दावा है कि सभी सी ++ पुस्तकें मानक के विमोचन के साथ पुरानी हैं, कि पुस्तक से प्रत्येक उदाहरण को एक नई शैली में लिखा जा सकता है और फिर से लिखना चाहिए: हमने ग्रह पर हर एक पुस्तक को तोड़ दिया, और हमने ग्रह पर हर एक प्रोग्रामर को तोड़ दिया। C ++ 11 पर कम से कम एक पुस्तक पहले से मौजूद है:
bit.ly/meyers11 । C ++ की अन्य प्रसिद्ध पुस्तकों के लिए अपेक्षित अद्यतन तिथियां:
- सी ++ प्राइमर (मू) - अगस्त 2012
- सी ++ प्रोग्रामिंग लैंग्वेज (स्ट्रॉस्ट्रुप) - 2012 के अंत में
- प्रोग्रामिंग: सी + + (स्ट्रॉस्ट्रुप) का उपयोग करते हुए सिद्धांत और अभ्यास - 2013 के अंत में
- प्रभावी सी ++ (मेयर्स) - 2013-2014
- सी ++ कोडिंग मानक (सटर, अलेक्जेंड्रेस्कु) - 2015
तीसरा भाग C ++ मानक के लिए संभावित विकास योजनाओं पर चर्चा करता है। उनकी राय में, शैली में ऐसा मौलिक परिवर्तन, और C ++ 11 में मुहावरे, निकट भविष्य में अवांछनीय है। भाषण के अंत में, कोट्स ऑफ आर्म्स ने प्रभावी रूप से C ++ का सबसे कमजोर पक्ष बताया, और बताया कि स्थिति को ठीक करने के लिए क्या करने की योजना बनाई गई थी।
चैंडलर कारूथ: क्लैंग - मर्फी मिलियन मिलियन से सी ++ का बचाव
Clang डेवलपर इस बारे में बात करता है कि आपको लाइव सीसीसी के साथ एक और C ++ कंपाइलर लिखने की आवश्यकता क्यों है:
- ख़राब त्रुटि संदेश
- संकलन की गति धीमी
- जीसीसी की तकनीकी विशेषताएं, कोड विश्लेषण उपकरण बनाने के लिए इसे अनुपयुक्त बनाती हैं
- Gcc की राजनीतिक सीमाएँ कोड विश्लेषण उपकरण बनाने के लिए इसे अनुपयुक्त बनाती हैं
नवीनतम संस्करण पूरी तरह से C ++ 98 मानक और आंशिक रूप से C ++ 11 का समर्थन करता है। लिनक्स, मैक पर काम करता है। कोई विंडोज समर्थन नहीं है, क्योंकि डेवलपर्स के बीच पर्याप्त विंडोज डेवलपर्स नहीं हैं।
समस्याग्रस्त C ++ कोड के कई उदाहरण दिए गए हैं, और संकलक द्वारा क्या त्रुटि संदेश और चेतावनी उत्पन्न की जाती है। ऐसा लगता है कि एक दिलचस्प स्थिर कोड विश्लेषक निकला है, लेकिन रन-टाइम में व्यवहार का विश्लेषण करने के अवसर भी हैं। संकलक के आधार पर, C ++ कोड को फिर से भरने और विश्लेषण करने के लिए बहुत दिलचस्प उपकरण विकसित किए जाते हैं। उदाहरण के लिए,
अनावश्यक को हटाने के लिए एक
उपकरण शामिल है ।
आंद्रेई अलेक्जेंड्रेस्कु: स्टेटिक इफ हैम हैमर
हम भाषा के मानक में static_if निर्माण को जोड़ने के प्रस्ताव के बारे में बात कर रहे हैं, जो डी भाषा में खुद को साबित कर चुका है। यह हमें कुछ टेम्प्लेट कोड को गंभीरता से सरल बनाने की अनुमति देगा, जो बिना कंपकंपी के अब नहीं देखा जा सकता है। यहाँ इसका उपयोग कैसा दिख सकता है:
// It – forward iterator template <class It> It rotate(It b, It m, It e) if (is_forward_iterator<It>::value) {...} // WithParent enum class WithParent { no, yes }; template <class T, WithParent wp> class Tree { class Node { ... }; static if (wp == WithParent::yes) { Node * parent_; } Node * left_, * right_; T payload_; }; Tree<string, WithParent::yes> dictionary;
बज़्ने स्ट्रॉस्ट्रुप और एंड्रयू सुटन: सी ++ के लिए एक अवधारणा डिजाइन
अवधारणाएं एक लंबे समय से पीड़ित सुविधा है जो C ++ 11 भाषा मानक में शामिल नहीं थी, और इसके गोद लेने में गंभीरता से देरी हुई। स्ट्रैसपुप बताता है कि कैसे वह एक भाषा में अवधारणाओं को समझता है, और सटन तकनीकी विवरण पर बसता है। जैसा कि मैं इसे समझता हूं, अभी भी भाषा में अवधारणाओं को जोड़ने की इच्छा है, और प्रस्ताव मानकीकरण समिति को प्रस्तुत किया जाएगा। मूल की तुलना में सरलीकरण की दिशा में प्रस्ताव को गंभीरता से लिया गया है। यह कोड की तरह लग सकता है जो अवधारणाओं का उपयोग करता है:
template<InputIterator I> DistanceType<I> distance(I first, I last); // template<RandomAccessIterator I> DistanceType<I> distance(I first, I last); // , random-access template<Sortable Iter> void sort(Iter first, Iter last);
पैनल: हमसे कुछ भी पूछो! (सभी वक्ता)
प्रश्नोत्तर सत्र। बहुत सारे विषय शामिल हैं:
- सी ++ को गोद लेना
- constexpr
- shared_ptr
- प्रतिबिंब
- सी + + अगले मानक के लिए योजना
- मॉड्यूल
- बहुरूपता मेमने
- पोर्टेबल कोड लिखना
- संकलक विक्रेताओं
- टेम्पलेट निर्यात करता है
- अवधारणाओं
- संगामिति
- समय का निर्माण
- C ++ सिंटैक्स
- उपकरण को फिर से सक्रिय करना
विवशता की चर्चा से:
चैंडलर कारूथ : ... लेकिन हम अभी तक नहीं किए गए हैं। यह मुश्किल है। यह कठिन है तो वैरेडिक टेम्प्लेट, मेरा मानना है कि यह वास्तव में कठिन है तो लंबोदर। यह पूरे C ++ 11 में सही ढंग से सुविधाओं को लागू करने के लिए सबसे चुनौतीपूर्ण में से एक है
ब्रेज़न स्ट्रॉस्ट्रुप : यह ध्यान रखना दिलचस्प है, कि यह इन विशेषताओं में से एक है, जो मानकीकरण के दौरान अपने प्रस्तावकों और प्रारंभिक कार्यान्वयनकर्ताओं के मृत शरीर पर अधिक जटिल बना दिया गया था
सम्मेलन के आयोजकों और प्रतिभागियों को बहुत धन्यवाद !!!