2010-01-16 9 views
9

चूंकि मैं ज्यादातर पिछली बार स्क्रिप्ट भाषाओं का उपयोग कर रहा हूं लेकिन अब कुछ समय पहले "उच्च प्रदर्शन" स्तर पर जाना चाहता हूं, मैंने सी ++ सीखने का फैसला किया था।सी ++ सीखना सही है?

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

  • क्या मुझे आगे सीखने के लिए उन मोटी सी ++ पुस्तकों में से एक प्राप्त करना है?
  • मैं मुख्य रूप से विंडोज़ पर सी ++ का उपयोग करने जा रहा हूं। Win32 के बगल में कौन सी एपीआई मेरे लिए महत्वपूर्ण हैं?
  • मेरा लक्ष्य एक प्रोग्रामिंग भाषा के लिए एक छोटा दुभाषिया लिखना होगा, हालांकि मैंने प्रबंधित किया है कि मैंने पहले से ही कई स्क्रिप्टिंग भाषाओं में सीआई ++ में एक एपीआई/पुस्तकालय ज्ञान की आवश्यकता है?

उत्तर

8
  1. आपको मोटी पुस्तक की आवश्यकता नहीं है - आपको एक अच्छा चाहिए। कोनेग & म्यू, मूल सी ++ विकास टीम में से दो द्वारा लिखित Accelerated C++ प्राप्त करें।

  2. निर्भर करता है कि आप क्या करना चाहते हैं।

  3. आपको कुछ भी चाहिए नहीं - आप केवल सी ++ मानक पुस्तकालय का उपयोग करके एक बिल्कुल अच्छा दुभाषिया या कंपाइलर लिख सकते हैं। इस क्षेत्र में बहुत सारी जानकारी के लिए यह SO question देखें।

+0

मैं प्रभावी सी ++ और प्रभावी एसएलएल को भी तुरंत अनुशंसा करता हूं। – Rick

+0

मुझे उस पुस्तक के बारे में उनके उद्धरण से प्यार है: "कोई भी इस पुस्तक को पढ़ रहा है और उदाहरणों और अभ्यासों के माध्यम से काम करने वाले कई पेशेवर प्रोग्रामर के समान कौशल रखेंगे।" अफसोस की बात है, यह बिल्कुल नहीं कह रहा है। :-) – Ken

1

मुझे हमेशा पता चला है कि एक पुस्तक से एक भाषा सीखना बहुत मुश्किल है और जब आप मूल बातें जानते हैं तो आपको प्रोग्राम शुरू करना चाहिए। तो एक मोटी मैनुअल लेने की बजाय मैं http://www.cprogramming.com/tutorial.html#advanced जैसे कुछ या सी ++ ट्यूटोरियल के लिए Google और कुछ ऐसा करने की कोशिश करता हूं जिसे आप बनाना चाहते हैं।

+3

आपको प्लेग जैसी सभी ऑनलाइन सी ++ ट्यूटोरियल से बचना चाहिए - वे समान रूप से गुमराह या फ्लैट-आउट गलत हैं। –

+1

@Neil: थोड़ा मजबूत। कई ट्यूटोरियल्स में अच्छे अंक हैं, लेकिन मैं मानता हूं कि सक्रिय रूप से हानिकारक सुझावों के साथ शोर अनुपात का संकेत कम या नकारात्मक भी है। –

+0

आपको बस कुछ अच्छे ढूंढना है। किताबों के समान, सभी सही नहीं हैं। कुंजी कुछ वास्तविक जीवन उदाहरणों पर काम करना है। पर्याप्त किताबें पढ़ने के बाद, आप वास्तव में ऐसा करने के बिना कुछ भी हासिल नहीं करते हैं और इसके साथ प्रयोग करते हैं। – Joe

0

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

आप boost सी ++ पुस्तकालयों को भी प्राप्त करना, सीखना और उपयोग करना चाहते हैं। वे खिड़कियां विशिष्ट नहीं हैं, लेकिन वे किसी के लिए एक महान संसाधन हैं।

+10

एमएफसी मृत तकनीक है। यदि आप विंडोज जीयूआई लिखना चाहते हैं, क्यूटी का उपयोग करें या सी ++ पर छोड़ दें और सी # का उपयोग करें। –

+0

किसी को ध्यान रखना चाहिए (मुझे पता है, कि आप इसे जानते हैं, नील), कि क्यूटी अच्छी तरह से आपको क्रॉस-प्लेटफार्म गुई अनुप्रयोगों को विकसित करने देता है, मुझे लगता है कि, मुझे कम से कम प्रयास के रूप में वर्णित किया जा सकता है (माना जाता है कि हम केवल बात कर रहे हैं यहां सी ++ के बारे में)। – shylent

+0

@Neil: डब्ल्यूटीएल (हाल ही में क्रोम द्वारा चुने गए) का एक और प्रत्यक्ष प्रतिस्थापन है, और मैं कई अजीब/रोचक विशेषताओं की कल्पना करता हूं जो इंटरफ़ेस मेल के कारण विंडोज़ का समर्थन क्यूटी में उपयोग करना अधिक कठिन होगा। बेशक, मैं अपना खुद का रोल करता हूं, तो मुझे क्या पता चलेगा। :) –

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

