मैं मुहावरेदार C ++ लिखना कैसे सीख सकता हूं?


27

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

मैं अपने char*और *(int*)(someVoidPointer)मुहावरों के साथ सभी सहज हूं , लेकिन हाल ही में, एक ओपन-सोर्स प्रोजेक्ट में एक (मामूली) योगदान करने के बाद, मुझे लगता है कि सी ++ कोड लिखते समय किसी को यह नहीं सोचना चाहिए कि यह कैसे सोचना है। यह C से बहुत अलग है।

यह देखते हुए कि मैं आपत्तिजनक-उन्मुख प्रोग्रामिंग को काफी अच्छी तरह से जानता हूं, और मैं एक कठिन सीखने की अवस्था के साथ ठीक हूं, आप मेरे लिए C ++ ट्रैक पर अपना दिमाग लगाने के लिए क्या सुझाव देंगे जब मैं C ++ कोडिंग कर रहा हूं?


7
आपकी टिप्पणियों के आधार पर आप C ++ सिंटैक्स जानते हैं और यह सब है। आप C ++ में कोडिंग नहीं कर रहे हैं। Stackoverflow पर सी ++ टैग , एक अच्छी जगह शुरू करने के लिए है कि यह एक शामिल पठन सूची और पूछे जाने वाले प्रश्न । सीखने का एकमात्र वास्तविक तरीका कोड लिखना और टिप्पणी करने के लिए अनुभवी उपयोगकर्ता प्राप्त करना है। आप अपना कोड समीक्षा के लिए यहां रख सकते हैं । एक अच्छा उदाहरण
मार्टिन यॉर्क

1
साथ ही @ LokiAstari की सलाह (जिसके साथ मैं सहमत हूं), मैं कहूंगा कि आपके मित्र सही हैं, और त्वरित C ​​++ के माध्यम से अपने तरीके से काम करना शायद एक अच्छा विचार होगा। मुझे लगता है कि आप पाएंगे कि बहुत कम स्किमिंग की आवश्यकता है जो आप उम्मीद करते हैं - यह आपकी स्थिति के लोगों के लिए, पहले से ही प्रोग्रामिंग जानने के लिए, और मुख्य रूप से आधुनिक C ++ के मुहावरों को सीखने के लिए आवश्यक है।
जेरी कॉफिन

हाँ वास्तव में मैंने पहले दो अध्यायों को पूरा कर लिया है, लेकिन वहां का सामान ज्यादातर वही था जो मैं पहले से जानता था - मुझे लगता है कि एक लेखक अभी बाहर नहीं आएगा और मेरे लिए एक किताब लिखेगा, हालांकि :) @LokiAstari ने सुपरिनफॉर्मेटिव टिप्पणी के लिए धन्यवाद :)
यति सगड़े

3
@yatisagade आपको एक पुस्तक में कुछ अध्यायों में भाषा की मानसिकता को पढ़ाने की उम्मीद नहीं है। यह बेहद उबाऊ हो सकता है, जैसा कि आप पहले से ही वाक्य रचना जानते हैं, लेकिन आपको सी ++ पुस्तकों के एक जोड़े के माध्यम से जाने के लिए खुद को प्रतिबद्ध करना चाहिए, सब कुछ पढ़ना और प्रत्येक व्यायाम करना, जैसा कि आप भाषा के लिए शुरुआती थे। गलत तरीके से सिखाया जाने का मतलब है कि आपको अपने प्रयासों को दोगुना करना होगा, क्योंकि आपको गलतियों को भूलने और अधिकारों (या ऐसा कुछ) सीखने की आवश्यकता है।
यानिस

1
मैं सभी के साथ सहज हूँ [...] - (int) (someVoidPointer) कभी पहले 64-बिट बिल्ड डीबग किया?
एड एस।

जवाबों:


12

आपकी टिप्पणियों के आधार पर आप C ++ सिंटैक्स जानते हैं।
आप सी ++ में कोडिंग नहीं कर रहे हैं, लेकिन अक्सर कक्षाओं के साथ सी के रूप में क्या संदर्भित किया जाता है।

