मैं जैसे मैं गिटार बजाना सीख रहा हूँ एल्गोरिदम सीख रहा हूँ।
तब आप एल्गोरिदम नहीं सीख रहे हैं। आप पुनरावृत्ति सीख रहे हैं। दो अलग-अलग चीजें एल्गोरिदम पुस्तक द्वारा प्रोग्रामिंग भाषा का उपयोग एक द्वितीयक कारक है। यह सिर्फ निर्देश का एक वाहन है, एक कार्यान्वयन विस्तार।
है यही कारण है कि आपका ध्यान होना चाहिए
आप क्या ध्यान केंद्रित किया जाना चाहिए संरचना, तर्क और एक एल्गोरिथ्म के गणितीय विशेषताओं को समझने पर है (और संभवतः डेटा संरचना (रों) इसके साथ जुड़े।)।
लेकिन ऐसा करके मुझे लगता है कि मुझे और अधिक तय किया जा रहा है कि मैं जावा में इन्हें लागू करने के लिए केवल सक्षम कर दूंगा।
लेकिन वह है, क्योंकि आप पर ध्यान केंद्रित कर रहे हैं बस कैसे एल्गोरिथ्म कोडित किया जा रहा है (इस विशेष मामले में जावा में।) आप एक कार्यान्वयन विस्तार पर ध्यान केंद्रित कर रहे हैं।
जब आप ड्राइव करना सीखते हैं, तो आप इस बात पर ध्यान केंद्रित नहीं करते कि आप होंडा सिविक या निसान मैक्सिमा को कैसे ड्राइव करना सीखते हैं। आप ड्राइविंग के नियम, अंगूठे के नियम, आवश्यक सावधानी और वाहन चलाने के लिए नियंत्रित कानूनों का सार सीखते हैं।
सीखने वाले एल्गोरिदम के साथ ही। आप "जावा में एल्गोरिदम" नहीं सीखते हैं "हास्केल में एल्गोरिदम" से अधिक नहीं। आप पहले और सबसे महत्वपूर्ण एल्गोरिदम सीखते हैं, वाहन (बहुत विशेष मामलों में संतान) माध्यमिक है।
आप, क्या एल्गोरिथ्म करता है पर ध्यान केंद्रित कर दिया जाना चाहिए कैसे और क्यों। जैसे प्रश्न "यह कैसे काम करता है?" और सबसे महत्वपूर्ण बात * * प्रदर्शन विशेषताओं क्या हैं? ", वे चीजें हैं जिन पर आपको ध्यान केंद्रित करना चाहिए।
प्रत्येक अच्छी एल्गोरिदम पुस्तक (सेडगेविक शामिल) उस संदेश को ले जाती है। यही आपको ध्यान देना चाहिए। आप फिर से ध्यान केंद्रित करने के लिए कैसे जाते हैं, यह किसी की व्यक्तिगत सीखने की रणनीतियों का एक कार्य है।
यदि आप जिस पुस्तक का उपयोग कर रहे हैं वह भाषा-विशिष्ट है तो आप एल्गोरिदम कैसे सीखेंगे?
भाषा पर ध्यान केंद्रित न करके। संरचना पर ध्यान केंद्रित करें, शामिल डेटा संरचनाओं पर ध्यान केंद्रित करें, इनवेरिएंट, पूर्व-स्थितियां और पोस्ट-शर्तें। बिग-ओ (या बिग-ओमिक्रॉन), लिटिल-ओ/लिटिल-ओमिक्रॉन और ओमेगा नोटेशन में वर्णित असीम व्यवहार को समझें।
आप एल्गोरिदम सीख रहे हैं, कोडिंग एल्गोरिदम के माध्यम से जावा में प्रोग्रामिंग नहीं।
यदि आप इस मानसिक छलांग नहीं कर सकते हैं, तो इसका मतलब है कि आपके पास पर्याप्त अभ्यास या अमूर्त विश्लेषण नहीं है। यह अपमान नहीं है, बल्कि एक अवलोकन और सलाह है। कोडिंग, प्रोग्रामिंग भाषा का उपयोग आमतौर पर कंप्यूटिंग के गणितीय विश्लेषण के लिए द्वितीयक है, कंप्यूटर विज्ञान का ध्यान (जिसमें से एल्गोरिदम इसका हिस्सा है।)
नोट मैं 10 साल के लिए जावा किया है, और हालांकि मैं यह काम के लिए पसंद करते हैं, मैं दृढ़ता से यह प्रोग्रामिंग या सीएस विषय सीखने के लिए एक गरीब उपकरण है विश्वास करते हैं।
ए या तो ए के साथ एल्गोरिदम सीखकर बेहतर सेवा दी जाती है) एक प्रक्रियात्मक, सिस्टम-स्तरीय प्रोग्रामिंग भाषा जैसे सी या एडा, या उच्च स्तरीय छद्म-असेंबलर सिम्युलेटर, या बी) लिस्प या हास्केल जैसी कार्यात्मक भाषा।
शुद्ध/छद्म-शुद्ध ओओ भाषाओं में ऑब्जेक्ट ओरिएंटेड फीचर्स बस रास्ते में आते हैं।
एल्गोरिदम गणितीय संरचनाएं हैं जो प्रकृति (परिचालन) और/या क्या (गणितीय) के वर्णनात्मक प्रकृति के साथ गणितीय संरचनाएं हैं। पूर्व प्रक्रियात्मक प्रोग्रामिंग के लिए पूरी तरह अनुकूल है, बाद में कार्यात्मक प्रोग्रामिंग के लिए।
मैं उन्हें पुस्तक का उपयोग करने वाली किसी भी भाषा में लिखूंगा। तब मैं उन्हें किसी और चीज में लिख सकता हूं। या ठीक इसके विपरीत। –
जब तक आप निकट भविष्य में कुछ हास्केल या पर्ल लिखने की योजना नहीं बनाते, मैं चिंता नहीं करता। अधिकांश प्रोग्रामिंग भाषाएं अलग नहीं होती हैं, और अधिकांश मूल सार्वभौमिक सुविधा सेट साझा करती हैं (हालांकि वाक्यविन्यास और विश्व-दृश्य बदलना पड़ता है।) एक बार जब आपको अनुभव हो जाए तो आप लिंट जैसी नई भाषाएं चुन सकेंगे। अभी आप जिस भाषा को लिखने के लिए उपयोग करते हैं उसके बजाय एल्गोरिदम में वास्तविक अवधारणाओं पर ध्यान केंद्रित करें। – Miguel
यह 25 जून तक उपलब्ध नहीं है, लेकिन उपयोगी साबित करने के लिए आपको [एल्गोरिदम पर यह Udacity कोर्स] (http://www.udacity.com/overview/Course/cs215) मिल सकता है। – Moses