एक स्थानीय कॉलेज बिना किसी पूर्व प्रोग्रामिंग अनुभव के प्रथम वर्ष के कॉलेज के छात्रों (16 वर्ष) को C ++ सिखा रहा है।
पहली प्रोग्रामिंग भाषा के रूप में, C ++ उपयुक्त है?
एक स्थानीय कॉलेज बिना किसी पूर्व प्रोग्रामिंग अनुभव के प्रथम वर्ष के कॉलेज के छात्रों (16 वर्ष) को C ++ सिखा रहा है।
पहली प्रोग्रामिंग भाषा के रूप में, C ++ उपयुक्त है?
जवाबों:
जोरदार ढंग से नहीं ।
छात्रों के लिए आपके मन में किसी भी लक्ष्य के लिए, दूसरी भाषा या भाषाओं का क्रम तेज़ और बेहतर होगा। उदाहरण।
"छात्रों को निम्न-स्तरीय अवधारणाओं को समझने की आवश्यकता है।"
"निम्न-स्तरीय" कोडिंग में वस्तुओं को प्राप्त new
करने delete
, उन्हें वापस खिलाने और कभी-कभी एक पॉइंटर होने का संकेत नहीं होता है, जिसमें कहीं ऐसा नहीं होना चाहिए। फ़ंक्शंस, कक्षाएं, और टेम्पलेट निम्न-स्तरीय नहीं हैं। आरए II, उपयोग करने के लिए 12 तरीके const
, std::ostream::operator<<
, protected
और new
निम्न स्तर अवधारणाओं नहीं हैं। उन चीजों के निम्न-स्तर के निहितार्थ हैं और आप महीनों तक या भविष्य के वर्ग तक और इसके बजाय C ++ शब्दार्थ के पहाड़ों को पढ़ाने के लिए छोड़ रहे हैं।
मैं एक अच्छा वातावरण और MIPS या MMIX जैसी शिक्षण सामग्री के साथ कोडांतरक का सुझाव देता हूं। यदि आप जल्दी में हैं, तो सी को सिखाएं कम से कम कोडांतरक आउटपुट को देखें। यह आपको सभी निम्न-स्तरीय समझ देगा C ++ करता है, और फिर कुछ, तेजी से।
"छात्रों को ऑब्जेक्ट-ओरिएंटेशन समझने की जरूरत है।"
C ++ में निर्मित ऑब्जेक्ट-ओरिएंटेशन OO अवधारणाओं, या लगभग किसी भी अन्य उच्च-स्तरीय अवधारणा को पढ़ाने के लिए अधूरा है। संभावित कारणों की एक लंबी, लंबी सूची के लिए C ++ FAQ देखें । आपको या तो उस सभी सामान को हिट करना होगा, जो नए प्रोग्रामर के साथ बहुत लंबा समय लेगा; या फिर आपको इसे बहुत सारे को छोड़ना होगा, नए प्रोग्रामर को अंधेरे में छोड़ना - प्रभावी रूप से, वास्तव में C ++ नहीं जानना!
मेरा सुझाव है कि यदि आप सभी को C ++ पढ़ाना चाहते हैं, तो पहले (पायथन, रूबी, स्क्वीक, कॉमन लिस्प, रैकेट) वस्तुओं के साथ एक सरल, उच्च-स्तरीय भाषा सीखना। इसके अलावा, बहुरूपता को एक अवधारणा के रूप में सीखें जो एक कार्यात्मक भाषा पर जाकर OO से अलग है।
"छात्रों को टेम्प्लेट और टेम्पलेट मेटाप्रोग्रामिंग को समझने की आवश्यकता है।"
कोई भी वास्तव में यह नहीं पूछता है, लेकिन मैं चाहता हूं कि वे करेंगे। C ++ में अच्छा खाका है और STL अच्छा है, लेकिन उन्हें पहले C ++ सिखाने के लिए पर्याप्त उच्च प्राथमिकता नहीं होनी चाहिए। OCaml या Haskell प्रकार प्रणाली सिखाना और फिर उन अवधारणाओं को फिर से समझना वैसे भी तेज हो सकता है।
"छात्रों को समस्या समाधान सीखने की आवश्यकता है।"
हाँ, आप इसे किसी भी भाषा में प्राप्त करते हैं, और यदि C ++ के अलावा लगभग किसी भी भाषा में इसे अधिक प्राप्त करते हैं क्योंकि वहाँ सामान कम है। फिर से, C-C FAQ को उन सभी चीजों की सूची के लिए देखें, जिन्हें विद्यार्थी समस्या-सुलझाने के कौशल के बजाय सीखेंगे।
"उपरोक्त सभी, और हमें केवल एक भाषा का उपयोग करने की आवश्यकता है।" या "नियोक्ता इसे चाहते हैं।" या "हमें सी-स्टाइल भाषा की आवश्यकता है।" या ...
एक से अधिक भाषाएं सिखाएं।
जिस विचार को आप केवल एक भाषा सिखाते या सीखते हुए समय या ऊर्जा बचाते हैं वह सपाट रूप से हास्यास्पद है। यह इस विचार पर आधारित है कि किसी भी भाषा को सीखने में X आदमी महीने ( HINT! HINT! ) बिल्कुल X नंबर एक या एक नंबर प्रति भाषा में लगते हैं। यह इस विचार के लगभग समान है कि आप सभी 'आवश्यकताओं' और 'परीक्षण' कचरे को छोड़ कर समय और पैसा बचा सकते हैं।
कई वाक्यविन्यासों के लिए, आप छात्रों को खतरनाक रूप से पंगु बना देते हैं यदि आप उन्हें हर भाषा में C वाक्यविन्यास की अपेक्षा करते हैं, तो वे अन्य भाषाओं के खिलाफ बेतहाशा पक्षपात करते हैं।
C ++ से शुरू होने की तुलना में लगभग कोई भी रास्ता तेज और बेहतर है। एक सरल उच्च-स्तरीय भाषा सीखना और फिर C ++ तेज होगा। लर्निंग असेंबलर और फिर C ++ तेज होगा। C ++ के अलावा कुछ भी छात्रों को वहां तेजी से मिलेगा और उन्हें बूट करने का तरीका पता चलेगा। बस C ++ पहले न सिखाएं।
नहीं, C ++ अनुभवी C ++ डेवलपर्स के लिए भी एक कठिन भाषा है। यहां तक कि सबसे सरल एल्गोरिदम के लिए आपको भाषा की कई सूक्ष्मताओं को समझाना होगा। एक हैलो वर्ल्ड उदाहरण पर विचार करें:
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}
वह #include
आज्ञा क्या है ? क्या है std::cout
? क्यों ::
? क्या है <<
? ओह, यह एक अतिभारित ऑपरेटर है! ओवरलोड ऑपरेटर क्या है? Sooo, के लिए ints
, यह बिट शिफ्टिंग करता है, लेकिन जो कुछ भी std::cout
है, वह कंसोल के लिए सामान का उत्पादन करता है। ओह्ह, std::cout
एक धारा है, और धाराओं में उनके <<
और >>
ऑपरेटर ओवरलोड हैं।
आइए देखते हैं Python में एक ही नमूना:
print("Hello World!")
यह है, चलो कुछ एल्गोरिदम कोड चलते हैं।
यह शायद एक अच्छी पहली भाषा नहीं है: जटिल वाक्यविन्यास, बहुत सारे नियम, पुरानी भाषा, त्रुटि-प्रवण स्मृति प्रबंधन। अपने छात्रों को कुछ और पढ़ाने के लिए बेहतर है जैसे कि स्मालटाक, या पायथन जैसे प्रोग्राम के लिए कुछ अच्छा या कुछ नकाब जैसे कार्यात्मक।
वे जीवन में C ++ बाद में सीख सकते हैं (यदि वे इसकी मदद नहीं कर सकते हैं), के बाद वे बेहतर भाषा सीख चुके हैं।
संक्षिप्त उत्तर: हाँ!
मैं कहूंगा कि कोई भी भाषा एक उपयुक्त शुरुआत है लेकिन विशेष रूप से C ++ (या समतुल्य)। इन दिनों C # और Java उपयोग और प्रोग्रामिंग में प्रमुख भाषाएं हैं, इनके साथ आप एपीआई और IDE पर जल्दी से झुकना सीख जाते हैं, लेकिन C ++ के साथ आपको प्रदर्शन अनुकूलन आदि सहित जमीन से प्रोग्रामिंग सीखने का मौका मिलता है।
इससे पहले कि आप .Sort () में निर्मित भाषाओं पर आंख मूंदकर भरोसा करने से पहले प्रोग्रामिंग, लूपिंग और सॉर्टिंग की मूल बातें सीखना कभी भी बुरा नहीं होगा।
वास्तव में मेरा मानना है कि यह एक बहुत ही व्यावहारिक कारण के लिए पहली भाषा के रूप में शायद एक अच्छा विकल्प है: C ++ सीखने के बाद आपके द्वारा सामना की जाने वाली किसी भी अन्य भाषा को सीखने के लिए एक हवा की तरह प्रतीत होगा।
जब मैंने 15-16 की उम्र में अपने आप को C ++ सिखाया था।
जादू को दूसरों पर छोड़ना और चीजों के आंतरिक कामकाज को स्वयं सीखना बेहतर है।
यदि आप प्रवेश स्तर के C ++ सिंटैक्स और शब्दार्थ का पता नहीं लगा सकते हैं, तो आप कंप्यूटर पर अच्छे नहीं हैं। यह इतना मुश्किल नही है। "सी विद क्लासेस" से बचने का कोई अच्छा कारण नहीं है।
यदि आप उम्मीद करते हैं कि छात्र टेम्पलेट मेटाप्रोग्रामिंग, पॉलीमॉर्फिक कॉल को समर्पित करना और एकाधिक वंशानुगत पदानुक्रमों को अनसुना करना शुरू कर देंगे - तो आप जिस भी प्रकार की भाषा का उपयोग करते हैं, उसके लिए एक एंट्री लेवल क्लास के लिए हास्यास्पद है।
छात्रों के लिए प्रोग्रामिंग की पेचीदगियों को छिपाना चाहते हैं। यह अच्छी तरह से समाप्त नहीं होता है (सीएफ स्पोलस्की के जावा स्कूल निबंध)। अगर वे अपना सिर सीधा नहीं करवाते हैं तो वे लोग डेलीडब्ल्यूटीएफ पर खत्म हो जाते हैं। सार रिसाव, और जब (नहीं तो) अमूर्त लीक, कि इससे निपटने के लिए बदतर है। मैंने प्रवेश स्तर C ++ छात्रों के लिए TA के रूप में काम किया है। या तो चीजों को सभी तरह से छिपाना पड़ता है, या उन्हें जांच के लिए प्रकाश में लाना पड़ता है। जादू सीखने वाले का दुश्मन है।
अगर मुझे मशीन कोड को संकलित करने वाली एक प्रारंभिक भाषा की सिफारिश करनी थी, तो पास्कल संस्करण शायद सबसे अच्छा तरीका होगा। यह सी परिवार से अधिक नियमित और संरचित दृष्टिकोण है जो मुझे याद है।
मैं कहूंगा कि 'नहीं' - मुझे प्रोग्रामिंग सीखने की उत्सुकता और इच्छा थी, और कॉलेज में अपने इंट्रो ईयर में सही सलामत बल्लेबाजी के साथ गया। एक शिक्षक के साथ युग्मित जो C ++ पढ़ा रहा था जैसे कि यह कोई अन्य भाषा (अवधारणाएँ जो उनके लिए समझ में आती हैं, जरूरी नहीं कि भाषा या वास्तविक विश्व अनुप्रयोग की अवधारणाएं), और परियोजनाएं हर हफ्ते हमें तुरंत फेंक दी जाती हैं, मैं दुर्घटनाग्रस्त हो गया और साथ में जला दिया गया वर्ग का आधा। जब तक मुझे पचाया नहीं जा सकता, तब तक प्रयोग करें और जो मुझे सिखाया जा रहा था उसे लागू करें, मैं प्रोजेक्ट होमवर्क से जूझ रहा था जो परीक्षणों के रूप में दोगुना हो गया। मैं तर्क दूंगा कि यह 200 के स्तर का 100 से अधिक का कोर्स था।
मैंने वास्तव में पूरी कोशिश की। मैंने सहानुभूति नहीं मांगी, मुझे पता था कि यह एक चुनौती होगी, लेकिन शिक्षक भी मेरी मदद नहीं करेंगे। बस मुझे पाठ्यपुस्तक पढ़ने के लिए कहा था, जैसा कि मैं कर रहा था।
मैं तर्क दूंगा (और कुछ लोग असहमत होंगे) कि रूबी या पायथन प्रोग्रामिंग की दुनिया में किसी को तोड़ने के लिए एक बेहतर भाषा है। साफ, संक्षिप्त, पठनीय, स्पष्ट वाक्यविन्यास।
नहीं।
एक शिक्षण भाषा के रूप में, C ++, C की तुलना में केवल थोड़ा बेहतर है, जो कि सबसे खराब शिक्षण भाषाओं में से एक है। यह सामने की ओर बहुत अधिक जटिलता का परिचय देता है, भाषा के कुछ हिस्से गहन रूप से गैर-सहज होते हैं, और अधिकांश समय आप सामान्य रूप से प्रोग्रामिंग की तुलना में C ++ के बारे में अधिक सीख रहे होते हैं।
यह कहना नहीं है कि C ++ (या C) बुरी भाषा हैं, या सीखने लायक नहीं हैं; बस यह कि बेहतर शिक्षण भाषाएँ उपलब्ध हैं, जैसे कि पायथन।
string
डेटा प्रकार प्रदान करता है जो ऑपरेटरों को पसंद करता है +
, =
और, ==
उन चीज़ों को करने के लिए जो छात्रों को अधिक-या-कम उम्मीद करते हैं, इसकी तुलना में सी में कैसे प्रसंस्करण की आवश्यकता है, इसलिए "थोड़ा" । मैं या तो एक शिक्षण भाषा के रूप में सिफारिश नहीं करेंगे।
माध्यमिक शिक्षा के दो आवश्यक प्रकार हैं: विश्वविद्यालय और व्यापार विद्यालय। अंतर यह है कि आप स्नातक होने के बाद क्या करने के लिए तैयार होना चाहते हैं। मोटर वाहन क्षेत्र में, यह है कि क्या आप एक मैकेनिक या मैकेनिकल इंजीनियर होंगे।
कहा जा रहा है कि, अगर आप एक इंजीनियर बनना चाहते हैं, तो C ++ एक बेहतरीन पहली भाषा है और यदि आप किसी मैकेनिक के प्रोग्रामिंग समकक्ष बनना चाहते हैं तो एक घटिया।
C ++ पर एक इंट्रो क्लास डेटा प्रकारों, परिभाषाओं, घोषणाओं, संकेत, मेमोरी आवंटन, और आगे के बारे में बात करने में बहुत समय बिताने जा रही है। यदि आप कुछ उपयोगी काम करने में सक्षम होने के लिए बिल्डिंग सेमेस्टर खर्च करने का इरादा रखते हैं, तो ये एक बेहतरीन आधार हैं, लेकिन जानना चाहते हैं कि एक बार जब आप वहां पहुंच जाते हैं तो आपके पास किसी भी जटिलता की डिग्री को संभालने की नींव होती है।
दूसरी ओर, यदि आप अधिक तेज़ी से कुछ उपयोगी करने में सक्षम होना चाहते हैं, लेकिन कोई आपत्ति नहीं है यदि डोमेन और जटिलता सीमित है, तो उस निचले स्तर की अवधारणाओं के सामने अपना सारा समय व्यतीत करने में व्यर्थ होने वाला है। बहुत सारे प्रोग्रामर हैं जो एक महान HTML फॉर्म वैलिडेटर लिख सकते हैं, लेकिन डिवाइस ड्राइवर को डिज़ाइन करने के तरीके के बारे में कोई सुराग नहीं है।
ज़रूर। मेरी पहली भाषा सी थी, लेकिन यह वास्तव में सी ++ में हमारी कक्षा को आसान बनाने के लिए थी। जब मैंने विश्वविद्यालय में प्रवेश किया, तो जावा को संभालना बहुत आसान हो गया। C ++ में थोड़ा स्टेटर लर्निंग कर्व हो सकता है, लेकिन अगर इसे ठीक से पढ़ाया जाए तो यह ठीक होना चाहिए।
नहीं, C ++ पहली भाषा के रूप में उपयुक्त नहीं है। जैसा कि यहां दिखाया गया है, कई पेशेवर प्रोग्रामर इस राय को साझा करते हैं, लेकिन यह भी एक राय है जो पेशेवर शिक्षकों के पास है।
यहाँ कार्नेगी मेलन विश्वविद्यालय के डीन की एक रिपोर्ट में फ्रेशर्स के लिए प्रोग्रामिंग के लिए एक परिचयात्मक पाठ्यक्रम के लिए C ++ का उपयोग करने के बारे में कहना है:
सी या सी ++ जैसी मानक भाषाएं इस पाठ्यक्रम के लिए उपयुक्त नहीं हैं क्योंकि उनकी जटिलता और कमियां अनौपचारिक और यंत्रीकृत तर्क दोनों तकनीकों को बाधित करती हैं।
सीएमयू दो परिचयात्मक पाठ्यक्रम, एक अनिवार्य एक और एक कार्यात्मक प्रदान करता है। SML को कार्यात्मक प्रोग्रामिंग के लिए चुना गया था। मुझे नहीं पता कि अनिवार्य पाठ्यक्रम के लिए क्या चुना गया था, लेकिन रिपोर्ट में सी के सबसेट का उपयोग करने का उल्लेख है।
निश्चित रूप से C ++ बहुत पहली भाषा हो सकती है। लेकिन यह कितना अच्छा पढ़ाया जाता है इसके बारे में है।
हर कोई कहता है, पहली भाषा को समझना बहुत आसान होना चाहिए। लेकिन मेरी बात यह है कि अधिकांश लोग स्नातक स्तर पर प्रोग्रामिंग शुरू करते हैं। तो, आप कुछ सिखा सकते हैं जो वे समझ सकते हैं। और C ++ के साथ, आप निचले स्तर से लेकर उच्च स्तर की प्रोग्रामिंग तक जा सकते हैं।
नहीं, बिल्कुल नहीं।
अगर मेरे पास अपना रास्ता होता, तो मैं इसे पूरी तरह से अकादमिक सेटिंग में इस्तेमाल करना छोड़ देता। उन कारणों के लिए नहीं जो पहले से बने लोगों के विपरीत हैं, लेकिन क्योंकि बहुत से लोग सोचते हैं C ++ (या यह विविधताएं) लगभग हर समस्या का उत्तर है क्योंकि आप इसे लगभग किसी भी स्थिति में उपयोग कर सकते हैं। यह प्रोग्रामिंग का पेचकश है।
कुछ लोग इसका उपयोग शिकंजा कसने के लिए करते हैं, जो काम के लिए एक उचित उपकरण है। अन्य लोग इसे एक प्राइबर की तरह उपयोग करते हैं, जबकि अक्सर प्रभावी होता है, वास्तव में आदर्श नहीं क्योंकि एक पेचकश, कोई फर्क नहीं पड़ता कि आपके पिता आपको बता सकते हैं, एक प्राइबर नहीं है, और दुरुपयोग के कारण भयावह रूप से विफल हो सकता है क्योंकि skk की रचना जानबूझकर नहीं बनाई गई है जिस तरह की ताकतों के लिए एक प्रिबर का सामना होगा। फिर भी अन्य लोग इसे एक मुक्का या छेनी के रूप में इस्तेमाल कर सकते हैं, और वे लगभग हमेशा समस्याओं का सामना करेंगे क्योंकि पेचकश के हैंडल को उस तरह के दुर्व्यवहार के लिए नहीं बनाया गया था जो पंच या छेनी को झेलने के लिए डिज़ाइन किया गया हो।
मेरी राय में, एक प्रोग्रामर का काम आम तौर पर वास्तविक समस्याओं को स्वचालन में अनुवाद करना है जो कुछ हद तक बेहतर दक्षता (किसी कार्य के लिए संसाधनों का कम होना), वेग (कार्य करने के लिए समय कम करना), पूर्वानुमेयता (दोहराव में वृद्धि) प्रदान करता है एक कार्य), या संगठन (कार्यों के बीच संबंध की जागरूकता में वृद्धि)।
हालांकि यह समझ में आता है कि प्रोग्राम करने वाले सभी लोगों को कंप्यूटर के निम्न स्तर के संचालन और विशेष रूप से डिवाइस IO और मेमोरी आवंटन के बारे में कुछ सामान्य ज्ञान होना चाहिए, यह निश्चित रूप से असामान्य है कि वास्तव में किसी भी महत्वपूर्ण डिग्री तक उस ज्ञान का उपयोग करना है, अकेले ही इसका लाभ उठाएं अधिकांश कार्य। समस्या के व्यापक संदर्भ को समझने के बिना ऐसा करने का प्रयास एक प्रयास के लिए अत्यधिक जोखिम डालता है।
यह बेतुका है कि पहली प्रोग्रामिंग लैंग्वेज C / C ++ या क्लोज वेरिएंट होनी चाहिए, क्योंकि C और उसके डेरिवेटिव के हल की समस्याएं निश्चित रूप से वर्तमान और भविष्य की समस्याओं के कुछ बड़े प्रतिशत के लिए उचित नहीं हैं (सिवाय जहां किसी को बचाव करना हो एक पहले, पेचीदा कार्यक्रम), और वास्तव में आने वाली समस्याओं का एक न्यूनतम सेट है। अधिकांश प्रोग्रामर छोटे मोबाइल, इंटरकनेक्टेड डिवाइसेस के बढ़ते प्रचलन के बावजूद कोर ओएस फीचर या डायरेक्ट डिवाइस इंटरफेस विकसित करने के करीब नहीं आएंगे। ज्यादातर काम करेंगे और वैसे ही रहेंगे जैसे हमने किए थे। कोड को ठीक करना और चरणबद्ध करना जो दो पीढ़ियों से अधिक पुराना है, उस तकनीक पर लागू करना जो पहले से ही उम्र दिखा रहा है, या हत्यारा (x + 1) ऐप पर प्रौद्योगिकी के फ्रिंज में काम कर रहा है।
पहली भाषा के लिए, मैं लेगो एनएक्सटी को देखूंगा, जो कि एक लाइट ड्यूटी है, लेकिन लैबव्यू का अत्यधिक फीचर युक्त संस्करण है। जबकि लेगो एनएक्सटी का व्यापक रूप से वाणिज्यिक उद्यमों में उपयोग नहीं किया जाता है, यह "सेंसर रिच" तरीके से प्रोग्राम करने के लिए मौलिक प्रकृति पेश करेगा। मैं इसे जावास्क्रिप्ट या टीसीएल / टीके जैसी कुछ हद तक तटस्थ स्क्रिप्टिंग भाषा के साथ जोड़ सकता हूं। समस्या की जटिलता की भिन्न डिग्री को शुरू करने और हल करने के लिए फीडबैक लूप और लचीलेपन के संदर्भ में उच्च वापसी के साथ आपको बहुत ही बुनियादी लेकिन प्रभावी कार्यों को करने के लिए जो कुछ भी खोजना है, उसके संदर्भ में दोनों अपेक्षाकृत कम प्रभाव डालेंगे। साथ ही, यह छात्रों के लिए एक अच्छा अवसर प्रदान करता है क्योंकि वे डिब्बाबंद पर्यावरण में प्रदान की गई क्षमता से अधिक का पता लगाने के लिए आगे बढ़ते हैं: अंधेरे, नम में काम करने का प्रयास करने का मौका,
जब वे चार सिलेंडर को स्वचालित रूप से चलाना सीख जाते हैं, तो उन्हें बड़े v8 मैनुअल हॉट्रोड में ले जाएं, अगर वे वास्तव में रुचि रखते हैं और प्रेरित हैं। अगर जोएल अपने पैरों के नीचे किसी भी पत्थर के नीचे रॉक-स्टार प्रोग्रामर नहीं ढूंढ सकता है, तो उसे बस कहीं और देखना होगा, या फिर इस बात पर पुनर्विचार करना होगा कि उसे अपने टूलबॉक्स में स्क्रूड्राइवर्स के गुच्छा की अधिक आवश्यकता क्यों हो सकती है।
कुछ बिंदु जहां शुरुआती आसानी से C ++ में गलतियां करते हैं:
असाइनमेंट बनाना जहाँ आप परीक्षण करना चाहते थे = बनाम ==
गुम;
उदाहरण के लिए पास्कल शुरू-अंत बनाम घुंघराले कोष्ठक की पठनीयता
और फिर भ्रमित करने के लिए सभी शामिल फाइलें, मैक्रोज़, मेमोरीमैनमेंट आदि हैं।
इसलिए मैं कहूंगा कि सी ++ शुरू करने के लिए सबसे अच्छी भाषा नहीं है - हालांकि इसमें कोई संदेह नहीं है कि जब आपने इसे सीखा है तो यह बहुत उपयोगी हो सकता है।
मैं - जैसा कि दूसरों ने भी सुझाव दिया है - सी #, जावा या शायद वीबी का उपयोग करें और सिंटैक्स हाइलाइट, डीबगर आदि के साथ एक अच्छी आईडीई का उपयोग करें जिससे त्रुटियों से उबरना आसान हो सके।
जब मैं कॉलेज में था C ++ कॉलेज के पहले साल भर में पढ़ाई जाने वाली नींव की भाषा थी। सिद्धांत यह था कि इसमें कुछ जटिल प्रोग्रामिंग अवधारणाएं थीं, इसलिए यदि आप इसे मास्टर कर सकते हैं, तो आप अन्य भाषाओं को उठा सकते हैं। इसने एक अच्छी नींव के रूप में मेरी सेवा की।
यह कहते हुए कि, मैंने अपने वरिष्ठ वर्ष के दौरान, यह निर्धारित करने के लिए एक समिति पर कार्य किया कि कोर भाषा को जावा में बदलना है या नहीं। कई प्रमुख नियोक्ताओं और विभाग के कुछ पूर्व छात्रों से बात करने के बाद, यह निर्धारित किया गया था कि जावा के लिए एक स्विच छात्रों का सबसे अच्छा हित था। जिन नियोक्ताओं से हमने बात की, वे चाहते थे कि लोग उन्हें किराए पर लेने के लिए जिस भाषा का इस्तेमाल कर रहे थे, उसमें अनुभव हो। मेरा मानना है कि 10 साल बाद, वे अभी भी जावा को अपनी मुख्य भाषा के रूप में उपयोग कर रहे हैं।
इसी तरह के एक नोट पर, हम हाल ही में कॉलेज के एक जोड़े को वास्तव में अच्छा C ++ कौशल के साथ किराए पर लेना चाहते हैं। हम कोई खोज नहीं कर पाए हैं।
मैं हाँ कहूँगा। लेकिन कोई भी भाषा वास्तव में पहली भाषा हो सकती है। मुझे लगता है कि सी ++ अच्छा है क्योंकि यह जटिल और कभी-कभी मुश्किल है, यह आपको दिखाता है कि आप वास्तव में क्या कर सकते हैं (कम सीमाएं)। इसके अलावा, इसमें कुछ ऑब्जेक्ट ओरिएंटेड डिज़ाइन हैं जो आपको अन्य भाषाओं को लेने के लिए तैयार होने में मदद कर सकते हैं।
C ++ मेरी पहली भाषा थी और मुझे खुशी है कि यह थी। इसने मुझे ओओपी मानसिकता में जल्दी सोचने पर मजबूर कर दिया और मैं इसके लिए आभारी हूं। लेकिन अंत में, यह वास्तव में नीचे आता है कि आप क्या करना चाहते हैं। भाषा उतनी मायने नहीं रखती, क्योंकि अगर आप एक भाषा के साथ अच्छे हो सकते हैं, तो संभावना है कि आप किसी अन्य को लेने में कोई समस्या नहीं होने वाले हैं। आप क्या करना चाहते हैं? खेल बनाओ? मोबाइल फोन के लिए कार्यक्रम? हर एक के पास इसके लिए बेहतर अनुकूल उपकरण और भाषाएं होंगी।
C ++ एक विशेषज्ञ भाषा है, न कि शुरुआती एक ... C कहेंगे पहले, नहीं जावा या C # या पायथन ... क्यों? क्योंकि C आपको अपनी याददाश्त और कुछ पेचीदा अवधारणाओं जैसे पॉइंटर्स के बारे में ध्यान रखना सिखाता है जो सभी भाषाओं द्वारा "छिपी" हैं, जो अभी तक हर जगह मौजूद हैं। मैंने बहुत सारे युवा डेवलपर्स को देखा है जो यह भी नहीं समझते हैं कि स्मृति को कभी-कभी क्यों जारी किया जाना चाहिए और विश्वास करें कि कचरा संग्रहकर्ता थोड़ा बौना नहीं है जो सभी कोडिंग क्रेपों को साफ करता है: वे तुरंत करते हैं, वे पलटे और उछालते हैं, भले ही वे XXXXBB हों RAM ... लेकिन उन्हें समझ में नहीं आता है कि क्यों कचरा संग्रहकर्ता जादुई रूप से सब कुछ साफ नहीं कर रहा है! और मैंने इस तरह के डेवलपर्स को C ++ में कोडिंग (और यहां तक कि कॉरिएर में भी) देखा है, और यह एक कत्लेआम था। इसलिए मैं सी में कोडिंग सीखने की सलाह दूंगा और फिर ऑब्जेक्ट कॉन्सेप्ट्स और सभी चीनी के लिए पायथन / जावा / सी # पर जाऊंगा। फिर जब आप उस सब को समझ जाते हैं, तो आप C ++ पर जाते हैं और आपको C ++ की शक्ति महसूस होती है, लेकिन आपको इसके सभी खतरों का भी पता चलता है और इसका उपयोग किसी के द्वारा क्यों नहीं किया जाना चाहिए;)
नहीं। C ++ में इतने सारे सामान हैं, जो एक नौसिखिया को समझना मुश्किल है। "सभी प्रोग्रामिंग भाषाएं समान हैं" में मत जाओ।
बेसिक या पास्कल से शुरू करें, ("वे पदावनत हैं" सामान को अनदेखा करें), और बाद में, सी / सी ++ / जावा / सी # / पर्ल के साथ। या अगर आपके पास मौका है, तो पहले Logo & Karel और फिर बेसिक या पास्कल।
पीडी कुछ विश्वविद्यालयों और कॉलेजियम में एक प्रोग्रामिंग लैंग्वेज उपयोग और तुलना वर्ग है, और ऐसा होता है कि मैंने उस कक्षा को पढ़ाया था;;
प्रोग्रामिंग की नींव सीखने के लिए आप कोई भी भाषा चुन सकते हैं। मैंने C / C ++ में सामान सीखा। लेकिन 7 साल बाद, मेरे स्कूल में उपकरण / भाषाएं बदल जाती हैं और वे जावा / सी # पसंद करते हैं। भाषाएँ केवल उपकरण हैं। आपको जो बेहतर करने की आवश्यकता है, वह मूल बातें हैं। उदाहरण के लिए MIT में लोग अजगर का उपयोग करके एल्गोरिथ्म के मूल सिद्धांतों को सीखते हैं। उदाहरण के लिए जावा वेब प्रोग्रामिंग के लिए अच्छा हो सकता है। लेकिन C / C ++ सेवाओं और उच्च प्रदर्शन अनुप्रयोगों के लिए अच्छे हैं। तो यह आपकी स्थितियों पर निर्भर करता है।
यदि "उपयुक्त" "संभव" के लिए खड़ा है, हाँ। यदि "अच्छा" के लिए, निश्चित रूप से नहीं।
यह संभव है कि यहां तक कि सी ++ को भी पसंद करें, लेकिन इसके लिए आप कई भाषाओं को बेहतर ढंग से सीखते हैं और कुछ दशकों तक चैती-जीवन सड़े हुए कोडबेस के साथ काम करते हैं, "वास्तव में काम करने वाले नैट्रिवियल सॉफ्टवेयर का क्राफ्टिंग" पर अनुभव प्राप्त करें - फिर सी ++ में आकर्षण होगा।
शुरू में नहीं जब आप कुंवारी हैं, छोटी, सरल (लेकिन माना जाता है कि दिलचस्प और मजेदार) समस्याओं के साथ बेला।
मैं अजगर के साथ शुरू होता हूं, उसके बाद SICP (स्कीम), या कुछ इसी तरह का। हो सकता है कि उलटा हो या इंटरलेव किया गया हो। उन लोगों के साथ आप बस जा सकते हैं और समस्या से निपट सकते हैं। सिस्टम से लड़ने के बजाय, गहरे कीचड़ में चलना और सभी प्रकार के अतार्किक चुटकुले और उनके ऐतिहासिक कारण सीखें।
बाद में, जब आप पहले से ही एक पेपर बैग से अपना रास्ता तय कर सकते हैं, तो नंगे धातु पर स्विच करें: विधानसभा और कई आर्किटेक्चर के तरीके सीखें, साथ ही शायद नुथ मिक्स। मेरा मतलब यह नहीं है कि केवल मेमोरी, रजिस्टर, ALU, कैश, इंटरप्ट को समझने और रीड लेवल पर जाने के लिए ओपकोड्स को याद रखना या ज्यादा असली चीजें करना।
फिर उस नींव के साथ आप सी ++ सहित अन्य भाषाओं के संपर्क में आ सकते हैं। शायद बीच में कुछ "इतिहास और भाषाओं के विकास" को जोड़ने के लिए एक अच्छा विचार है।
मैंने मिडिल स्कूल में C ++ से शुरुआत की। मैंने इस पुस्तक की एक प्रति उठाई: सी ++ हिटल और डेइटल द्वारा प्रोग्राम कैसे करें । यह किताब काफी अच्छी है।
सच कहूँ तो यहाँ कोई सही या गलत उत्तर नहीं है, मैंने व्यक्तिगत रूप से पाया कि C ++ बहुत ही उपयोगी था। मैंने इसे ओओपी के लिए सभी तरह से सीखा (मैं "यह" पर फंस गया, जो अब मुझे समझ में नहीं आता है कि मुझे यह कैसे मिल सकता है लेकिन जो भी हो)। इसे आज़माएं, निराश न हों। यदि आप अटक जाते हैं, तो अन्य भाषाओं की जाँच करें और नए सीखते रहें। विचार यह है कि जैसा कि आप एक ही अवधारणा को 2-3 विभिन्न रूपों में देखते हैं आप उन्हें बेहतर समझ पाएंगे। जैसा मैंने कहा, "इस" पॉइंटर की अवधारणा ने मुझे भ्रमित किया लेकिन जब मैंने पायथन में एक ही चीज़ देखी (नाम के बजाय स्वयं) तो यह मेरे लिए सही मायने में समझ में आया क्योंकि मैंने इसे सी ++ में समझा था। यदि आप कई कॉलेजों को पढ़ा सकते हैं तो जावा सीखें। अजगर या माणिक सीखें क्योंकि यह भाषा की दो पत्रिकाएँ हैं और यदि आप क्लोजर (और अन्य सभी लिस्प्स), हास्केल, स्काला जैसे अधिक आला / नए सामान तलाश सकते हैं ...
नहीं, मैं जावा या C # से शुरू करूँगा। यदि आप C ++ सीखना चाहते हैं, तो संभवतः मूल बातें सीखने के बाद इसका आसान हो जाता है, जैसे कि एक वर्ग क्या है, लूप और कांटे कैसे करें (यदि, तो कथन), आदि। यह सीखना अधिक महत्वपूर्ण है कि कैसे देखना है। एक समस्या या एक गणितीय समीकरण और यह प्रोग्राम की तुलना में यह पता लगाना है कि क्या आपने अपनी सभी मेमोरी या जो भी जारी किया है।
ऐसा प्रतीत होता है कि इस सवाल के पीछे यह धारणा है कि "C ++ इतनी जटिल प्रतीत होती है, क्या कोई 16 साल का व्यक्ति इसे पहली (कंप्यूटर प्रोग्रामिंग) भाषा के रूप में चुन पाएगा?"
जब हम 4 या 5 साल के होते हैं, तब तक हम ज्यादातर निर्माण मातृभाषा में ही करते हैं, बस इतना ही इसके संपर्क में आने वाले अन्य लोगों के सुनने के माध्यम से। महान वाक्य बनाने में एक जीवन समय लगता है, कोई सवाल नहीं।
अधिकांश मानव भाषाओं की तुलना में C ++ निश्चित रूप से बहुत कम जटिल / जटिल है। 16 वर्ष के बच्चों को इसे लेने में सक्षम होना चाहिए। क्या वे इसके साथ महान कोड लिखेंगे? इंतजार करने और देखने के लिए मिला।
शुरुआती को पहले 'प्रोग्रामिंग' की सराहना करने की आवश्यकता है। शुरुआती लोगों के एक वर्ग को प्रशिक्षित करने के मेरे अनुभव में, उन्होंने पहले सराहना की कि वे सबसे अधिक क्या समझते हैं। पाइथन बनाम सी # की तरह वे पाइथन की सराहना करते हैं क्योंकि इसका बहुत उच्च स्तर है और सी # करता है जैसे प्रतीकों का उपयोग नहीं करता है, जिसका अर्थ है मानव भाषा के निकट, इसकी बहुत अंग्रेजी। इसलिए मैं उच्च स्तर से निम्न स्तर तक प्रोग्रामिंग सीखने की सलाह दूंगा।