2010-07-18 6 views
5

मैं जावा में नया हूं और हेड-फर्स्ट बुक का जिक्र करता हूं।क्या जावा पुस्तक पर्याप्त है या मुझे पहले एल्गोरिदम सीखना है?

क्या मुझे जावा में प्रोग्राम बनाने में सक्षम होने के लिए एल्गोरिदम सीखना है?

क्या मुझे पहले एल्गोरिदम सीखना चाहिए या केवल जावा पुस्तकें जैसे प्रभावी जावा, जावा पज़लर इत्यादि पर्याप्त होंगी?

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

एक सफल जावा डेवलपर होने के लिए, क्या मुझे सीएलआरएस में दिए गए सभी उन्नत एल्गोरिदम जानने की ज़रूरत है?

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

+3

आपकी प्रोग्रामिंग पृष्ठभूमि क्या है? क्या आपको एल्गोरिदम और डेटा संरचनाओं की समझ है? – quantumSoup

+0

आपको जावा में या किसी भी प्रोग्रामिंग भाषा के लिए उन्हें लागू करने से पहले आपको एल्गोरिदम की समझ की आवश्यकता है। –

+1

@ Raze2dust - आपको उन्हें समझने से पहले एल्गोरिदम का वर्णन करने के लिए एक भाषा की भी आवश्यकता है। अंग्रेजी इसके लिए इतना महान नहीं है, और गणित शायद ही कभी अपने आप को समझ में आता है। और आपके एल्गोरिदम प्रयोगों के लिए एक उद्देश्य परीक्षण के बिना (यह वास्तव में काम करता है), कुछ गलत विचारों को गहराई से प्राप्त करना आसान है। – Steve314

उत्तर

10

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

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

आपकी वर्तमान स्थिति में मैं एक एल्गोरिदम पुस्तक लेने और जावा में एल्गोरिदम लागू करने की अनुशंसा करता हूं। यह आपको जावा और एल्गोरिदम सिखाता है।

इसके अलावा पढ़ें "स्वच्छ कोड", "व्यावहारिक प्रोग्रामर" और ठोस http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod सिद्धांतों

+1

+1, सबसे अच्छा जवाब यहाँ! "द प्रोगामैटिक प्रोग्रामर" के लिए –

+0

+1 - एक होना चाहिए :) – bedwyr

2

मेरी सलाह - जावा का सबसेट सीखें, फिर कुछ बुनियादी एल्गोरिदम सीखें, फिर पता लगाएं कि आप वहां से कहाँ जाना चाहते हैं।

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

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

संपादित

टिप्पणियों से, मुझे लगता है कि आप अच्छी तरह से "वहाँ से जहां जाने के लिए" चरण में पहले से ही कर रहे हैं।

एल्गोरिदम (या अलग गणित) को न भूलें क्योंकि आपको विश्लेषण की परवाह नहीं है, हालांकि। एक व्यापक (गहराई से नहीं) समझ एक उपयोगी संसाधन है - वे समस्या निवारण विधियों के लिए बहुत अच्छे हैं।

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

टोपोलॉजिकल प्रकार के बारे में जानना अंतिम चरण छोटा बनाता है। दृढ़ता से जुड़े घटकों के बारे में भूल जाने के कारण मुझे काफी समय लगता है। यह समझना कि कैसे Tarjans दृढ़ता से जुड़े घटक एल्गोरिदम काम करता है ... विकिपीडिया और कलम और कागज के साथ कुछ मिनट पर्याप्त हैं, एक बार जब आप जानते हैं कि क्या देखना है।

दरअसल, मुझे कबूल करना चाहिए - "मुझे याद दिलाया गया" का अर्थ है कि मैंने टोपोलॉजिकल सॉर्टिंग पर एक पुराने डॉ। डॉब्स लेख को देखा जो उसी दृष्टिकोण का उपयोग करता था।

0