ईमानदारी से, सी ++ सीखने में मैंने कभी भी एक पुस्तक नहीं उठाई (कृपया कोई फ्लेमिंग नहीं)। सबसे अच्छी सलाह जो मैं दे सकता हूं वह this page पर जाना और ट्यूटोरियल के माध्यम से जाना है। इसमें अधिकांश सी ++ भाषा शामिल है (पढ़ें: सबसे अधिक उपयोग की जाने वाली विशेषताओं) और इसे यथासंभव सरल रखती है। जहां तक ​​एपीआई महत्वपूर्ण हैं ... अच्छी तरह से वरीयता का मामला है। कोई भी टूलकिट/एपीआई वास्तव में "जीता" नहीं है, लेकिन क्यूटी, जीटीके-- (gtkmm), और wxwidgets सभी बड़े खिलाड़ी हैं। और जीयूआई के अलावा, आप शायद कच्चे winsock2 और थ्रेडिंग एपीआई या बूस्ट लाइब्रेरी के थ्रेडिंग और नेटवर्क इंटरफेस सीखना चाहेंगे।मैं सहमत हूं कि एमएफसी मर रहा है, और खिड़कियों के लिए केवल विकास सी # तेजी से बड़ी भूमिका ले रहा है (यहां तक ​​कि लिनक्स/मोनो सी # पर भी धीरे-धीरे पकड़ना शुरू हो रहा है)।

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

@ नील- मैं असहमत हूं कि ऑनलाइन ट्यूटोरियल "फ्लैट आउट गलत" हैं। यदि कुछ भी हो, तो वे जिस शैली को सिखाते हैं, वह आपको ऑप्टिमाइज़ेशन की बजाय पठनीयता की दिशा में तैयार किया जा सकता है- जो मेरी-न-विनम्र-राय एक लाभ है। मेरे सीमित अनुभव में मैंने cplusplus.com को बहुत कुछ सब कुछ के लिए संदर्भ में पाया है।

विशेष रूप से, अपने प्रश्नों के उत्तर देने के लिए: 1. कोई मोटी पुस्तक की आवश्यकता नहीं है। मैंने सुना है कि पतले लोग त्वरित संदर्भ के रूप में उपयोगी हो सकते हैं।

  1. यह पूरी तरह से व्यक्तिपरक है और आपके लक्ष्य पर निर्भर करता है। बूस्ट का नेटवर्क और मल्टीथ्रेडिंग लाइब्रेरी शायद एक अच्छी शुरुआत है।

  2. std :: स्ट्रिंग, std :: stringstream, और getline (std :: IStream &, std :: स्ट्रिंग &) के बीच

    आप बहुत अच्छा होना चाहिए। सी ++ अंतर्निहित कार्यक्षमता के पूरे टन के साथ आता है फिर भी सीखने के लिए बहुत फूला/विशाल/असंभव नहीं है। इस का लाभ ले। सभी पार्सिंग पहले से ही बनाई गई है।

2

किताबों के साथ जानें। सी ++ एक जटिल भाषा है। मेरा सुझाव है कि पहले सी ++ का समर्थन करने वाले प्रमुख प्रोग्रामिंग प्रतिमानों के त्वरित परिचय और सामान्य अवलोकन के साथ जाना है: ओओपी और जेनेरिक प्रोग्रामिंग: त्वरित सी ++

जब आप इस पुस्तक को पूरा करते हैं, तो आप ब्रूस एकल के के दो खंडों के साथ जा सकते हैं सी ++ में जो बहुत विस्तृत हैं।

यूआई प्रोग्रामिंग के लिए, सर्वोत्तम सी ++ टूलकिट क्यूटी है, और यह मल्टीप्लाफॉर्म-तैयार है। आप "सी ++ जीयूआई प्रोग्रामिंग क्यूटी 4 के साथ पढ़ सकते हैं" (पहला संस्करण डाउनलोड करने के लिए स्वतंत्र है, बस इसे गूगल करें)। यदि आप सी ++/विंडोज एपीआई के साथ रहना चाहते हैं, तो विंडोज टेम्पलेट लाइब्रेरी सीखें, आधिकारिक दस्तावेज की कमी के कारण यह थोड़ा मुश्किल हो सकता है (कुल मिलाकर नेट पर अच्छे ट्यूटोरियल हैं)। डब्ल्यूटीएल बहुत छोटा, हल्के अनुप्रयोग बनाने के लिए जाने का तरीका है (दूसरी ओर क्यूटी डीएलएल, प्रत्येक को कुछ एमबी की आवश्यकता है)।

0

मैं अत्यधिक अनुशंसा करता हूं Stroustrup's Intro C++ book. इसमें सी ++ और एसटीएल को बहुत ही पहुंचने योग्य तरीके से शामिल किया गया है।

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

1

कृपया, पीट के लिए, सीधे Win32 API का उपयोग न करें। आप माइक्रोसॉफ्ट कोने में खुद को चित्रित करेंगे।वहाँ पार मंच पुस्तकालयों के बहुत वहाँ बाहर आप के बजाय का उपयोग कर सकते हैं:

  • स्टैंडर्ड सी ++ पुस्तकालय: तार, फ़ाइल मैं/हे, कंटेनर, एल्गोरिदम
  • Boost हर रोज सामान वे मानक पुस्तकालय के बाहर छोड़ दिया के लिए : पार्सिंग, नेटवर्किंग, थ्रेडिंग, स्मार्ट पॉइंटर्स, मेमोरी पूल, डेट/टाइम, मैट्रिस इत्यादि ... बूस्ट लाइब्रेरी स्वीकार किए जाने से पहले सहकर्मी-समीक्षा की जाती है और उच्च गुणवत्ता वाली होती है। बूस्ट पुस्तकालयों के लिए प्रजनन स्थल है जो अंततः अगले सी ++ मानक का हिस्सा बन जाता है।
  • जीयूआई टूलकिट्स: क्यूटी और डब्ल्यूएक्सविड्ज बहुत परिपक्व और व्यापक रूप से उपयोग किए जाते हैं। बहुत सारे हैं।
संबंधित मुद्दे