स्टैकओवरफ्लो पर C ++ टैग शुरू करने के लिए एक अच्छी जगह है, इसमें रीडिंग लिस्ट और एफएक्यू शामिल हैं

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

मैं अपने "चार *" के साथ सहज हूं

उनका उपयोग करना बंद करें, std :: string पर स्विच करें।

और (int) (someVoidPointer) मुहावरे।

उनका उपयोग करना बंद करें (सी कोड के साथ इंटरफेस के अलावा)। फ़ंक्शनल अवधारणा का उपयोग करना कई फायदे प्रदान करता है (राज्य को घेरने का विचार शामिल है)।

लेकिन हाल ही में, एक ओएसएस परियोजना में (मामूली) योगदान करने के बाद, मुझे लगता है कि ऐसा नहीं है कि आप सी ++ में कैसे सोचते हैं। यह बहुत अलग है, हालांकि सी की अपनी जगह है।

हाँ। C और C ++ ने भाषाओं के रूप में विचलन किया है। यद्यपि आप व्यावहारिक रूप से उसी सिंटैक्स का उपयोग कर सकते हैं जिसे अच्छा सी कोड माना जाता है, जिसे आमतौर पर अच्छा सी ++ कोड (या इसके विपरीत) नहीं माना जाता है।

कुछ दोस्तों ने त्वरित C ​​++ का सुझाव दिया है, लेकिन फिर से मैं जानता हूं कि प्रकार क्या हैं, और कौन सी कक्षाएं हैं और क्या ओवरलोडिंग है।

आपके पास बहुत मूल बातें हैं।

एक (कटे-फटे) C ++ प्रोग्रामर, जो OO कॉन्सेप्ट्स के साथ साउंड करते हैं, भाषा में मुहावरेदार प्रोग्राम लिख सकते हैं।

बहुत काम के साथ :-)


यह एकमात्र तरीका नहीं है। आप अच्छी किताबों से बहुत कुछ सीख सकते हैं।
दिमा

1
@ दायमा: बिल्कुल। आप किताबों से बहुत कुछ सीख सकते हैं। लेकिन कुछ भी अनुभव को नहीं हराएगा और गुस्से में भाषा का उपयोग करके, फिर से असफल होने पर फिर से कोशिश कर रहा है और इसे करने के लिए सबसे अच्छा तरीका है। मुझे लगता है कि आप एक किताब से फ्रेंच सीख सकते हैं लेकिन मुझे संदेह है कि फ्रांसीसी आपको धाराप्रवाह समझेंगे।
मार्टिन यॉर्क

6
IMHO, सीखने का सबसे कुशल तरीका किताबों से शुरू करना है, चीजों को करने का सही तरीका सीखना है, इसे अभ्यास में आज़माना है, और फिर किसी को आपके कोड की आलोचना करना है।
दिमा

@ डिमा: मेरा उससे कोई तर्क नहीं है।
मार्टिन यॉर्क

12

प्रभावी C ++ पुस्तक कई दिलचस्प बातें सिखाती है और आपको C ++ की विशेषताओं की सराहना करने के लिए लाएगी। प्रभावी एसटीएल भी है - मैंने इसे नहीं पढ़ा है लेकिन मुझे यकीन है कि अगर आप एसटीडी से अपरिचित हैं तो यह बहुत अच्छा होगा।

सीखने की महत्वपूर्ण बात यह है कि आपको भाषा का उपयोग करना चाहिए और पहिया को लगातार मजबूत नहीं करना चाहिए । आप पहले से ही सीख चुके हैं कि उन्हें कैसे बनाना है, इसलिए इसे स्वयं (और अन्य!) पर आसान बनाएं और अपनी सभी क्षमता के लिए टूल का उपयोग करें।

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


मुझे प्रभावी श्रृंखला के बारे में पता है, (उन्हें नहीं पढ़ा है) - लेकिन मुझे लगता है कि वे सर्वोत्तम अभ्यास मुद्दों के लिए हैं, है ना?
यति सगड़े 20