@Chankey: मेरे अनुसार आपको जावा और एल्गोरिदम दोनों हाथों में हाथ लेना चाहिए। सबसे पहले जावा प्रोग्रामिंग भाषा की कुछ मूल बातें सीखें जैसे वर्ग, डेटा प्रकार, फ़ंक्शंस इत्यादि। फिर सॉर्टिंग और खोज के कुछ बुनियादी एल्गोरिदम सीखें।और, अब इन एल्गोरिदम को लागू करने के लिए अपने जावा ज्ञान को लागू करें।

चीयर्स !! मुकुल गुप्ता

+0

ठीक है, धन्यवाद :) –

2

मैं अधिकांश भाग के लिए स्टीव 314 के साथ हूं लेकिन कुछ चीजें निर्दिष्ट करना चाहता हूं।

पर्याप्त जावा (या जो कुछ भी) खतरनाक होने के लिए जानें। फिर मुख्य डेटा संरचनाएं (सूचियां, ढेर, मानचित्र, पेड़, आदि), जिसमें उन्हें ट्रैवर्स करने के लिए कुछ एल्गोरिदम शामिल हैं। इसके बाद अपने बाकी एल्गोरिदम काम करते हैं। यहां कुछ विशिष्ट लक्ष्य दिए गए हैं, यदि आप उन्हें चाहते हैं, तो Data Structures & Algorithms in Java के आदेश को कम या ज्यादा दर्पण करें।

  1. मूल स्तर पर जावा और ओओ को समझें। विशेष रूप से विरासत और बहुरूपता (जैसे जावा उन्हें परिभाषित करता है) और जेनेरिक का उपयोग कैसे करें।
  2. बिग-ओ (यह कैसे परिभाषित किया गया है और आप निम्न आदेश शर्तों को क्यों छोड़ सकते हैं) की बुनियादी समझ है।
  3. पुनरावर्ती कार्यों का उपयोग, लिखने और पता लगाने में सक्षम हो।
  4. कोड एकल- और दोगुनी-लिंक्ड सूचियां। उन्हें इटरटेबल को लागू करना चाहिए और तत्वों को जोड़ने और हटाने का समर्थन करना चाहिए। स्टैक और कतार को लागू करने के लिए उनका उपयोग करें।

योग्य कुछ बातें के बारे में एक बार आप एल्गोरिदम की तरह एक किताब में गोता है पता करने के लिए:

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

वीडियो बोलना, मुझे लगता है कि यह शुरू करने के लिए एक बेहतर तरीका है: Programming Abstractions (Stanford, Julie Zelenski)। मैं बहुत खुश हूं कि वे मौजूद हैं।

(ऐसा होता है जैसा कि मैंने एक binary search tree के साथ एक नक्शा को लागू करने के बीच में हूँ।)

+0

ओह हाँ ... बड़े-ओ सीखने के लिए विकिपीडिया से परेशान न हों। बिल्ली, इस सामान में से किसी एक को सीखने के लिए डब्ल्यूपी से परेशान मत हो। यह बिंदु पर है और वास्तव में उदाहरण हैं (पागल, मुझे पता है): http://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/ – johncip

+0

धन्यवाद वेबसाइट जॉन के लिंक दे रहे हैं। –

2

मैं तुम्हें हेड फर्स्ट साथ सीखने शुरू सलाह देते हैं। functionx.com भी एक अच्छी साइट है। अधिकांश जावा पुस्तकें पुस्तक के हिस्से के रूप में एल्गोरिदम का वर्णन करती हैं, इसलिए एल्गोरिदम के बारे में चिंता न करें। सबसे पहले जावा सीखो।

मुझे आपको अच्छी किताबें खोजने का एक आसान तरीका प्रदान करने दें। हमेशा amazon.com में उच्च रेटेड पुस्तकें देखें और फिर उन्हें wowebook.be से डाउनलोड करें।

मैं माइकल टी। गुड्रिच और रॉबर्टो तामासिया द्वारा "जावा में डेटा संरचनाओं और एल्गोरिदम" की अनुशंसा करता हूं। "एक प्रोग्रामर की तरह सोचो" अच्छी एल्गोरिदम से संबंधित किताबें हैं।

संबंधित मुद्दे