क्या प्रभावी C ++ अभी भी प्रभावी है?


139

इस पोस्ट में मैंने जो देखा उससे मैंने किताब को प्रभावी C ++ पढ़ना शुरू करने का फैसला किया ।

लेकिन अब जब C ++ 11 की वजह से कई नई सुविधाएँ हैं और कुछ अच्छी प्रथाओं को बदल दिया है, तो मुझे यकीन नहीं है कि यह वास्तव में एक अच्छा विचार है या नहीं। क्या C ++ 11 के आगमन ने प्रभावी C ++ में निहित किसी भी सलाह को रद्द कर दिया है? यदि हां, तो मुझे किन विषयों से बचना चाहिए?


4
लेखक ने साइट पर एक लेख scottmeyers.blogspot.co.uk/2013/01/… और अन्य में कुछ टिप्पणियां कीं , मूल रूप से हाँ, लेकिन विचार करने के लिए और भी बहुत कुछ है।
जकरोड

2
बस सामग्री की तालिका पर एक नज़र है: pearson.ch/1471/9780321334879/… । कई आइटम अभी भी मान्य हैं, कुछ को आर-मूल्य संदर्भ और अन्य नई चीजों के साथ बेहतर बनाया जा सकता है, लेकिन कुल मिलाकर यह अभी भी प्रभावी होना चाहिए।
ज़ेटा

यह सवाल एसओ के लिए एक खराब फिट है। (1) इस बारे में पूछी गई सामग्री प्रश्न में नहीं है, यह एक ऑफ-साइट संसाधन में है (और लिंक भी नहीं है)। (२) या तो पुस्तक में प्रत्येक सिफारिश को संबोधित करना एक अलग उत्तर है, इस मामले में यह एक सूची प्रश्न है, जिसमें बहुत अधिक उत्तरों की आवश्यकता होती है, या फिर एक ही उत्तर में पूरी पुस्तक पर चर्चा करनी चाहिए, जिस स्थिति में यह प्रश्न बहुत व्यापक है। उस ने कहा, किसी भी एक सिफारिश के बारे में समान प्रश्न पूछना बहुत अच्छा होगा।
बेन वोइग्ट

2
(1) मैं एसओ में सबसे लोकप्रिय प्रश्नों में से एक में उल्लिखित पुस्तक का संदर्भ दे रहा हूं। (2) यह एक ठीक शिकायत है, लेकिन आप लगभग किसी भी प्रश्न के साथ व्यापक हो सकते हैं। या आप कृपया के रूप में संकीर्ण हो सकते हैं। मुझे लगता है कि एसओ में अधिकांश प्रश्नों की तुलना में उत्तर काफी अच्छे थे और अधिक संकीर्ण थे, इसलिए मुझे नहीं लगता कि एक विस्तृत सूची आवश्यक है। OFF TOPIC: लगता है कि किसके पास एक प्रश्न है, जो "किसी से भी मेरे पूर्णांक के प्रदर्शन को हरा सकता है :: स्ट्रिंग कोड, नीचे लिंक किया गया है?"
जर्मन कैपुआनो

जवाबों:


93

इस बारे में खुद स्कॉट मेयर्स को अपने ब्लॉग पर क्या कहना था

जिससे आपको आश्चर्य हो सकता है कि क्या प्रभावी C ++ के इस C-C ++ 0x संस्करण में जानकारी और सलाह प्रासंगिक बनी हुई है या नहीं। मुझे यह बताते हुए खुशी हो रही है कि यह करता है। हैरानी की बात है, वास्तव में। C ++ 0x के विवरण में डूबी हुई लगभग दो साल बिताने के बाद, मुझे उम्मीद थी कि मैं इस पुस्तक की सामग्री C ++ 0x को ध्यान में रखते हुए थोड़ा सा कराहूँगा। निश्चित रूप से कुछ आइटम अनुचित होंगे। लेकिन मुझे जो सलाह मिली वह सही साबित हुई। क्या C ++ 0x डेवलपर्स को const, enums और inlines पसंद करना चाहिए #defines(आइटम 2)? वे चाहिए। क्या उन्हें अपवादों को नष्ट करने से रोकना चाहिए (आइटम 8)? निश्चित रूप से। क्या उन्हें संसाधनों के प्रबंधन के लिए वस्तुओं का उपयोग करना चाहिए? डेटा सदस्यों को निजी घोषित करें? आभासी कार्यों के विकल्पों पर विचार करें? टेम्पलेट्स से बाहर फैक्टर पैरामीटर-स्वतंत्र कोड? (आइटम 13, 22, 35 और 44।) हां, हां, हां, हां! मेरा लक्ष्य हमेशा किताब में सलाह को प्रभावी करने के लिए प्रभावी C ++ की तालिका के लिए रहा है, और यह सारांश अभी भी C ++ 0x विकास के लिए "पारंपरिक" C ++ विकास पर लागू है। C ++ 0x एक बड़ी भाषा है, और कुछ मायनों में यह एक अलग है, लेकिन C ++ 0x के प्रभावी उपयोग के लिए "पुराने" C ++ के प्रभावी उपयोग के लिए कोर तकनीक भी मुख्य है।

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

अद्यतन : नया शीर्षक प्रभावी आधुनिक सी ++ ओ'रिली और अमेज़ॅन से नवंबर 2014 से बिक्री के लिए है (और कई अन्य जो आप के लिए Google कर सकते हैं)।


45

हां, अभी भी पढ़ने लायक है। एक नई पुस्तक है जो स्कॉट पर काम कर रही है: प्रभावी C ++ 11 , जो केवल C ++ 11 कोड पर केंद्रित है। प्रभावी सी ++ अभी भी बहुत प्रासंगिक है, और नई किताब ने ले नहीं है। इसे खरीदें, इसे पढ़ें, आनंद लें :)


1
मैं एक-दूसरे पर किताबों की इमारत देखता हूं, इसलिए प्रभावी सी ++ महत्वपूर्ण आधार है। यदि आप केवल दो में से एक को पढ़ते हैं, तो यह प्रभावी C ++ होना चाहिए। प्रभावी आधुनिक C ++ कहीं अधिक गूढ़ है (और ईमानदार होना C C का बहुमत वैसे भी 'आधुनिक' से बहुत दूर है)।
एंडी क्राउवेल

21

एक, पुस्तक अभी भी C ++ 03 के लिए मान्य है।

दो, मेयर्स लिख रहे हैं या लिखा है, इस पर निर्भर करते हुए कि आप इस वाक्य को पढ़ रहे हैं, प्रभावी C ++ 11।

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

केवल एक ही तरह के बिंदु से मैं अमान्य होने की उम्मीद करूंगा, जो कहते हैं कि "ऐसा मत करो, इसके बजाय ऐसा करो।" "यह मत करो" अभी भी मान्य होगा। लेकिन C ++ ने कुछ समस्याओं को हल किया होगा। विशेष रूप से, बूस्ट का उपयोग करने के लिए किसी भी सिफारिश की संभावना कम हो जाती है, क्योंकि सी ++ 11 में कई विशेषताएं शामिल हैं मेयर्स विशेष रूप से पाठक को बूस्ट के लिए संदर्भित करता है।


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