3
@yati sagade: नहीं, वे पुस्तकें ठीक वही हैं जो आपको "C with classes" से पूर्ण-सी C ++ तक जाने की आवश्यकता हैं।
दिमा

मैं देखता हूं - वास्तव में मेरे पास प्रभावी C ++ था, जो कि Meyers द्वारा त्वरित C ​​++ के बाद पंक्तिबद्ध था।
यती ने ३१

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

1
@ डिमा: यहां सावधान। दूसरा संस्करण सी। से आने वाले नए सी ++ प्रोग्रामर के उद्देश्य से था। (नवीनतम) तीसरा संस्करण जावा, सी # आदि भाषाओं से आने वाले प्रोग्रामर पर अधिक लक्षित है
sbi

6

मैं हर्ब सटर द्वारा दिए गए हालिया BUILD लेने की सिफारिश कर सकता हूं। " राइटिंग मॉडर्न C ++ कोड: " C ++ वर्षों में कैसे विकसित हुआ है "

कई लोग C ++ को उसी भाषा के रूप में समझते हैं जो उन्होंने कॉलेज में या "सी विद क्लासेस" के रूप में अनुभव किया था, लेकिन सी ++ भाषा पिछले कुछ वर्षों में बड़े पैमाने पर विकसित हुई है। इस सत्र में, हम कवर करेंगे कि आप C + का उपयोग कैसे कर सकते हैं ताकि वे अभिनव, अभिव्यंजक और सुंदर एप्लिकेशन लिख सकें जो शक्ति और प्रदर्शन एप्लिकेशन वितरित करते हैं। हमें यह देखने के लिए जुड़ें कि नए समाप्त C ++ 0x मानक लेखन C ++ को अन्य भाषाओं के रूप में कैसे उत्पादक बना सकते हैं।

इसकी खराब प्रस्तुति नहीं, बहुत लंबी नहीं, नवीनतम मानक में नई सुविधाओं के लिए कुछ अच्छे संकेत हैं जो आपको अपनी पुरानी सी / सी ++ शैली को अपडेट करने की दिशा में कुछ संकेत देंगे।

इसके अलावा, आपको एसटीएल सीखने की जरूरत है - इसके जटिल नहीं हैं और बहुत सी किताबें हैं, जैसे, प्रभावी एसटीएल, या एसटीएल ट्यूटोरियल के लिए सिर्फ Google जो आपको जा रहा है।


+1 धन्यवाद। वह अद्भुत था। मुझे खुशी है कि मैंने यह सवाल पूछा। इतने सारे अद्भुत लिंक :)
यति सगाडे

4

मैंने लगभग एक दशक तक C ++ में काम करने के बाद, C ++ को पढ़ाने में मेरी मदद करने के लिए एंड्रयू कोएनिग और बारबरा मू द्वारा त्वरित C ​​++ पढ़ा । (वास्तव में, मैं उस समय टेम्पलेट मेटा-प्रोग्रामिंग के साथ छेड़छाड़ करना शुरू कर रहा था।) मैंने अभी भी इसे एक रहस्योद्घाटन पाया, भले ही मुझे नहीं लगता कि इसने मुझे भाषा के बारे में कोई नया तथ्य सिखाया है। 1

हालाँकि, मुझे यह सिखाया गया था कि उच्च स्तरीय भाषा के रूप में C ++ को देखना और उपयोग करना है। कच्चे पॉइंटर्स के साथ छेड़छाड़ न करना और deleteजहाँ भी संभव हो मानक पुस्तकालय का उपयोग करना।

मुझे लगता है कि यह वही है जो आप के बाद हैं।

1 ऐसा नहीं है कि मुझे वापस पढ़ाने के लिए कुछ भी नहीं बचा था (अब एक दशक बाद भी बहुत कुछ है), लेकिन केवल इतना ज्ञान है कि आप 250 पृष्ठों की परिचयात्मक पुस्तक में निचोड़ सकते हैं।


1

