2009-04-30 16 views
11

मैं प्रोग्रामिंग के लिए नौसिखिया हूँ। मेरे पास कंप्यूटर विज्ञान का 1 सेमेस्टर था (हमने जावा का इस्तेमाल किया था)। मुझे पाठ्यक्रम में ए मिला और सब कुछ सौंपने में सक्षम था, हालांकि मुझे यकीन नहीं है कि मैं वास्तव में इसे समझ गया हूं। मैंने पाठ को अनदेखा किया और नमूना कार्यक्रमों और फिर परीक्षण और त्रुटि को देखकर सीखा। मैं दो लोगों को छोड़कर कक्षा से आगे था जो जावा या दूसरी ओओपी भाषा जानने में आए थे।न्यूबी शिक्षण स्वयं पायथन, मुझे और क्या सीखना चाहिए?

मैं पाइथन सीखना चाहता हूं। मैं अपने पास अतिरिक्त हिस्सों से दूसरा पीसी बनाने और लिनक्स का उपयोग करने जा रहा हूं। असल में, मैं कंप्यूटर के बारे में अपने ज्ञान को बढ़ाने के लिए चाहता हूँ। मेरी प्रेरणा है।

अब सीखने वाले पायथन पर कोई अच्छी प्रोग्रामिंग सिद्धांत पुस्तकें उपयोगी होंगी? या क्या मुझे कंप्यूटर पर निम्नतम स्तरों पर काम करने के तरीके पर और अधिक पढ़ना चाहिए? मुझे नहीं लगता कि मैं जो सवाल चाहता हूं उससे पूछने के लिए पर्याप्त जानता हूं।

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

मैं "30 दिन" या "1 सप्ताह" या जो कुछ भी सीखना नहीं चाहता हूं। तो, एक बहुत ही बुनियादी स्तर से शुरू करना मेरे साथ ठीक है।

अग्रिम धन्यवाद। मैंने एक खोज की और मुझे वह नहीं मिला जो मैं खोज रहा था।

अद्यतन: सभी महान सलाह के लिए धन्यवाद। मुझे यह साइट काम पर मिली और मुझे अपने घर के कंप्यूटर पर नहीं मिला, इसलिए मैं अभी पढ़ रहा हूं।

उत्तर

14

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

How to Think Like A Computer Scientist: Learning With Python इंटरनेट पर उपलब्ध है और उच्च स्तर की अवधारणाओं के लिए एक उत्कृष्ट परिचय है जो कंप्यूटर को जाता है। और यह भी पायथन-विशिष्ट है।

यदि आप अपने मस्तिष्क को अंदर से बाहर कर रहे हैं, तो SICP इसका अच्छा काम करेगा। मैं इसे पहले पाठ के रूप में अनुशंसा नहीं करता हूं, हालांकि; यह भारी जा रहा है।

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

डी 'एक

+1

मैं एसआईसीपी की सिफारिश को दृढ़ता से दूसरा करूंगा। आप इसके माध्यम से जाने के बाद _never_ वही होंगे। इसके साथ जोड़े जाने के लिए एसआईसीपी व्याख्यान http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ – baudtack

+0

यदि आप कुछ पाठ्यक्रम सामग्री देखना चाहते हैं जो एक व्याख्यान प्रारूप में एसआईसीपी को कवर करते हैं, यहां मुफ्त यूसी बर्कले सीएस 61 ए व्याख्यान देखने का प्रयास करें: http://webcast.berkeley.edu/course_details.php?seriesid=1906978342 एक और एकमात्र ब्रायन हार्वे द्वारा पढ़ाया गया (जिसे आप जानते होंगे कि आपने * हैकर्स * पढ़ा है स्टीवन लेवी।) –

1

पायथन एक उच्च स्तरीय भाषा है, इसलिए यह आपको सीखने के लिए बहुत सी सीधा लाभ नहीं देगा कि कंप्यूटर निम्नतम स्तर पर कैसे काम करते हैं।

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

जो आपको पता होना चाहिए ... ज्यादा नहीं, मुझे लगता है। पाइथन प्रोग्रामिंग शुरू करने के लिए एक अच्छी भाषा है। यह सरल चीजों को सरल रखता है लेकिन यह आपको समृद्ध समृद्धि तक पहुंचने के लिए पर्याप्त समृद्ध है। मैं सुझाव देता हूं कि शायद एक ट्यूटोरियल देखें; मुझे पता है कि on the Python website है, लेकिन मैं दावा नहीं कर रहा हूं कि यह आपके लिए सबसे अच्छा है। एक Google खोज आपको शुरू करने के लिए बहुत कुछ देनी चाहिए।

5

http://www.pythonchallenge.com/

मुझे लगता है कि इस चुनौती प्रमुख अजगर ताकत के साथ संपर्क में प्राप्त करने के लिए एकदम सही है और प्रत्येक स्तर के लिए अजगर धागे interessting का एक बहुत के साथ एक अच्छा मंच है।

0

कंप्यूटर की मेरी जानकारी में वृद्धि

