2008-10-03 12 views
6

सी ++ सीखने से मुझे देशी गति को अच्छी गति से बनाने में मदद मिलेगी? क्या यह मुझे प्रोग्रामर के रूप में मदद करेगा, और अन्य लाभ क्या हैं?फास्ट/नो-अतिरिक्त-आवश्यकता डेस्कटॉप अनुप्रयोगों के निर्माण के लिए सी ++ सीखना सीखेंगे?

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

मेरे पसंदीदा विंडोज उपयोगिता अनुप्रयोग में से एक Launchy है। और Readme.pdf फ़ाइल में, प्रोग्राम के लेखक ने यह लिखा:

0.6 यह पहली सी ++ रिलीज है। चूंकि मैं सी # के बड़े .NET फ्रेमवर्क आवश्यकताओं और उपयोगकर्ताओं को स्थापित करने की इच्छा की कमी से निराश हो गया, इसलिए मैं ने भाषा पर वापस स्विच करने का निर्णय लिया।

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

और, मैं सी ++ सीखने के अन्य लाभों को सुनने में भी रूचि रखता हूं।

+0

आप डी 'http://www.digitalmars.com/d/2.0/overview.html' भी सीख सकते हैं –

उत्तर

5

आप Windows अनुप्रयोग है कि इस तरह नेट या आभासी मशीनों/दुभाषियों के रूप में चौखटे के बिना चलेंगे का निर्माण करना चाहते हैं, तो अपने ही वास्तव में व्यवहार्य विकल्प विजुअल बेसिक होने जा रहे हैं या C/C++

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

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

4

हमेशा के रूप में। निर्भर करता है। जब तक आप microsofts बड़े फ्रेमवर्क से दूर रहते हैं, एमएफसी, .NET आदि के रूप में आपके अनुप्रयोग तेजी से चमकते जा सकते हैं, लेकिन कोड को कड़ी मेहनत कर सकते हैं। आपका लाभ: आप वास्तव में सीखेंगे कि विंडोज़ अपनी अच्छी (?) सतह के पीछे कैसे काम कर रही है। बस COM-ऑब्जेक्ट्स के प्रारंभिक कोड को देखें और आप जानते हैं कि मेरा क्या मतलब है। आप वीबी या सी #

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

छोटी, तेज कार्यक्रमों

गुड लक लिखें: यह एक भूल कला है! आमतौर पर भाषा की वजह से नहीं कर रहे हैं जीयूआई विकास में

सबसे बड़ी बाधाओं:

4

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

चलो इसे इस तरह से रखें: मुझे पूरा यकीन है कि कोई भी .NET CLR के शीर्ष पर एक अच्छा UI डिज़ाइन कर सकता है। सीखना सी ++ एक अच्छी बात है, लेकिन एक अच्छा यूआई विकसित करने की अंतर्निहित समस्याओं को हल नहीं करेगा।

1

हां और नहीं। यह अनुकूलन के बारे में सब कुछ है ... और चूंकि सी ++ आपको निचले स्तर पर काम करने की अनुमति देता है सी ++ तेजी से अनुप्रयोग लिखने के लिए सबसे अच्छी भाषाओं में से एक है। हालांकि यदि आप ओओपी के लिए अधिक अमूर्त दृष्टिकोणों के लिए उपयोग किए जाते हैं तो सी ++ में लागू उन निम्न-स्तरीय यांत्रिकी बहुत परेशान हो सकते हैं। सी ++ में अपने सॉफ्टवेयर का परीक्षण आमतौर पर एक लंबी प्रक्रिया है। यदि आप वैसे भी गति की तलाश में हैं, तो सी ++ निश्चित रूप से सर्वोत्तम विकल्पों में से एक होगा।

6

हाँ, सी ++ बिल्कुल बढ़िया है। Qt देखें। इसमें Python binding भी बहुत अच्छा है, इसलिए आप पाइथन में आसानी से प्रोटोटाइप कर सकते हैं, और जब आपको अतिरिक्त प्रदर्शन की आवश्यकता होती है, तो सी ++ पर पोर्टिंग अधिकतर 1: 1 अनुवाद होता है।

लेकिन वास्तव में, सी ++ लेखन इतना कठिन या तो आप एक महान मंच है जब, सबसे बुरी बात यह :-)

3

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

2

यहां मेरा ईमानदार जवाब है।

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

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

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

मैं आमतौर पर .NET में अपना यूआई और सी ++ में बैकएंड लिखता हूं।

5

मैंने 10 वर्षों के लिए सी ++ विंडोज ऐप्स लिखा और नवीनतम उत्पाद पर काम करने के लिए लगभग 2 साल पहले सी # पर स्विच किया। मैं शर्मिंदा हूं कि सी # ऐप कितना दयनीय है। शुरू करने में 20 सेकंड लगते हैं, स्क्रीन के बीच स्विच करने के लिए आपको एक या दूसरी प्रतीक्षा करनी होगी। मैंने कुछ तीसरे पक्ष के जीयूआई नियंत्रण पुस्तकालय का उपयोग किया है, और यह एक चलनी की तरह स्मृति लीक! मेरा ऐप 150 मेगापिक्सल पर चलता है, और यह शायद ही कुछ भी कर रहा है।

मैं सी ++ पर वापस जाने के लिए देख रहा हूं।

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

मैं देख सकता हूं कि सी # विकसित हो सकता है, और शायद कुछ भविष्य के संस्करण में यह तेज़ और छोटा होगा।

0

सी ++ वास्तव में आपको एक दुबला, औसत और तेज़ एप्लिकेशन (यदि आप इसे सही करते हैं) प्राप्त करेंगे।

हालांकि, .NET ढांचे को डेवलपर बिंदु दृश्य से आराम के लिए बनाया गया है; Win32 एपीआई या एमएफसी पर एक बड़ा सुधार, जो तुलना में कड़ी मेहनत की तरह प्रतीत हो सकता है, तो विचार करें कि आप उन पहलुओं को कैसे कार्यान्वित करेंगे जिनके लिए आपका आवेदन .NET पर निर्भर करता है (ऐसे अन्य ढांचे उपलब्ध हैं जो एमएफसी या विन 32 एपीआई से आसान हो सकते हैं) , और इस तरह के ढांचे का उपयोग करने के लागत और लाइसेंस मुद्दों पर भी विचार करें; उदाहरण के लिए मुफ्त वीसी ++ एक्सप्रेस संस्करण उदाहरण के लिए एमएफसी समर्थन शामिल नहीं है।

यदि आप जानते हैं कि आप कहां आलसी हैं, तो सी ++/सीएलआई समाधान हो सकता है; आपको उन हिस्सों को तेज़ करने के लिए प्रबंधित और देशी कोड को मिश्रित करने की अनुमति देता है। हालांकि अगर यह जीयूआई है जो आवेदन प्रसंस्करण की बजाय आंतरिक रूप से धीमी है; यह एक उपयोगी मार्ग नहीं हो सकता है।