जवाब देने से पहले - एक नोट: मुहावरेदार सी ++ एक चलती लक्ष्य है। जैसे-जैसे भाषा बदलती है, वैसे-वैसे उसके मुहावरे भी। वास्तव में, कुछ भाषा सुविधाओं रहे हैं इरादा हमें मुहावरेदार कोड को सरल बनाया जो हो सकता है या खुद को भाषा से कुछ समर्थन के साथ सुधार, या कम से कम मानक पुस्तकालय को खत्म करने की अनुमति के लिए। इतना ध्यान रखें कि कोई भी स्रोत केवल आपको यह बता सकता है कि लेखन के समय क्या मुहावरा था ।

कहा जा रहा है कि, आप अच्छी तरह से जाँच करेंगे:

Codereview.SX साइट

StackExchange नेटवर्क में एक साइट है, जिसका नाम codereview.stackexchange.com है । यदि आपने C ++ कोड का एक टुकड़ा लिखा है - एक वर्ग, एक पुस्तकालय का एक हिस्सा, कुछ बहुत बड़ा नहीं है - आप इसे वहां पोस्ट कर सकते हैं और समुदाय को इसकी समीक्षा करने के लिए कह सकते हैं। ध्यान दें कि कोड को संकलित करना और मूल रूप से कार्यात्मक होना चाहिए - वह साइट डिबगिंग के लिए नहीं है।

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

सी ++ सम्मेलन वीडियो प्रस्तुतियों

हर साल आयोजित होने वाले C ++ पर कई डेवलपर कॉन्फ्रेंस केंद्रित हैं:

  • CppCon
  • CppNow
  • ACCU , हालांकि यह C ++ - विशिष्ट नहीं है

और वे भी केवल एक ही नहीं हैं ... वैसे भी, इन पोस्टों में से प्रत्येक में कई / सभी प्रस्तुतियों के वीडियो हैं। ये आपको बहुत कुछ सिखाएंगे , जिसमें कुछ मुहावरेदार कोडिंग भी शामिल हैं, और सिद्धांत जिसके साथ आप तय कर सकते हैं कि क्या होना चाहिए या मुहावरेदार नहीं होना चाहिए।

कभी-कभी आप स्पीकर की स्लाइड डेक भी प्राप्त कर सकते हैं।


0

वैसे, ओपन सोर्स प्रोजेक्ट बहुत अच्छी शुरुआत है। अपने विश्वविद्यालय की कक्षाओं के आधार पर एक पेशेवर प्रोग्रामर बनने की उम्मीद न करें, वे इसके लिए अभिप्रेत नहीं हैं (जैसा कि मैंने अपने उत्तर में यहां लिखा है )।

आप वाक्य रचना के बारे में जानते हैं, यह अच्छा है। अब जाकर दूसरों का कोड पढ़ें, और साथियों की समीक्षा के लिए अपना योगदान दें। आप कोड पढ़ने से बहुत कुछ सीखेंगे और इसे समझने की कोशिश करेंगे, इसे डिबग करेंगे और इसे ठीक करेंगे, और निश्चित रूप से - इसे जोड़कर कोडिंग सम्मेलनों का पालन करेंगे जो पहले से ही हैं।

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


-1

बहुत अच्छा C ++ कोड पढ़ने से शायद मदद मिलेगी। आपको इसे महसूस करना शुरू करने के लिए कोड देखना होगा। तब फिर से, अधिकांश C ++ कोड गलत है।


"C ++ का अधिकांश कोड गलत है" - क्या आप स्पष्ट कर सकते हैं? मैंने देखा है कि अधिकांश ओएसएस परियोजनाएं वास्तव में उच्च गुणवत्ता मानकों को बनाए रखती हैं।
यती ने ३१'११

1
प्रोजेक्ट्स, हाँ, लेकिन सामान कैसे करना है, इस पर गुगली करना अक्सर बुरे उदाहरणों की ओर ले जाता है।
कोडर

1
@ यति: मेरा अनुभव पुन: ओएसएस परियोजनाएं विपरीत हैं।
sbi

@ एसबीआई शायद - मैं मोज़िला परियोजना और Google क्रोम के साथ शामिल था (वास्तव में यहां शामिल नहीं है, लेकिन सीखने के प्रकार)। पाया उनका अनुशासन बकाया!
यति ने

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