ठीक है, क्या आपको ठीक उसी से क्या मतलब है? पायथन, या किसी भी अन्य उच्च स्तरीय भाषा, वास्तव में सभी गंदा विवरण छुपाने के लिए डिज़ाइन किए गए हैं। यही कारण है कि, गैर-पेशेवरों (जैसे वैज्ञानिक) के लिए यह उपयुक्त क्यों है।

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

9

विशेष रूप से आपके प्रश्न के पायथन भाग के लिए मैं मार्क पिलग्रीम द्वारा http://www.diveintopython3.net/ की अत्यधिक अनुशंसा कर सकता हूं। यह मुफ़्त और सुंदर अच्छी तरह से संरचित है।

पायथन एक अच्छा विकल्प है, आपको मजा आएगा!

0

लघु जवाब: उन सभी को

लांग जवाब:

आपकी पहली भाषा सीखना हमेशा एक चुनौती है, और अपने जावा अनुभव के बाद, अन्य भाषाओं का एक बहुत बहुत आसान लगेगा। उस ने कहा, प्रोग्रामिंग भाषाओं सीखने में वास्तविक चुनौती सीख रही है कि किसी विशेष भाषा का उपयोग कब करना है - समय आने पर आप जो भी चुनते हैं उसके लिए आप सभ्य दस्तावेज़ ढूंढ सकते हैं।

एक ठोस शुरुआत के रूप में, विकिपीडिया पर हॉप करें और अपने categorical list of programming languages ब्राउज़ करें, उन सभी नामों पर क्लिक करें जिन्हें आपने कभी सुना है (और आपकी आंखें पकड़ने वाली कोई भी चीज़) और यदि लेख में कोड उदाहरण है, तो इसे दें मिनट या दो में डूबने के लिए (शेष लेख मदद करेगा, ज़ाहिर है)। यहां बिंदु प्रत्येक भाषा को मास्टर नहीं करना है (जो (1) व्यर्थ और (2) असंभव है), लेकिन वहां क्या है, इस पर एक संभाल पाने के लिए। किसी भी भाषा के लिए, इसमें कुछ अन्य भाषाएं हैं, और यदि आप कम से कम उन श्रेणियों में से एक भाषा पढ़ सकते हैं, तो आप प्रोग्रामिंग ब्रह्मांड का काफी बड़ा हिस्सा महारत हासिल करेंगे। जब कोई नई परियोजना आती है, और इसके बारे में कुछ आपको मिली कुछ भाषा की याद दिलाता है, तो आप परियोजना को करने के हिस्से के रूप में बस उस भाषा को सीख सकते हैं। यह बहुत सारे काम की तरह लग सकता है, लेकिन कहें, अपनी पांचवीं बड़ी भाषा, आप पूरी तरह से गिनती खो देते हैं और बिना किसी ध्यान के हर समय गलती से नए सीखते हैं।

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

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

उस बिंदु तक पहुंचने में कई सालों लगते हैं जहां कोई प्रोग्रामिंग भाषा पूरी तरह से विदेशी नहीं है (या कम से कम विदेशी हैकिंग के एक दिन से अधिक विदेशी), लेकिन मुझे लगता है कि यह प्रयास करने के लिए एक बहुत स्वस्थ और यथार्थवादी दीर्घकालिक योजना है प्रत्येक मोटे वर्ग के प्रतिनिधि नमूने को जीतने के लिए। सौभाग्य!

3

इनमें से बहुत कुछ इस बात पर निर्भर करता है कि पाइथन सीखने के लिए आपका समग्र लक्ष्य क्या है। क्या आप इसे दूसरी भाषा सीखने या कंप्यूटर की बेहतर समझ और प्रोग्रामिंग भाषा का प्रभावी ढंग से उपयोग करने के तरीके के रूप में देख रहे हैं?

ऐसा लगता है कि आप कंप्यूटर के बारे में बेहतर समझ हासिल करना चाहते हैं और बेहतर प्रोग्रामर बनना चाहते हैं। पाइथन जैसी नई भाषाओं को सीखना शायद इस संबंध में आपकी मदद नहीं करेगा। यदि आप रुचि रखते हैं, तो भी मैं पाइथन सीखने की सलाह देता हूं, लेकिन एक बार जब आप एक प्रोग्रामिंग भाषा सीख चुके हैं, तो एक नई भाषा सीखने से सिंटैक्स और डेटा प्रकार (आमतौर पर) से परिचित हो रहा है।

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

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

विभिन्न प्रकार के डेटा संरचनाओं के बारे में जानने के लिए, देखें: http://en.wikipedia.org/wiki/List_of_data_structures। आम तौर पर, प्रत्येक डेटा संरचना एक विशिष्ट उद्देश्य के लिए उपयोगी होती है (उदाहरण के लिए बाइनरी सर्च पेड़ क्रमबद्ध जानकारी खोजने के लिए अच्छे हैं)। दुर्भाग्यवश, मेरे पास कोई पुस्तक अनुशंसा नहीं है (हमारी कक्षा ने पुस्तक का उपयोग नहीं किया है)। गुगलिंग "डेटा स्ट्रक्चर" एक अच्छा प्रारंभिक बिंदु होना चाहिए।

डेटा संरचनाओं ने मुझे यह भी सोचा कि कार्यान्वयन कितना कुशल है। एल्गोरिदम की "जटिलता" निर्धारित करती है कि कोड का दिया गया टुकड़ा कितना समय लगता है। यह अन्य कार्यान्वयन की तुलना करना और यह निर्धारित करना आसान बनाता है कि कौन सा बेहतर है।

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

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

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

यदि आपके कोई और प्रश्न हैं, तो बेझिझक पूछें। सौभाग्य!

0

के बाद से अजगर मेरी पहली भाषा नहीं था, मैं

  1. क्या अजगर
  2. मुहावरेदार करने में सक्षम था की, सीखने "pythonic," कुछ करने के लिए जिस तरह से के लिए Python Cookbook उपयोगी पाया।
+0

खुशी है कि आपको यह पसंद आया ;-)। –

1

मैंने कुछ महीने पहले पायथन (मेरी पहली प्रोग्रामिंग भाषा के रूप में) शुरू किया था। मैं शुरू करने के लिए Learning Python, by Mark Lutz की सिफारिश करेंगे। लेकिन ध्यान रखें कि अच्छी तरह से सीखने की कुंजी खुले दिमागी, मरीज और काम करने के इच्छुक हैं और उन चीज़ों की तलाश में है जिन्हें आप समझ में नहीं आते हैं।

मज़े करो!

1

मैं पाइथन सीखने के लिए http://www.diveintopython.org/ पर ऑनलाइन पुस्तक को देखने का सुझाव दूंगा।

पायथन परियोजनाओं के लिए, मैं Django फ्रेमवर्क सीखने की कोशिश करता हूं। यह वेब अनुप्रयोगों के निर्माण के लिए एक ढांचा है। उनके साथ शुरुआत करने के लिए उनके पास tutorial है। यह आपको लिनक्स बॉक्स पर एक वेबसर्वर बनाने का अनुभव भी देगा।

+0

धन्यवाद, Django के बारे में बहुत उत्साहित। – Jeff

0

प्रोग्रामिंग भाषा शिक्षण हमेशा सीखने के दौरान एक विशिष्ट वक्तव्य से जुड़ा हुआ है। "प्रोग्रामिंग सीखने के लिए प्रोग्राम लिखें"। मैं भी वही सुझाव दूंगा।

यदि आप मूल बातें से शुरू करने जा रहे हैं। यह निश्चित रूप से, सबसे सुझाया शुरुआती बिंदु है। यह लंबा है, लेकिन यह हर समय लायक है। http://www.diveintopython.org/

क्योंकि आप कुछ जावा में हैं, यह आपके लिए भी बेहतर हो सकता है। http://www.swaroopch.com/notes/Python। या तो पायथन 2.x या 3.0 शुरू करें। मैं व्यक्तिगत रूप से अजगर 3 का प्रशंसक हूं। लेकिन स्टार्टर के लिए नमूने, और ऑनलाइन कार्यक्रमों के संदर्भ प्राप्त करना मुश्किल हो सकता है। तो आपके लिए 2.x बेहतर हो सकता है। लेकिन मैं इसे आप तक छोड़ देता हूँ।

जैसे मैंने "कार्यक्रम लिखें .." शुरू किया। आप यहां से शुरू कर सकते हैं।

  1. http://www.spoj.pl/ - एक प्रोग्रामिंग चुनौतियों साइट है, जहाँ आप विषयों, ज्यादातर एल्गोरिदम की एक विस्तृत विविधता से चुनें और विशाल सवाल डेटाबेस है सकते हैं। बेशक प्रोग्रामिंग भाषाओं की पसंद आप पर निर्भर है।
  2. http://projecteuler.net/ - एक गणितीय प्रश्न साइट, यहां आपको सिर्फ एक उत्तर सबमिट करना है, धोखा देने की अनुमति है, इसलिए दूसरों से तर्क उधार लेने के लिए स्वतंत्र रहें, लेकिन प्रोग्राम को स्वयं लिखने का प्रयास करें।

आपको लगता है कि आपने पाइथन में पर्याप्त प्रवीणता प्राप्त की है, तो आप इस पुस्तक पाइथन कुकबुक http://www.amazon.com/Python-Cookbook-Alex-Martelli/dp/0596007973 में व्यंजनों को आजमा सकते हैं।

एप्लिकेशन विकास के लिए, आपको लगता है कि आप इसे संभाल सकते हैं, wxPython या PyQt पर शुरू करें। मैं व्यक्तिगत रूप से पीईक्यूटी का सुझाव दूंगा। यह उत्तरदायी, तेज़ और सभ्य विकास चक्र है, मैंने लंबे समय तक WxPython का उपयोग नहीं किया है, लेकिन मैंने जो कुछ कार्यक्रम लिखे हैं, लंबे समय से, बहुत अच्छा महसूस नहीं किया। फिर भी, यह आपके ऊपर है।

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