2009-06-25 8 views
5

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

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

कभी-कभी आप अनजाने में एक विशिष्ट भाषा में सोचते हैं और सोचने के एक नए तरीके से पेश होने पर, एक नई भाषा भ्रम पैदा कर सकती है या आपको अपने नए और "भाषाओं के वर्तमान ज्ञान" की सीमाओं के बीच खो जाती है।

इस मामले में एक अच्छा समाधान क्या हो सकता है? नई भाषा के "सीमाओं" के अंदर नई भाषा के ज्ञान, सोचने का एक नया तरीका, और अन्य भाषाओं के वर्तमान ज्ञान को बनाए रखने या शामिल करने के लिए क्या उपयोग किया जाना चाहिए?

उत्तर

8

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

भाषा सीखते समय डोजोस और सामान कोडिंग जैसी चीजें करना आपको चीजों के लिए महसूस करने में मदद कर सकता है। मैंने हाल ही में नौकरियों को बदल दिया और जावा पर वापस चला गया, और मैंने खिलौनों के कार्यक्रमों पर काम करने के लिए कुछ समय बिताया, बस चीज़ों के अनुभव में वापस आने के लिए (मैं प्रभावी जावा भी पढ़ रहा हूं, दूसरा संस्करण जैसा कि मेरा पिछला प्रमुख अनुभव जावा 1.4 के साथ था।)।

+0

पायथन मेरे लिए इतना बेहतर फिट था कि मैंने पाया कि जब मैं इसे स्विच करता हूं तो मेरी उत्पादकता बढ़ जाती है! हालांकि, उस समय मैं केवल अपने काम के समय प्रोग्रामिंग के 5% से 10% खर्च कर रहा था (और लगभग कोई काम नहीं था, क्योंकि मैंने अभी तक एक असंबंधित परास्नातक डिग्री समाप्त की थी), इसलिए वाईएमएमवी। – PTBNL

+0

ध्यान दें कि मैं पाइथन से रूबी (जो मैं पहले उपयोग कर रहा था) और पायथन 2 महीने बाद तुलना कर रहा था। –

3

मैं ALT.NET उल्लेख यहाँ

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

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

  1. एक भाषा या लिपि के पीछे इतिहास को समझें: कुछ चीजें हैं जो वास्तव में मुझे मदद मिली इस प्रकार हैं। विकास को जानने में बहुत मदद मिलती है।
  2. सही पुस्तक चुनें। बढ़ती पीड़ा को कम करने में आपकी सहायता के लिए सही पुस्तक ढूंढने के लिए रिसर्च स्टैक ओवरफ्लो और अमेज़ॅन।
  3. ओओपी अधिकांश परिपक्व भाषाओं में काफी आम है, इसलिए आप कई पुस्तकों में ओओपी से संबंधित अध्यायों में से कई को छोड़ सकते हैं। सिंटेक्स सीखना एक क्रमिक प्रक्रिया होगी। मैं आमतौर पर इसके लिए कुछ त्वरित आसान गाइड बुकमार्क्स करता हूं।
  4. नई भाषा के सामान्य नुकसान को समझने के लिए जितना संभव हो उतना सामुदायिक मंच पढ़ें।
  5. समुदाय के साथ बातचीत करने और अपनी पीड़ा साझा करने के लिए कुछ स्थानीय बैठक में भाग लें।
  6. छोटे-छोटे जटिल अनुप्रयोगों को बनाकर एक समय में एक पिच लें और इस तरह गति प्राप्त करें।
  7. सुनिश्चित करें कि आप जो सीखने की आवश्यकता है उसके लिए एक संदर्भ फ्रेम बनाएं। चीजें जैसे सुरक्षा, लॉगिंग, मल्टीथ्रेडिंग को संभाला जाता है।
  8. दिमाग खुले रहें, आप महत्वपूर्ण हो सकते हैं, लेकिन यदि आप कुछ नफरत करते हैं तो उस भाषा को न सीखें।

अंत में, मुझे लगता है कि सी # या जावा, एक कार्यात्मक भाषा और एक स्क्रिप्टिंग भाषा जैसे रूबी या पायथन जैसी एक मजबूत भाषा सीखना फायदेमंद है।

इन चीजों ने मुझे बहुत मदद की और मुझे लगता है कि सभी सॉफ्टवेयर इंजीनियरों और आर्किटेक्ट्स को वास्तव में किसी भी विकास पर्यावरण के लिए गियर करने में मदद मिलेगी।

2

मैंने जेन फ्रेमवर्क प्रोजेक्ट पर प्रोजेक्ट लीड के लिए किराए पर लेने के बाद PHP को सीखा।

इससे मदद मिली कि मेरे पास पेशेवर प्रोग्रामिंग पृष्ठभूमि के 20 साल और सी, जावा, पर्ल, जावास्क्रिप्ट, एसक्यूएल आदि का अच्छा ज्ञान था। मैंने अपने अधिकांश करियर के लिए गतिशील स्क्रिप्टिंग भाषाओं की ओर अग्रसर किया है। मैंने अजीब, ढांचे में ढांचे, ट्रॉफ में मैक्रो पैकेज में एप्लिकेशन लिखे हैं, मैंने केवल sed का उपयोग करके एक मंच भी लिखा है।

  • पढ़ना कोड और प्रलेखन:

    चीजें काम पर एक भाषा सीखने में मदद करेगा।

  • समुदाय की मेलिंग सूचियों और ब्लॉगों को सुनना।
  • भाषा में विशेषज्ञों से बात करते हुए, सौभाग्य से जिनमें से कई मेरे तत्काल टीम के साथी थे।
  • लेखन कोड लिखना, और कोड समीक्षा और कोचिंग के लिए कहा। (Zend_Console_Getopt मेरा पहला महत्वपूर्ण PHP योगदान था)।
  • भाषा के साथ जाने वाले टूल सीखना। PHPUnit, Xdebug, phpDoc, phing, आदि

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

इससे भी मदद मिली कि मैंने कॉलेज में कंपाइलर डिज़ाइन में पाठ्यक्रम लिया। भाषाओं के निर्माण के तरीके में अच्छी नींव रखने से नई भाषाओं को चुनना आसान हो जाता है। कुछ स्तर पर, वे रनटाइम स्टैक और ऑब्जेक्ट संदर्भों को सारणी देने के सभी तरीके हैं।

4

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

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

1

यदि आप टीम के जूनियर सदस्य हैं और भाषा नहीं जानते हैं, तो यह एन है अनिवार्य रूप से एक मुद्दा है। जब तक कुछ कोड समीक्षा और पर्यवेक्षण होता है, तब तक आप एक उत्पादक हो सकते हैं।

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

उदाहरण के लिए, मैं एक अनुभवी सी # कोडर कहूंगा जिसमें कोई वीबी अनुभव संभवतः वीबी.नेट परियोजना से ठीक नहीं होगा। वास्तव में, एक डेवलपर के लिए यह और अधिक कठिन होगा, जिसने वीबी एएसपी.नेट परियोजना की तुलना में सी # डब्ल्यूपीएफ परियोजना को पूरा करने के लिए केवल सी #/एएसपी.नेट में अनुभव किया था। एक अनुभवी PHP डेवलपर कोल्डफ्यूजन प्रोजेक्ट पर थोड़ा सा संकोच कर सकता है, लेकिन वे शायद कोई गंभीर गलती नहीं करेंगे क्योंकि वे एक स्क्रिप्ट आधारित वेब विकास वास्तुकला से परिचित हैं।

ऑब्जेक्ट मॉडलिंग और डेटाबेस क्वेरी रणनीतियों जैसी कई अवधारणाएं, भाषाओं के बीच बस ठीक अनुवाद करती हैं। लेकिन हमेशा एक नए मंच के लिए एक सीखने की अवस्था होती है, और कभी-कभी यह काफी बुरा हो सकती है। सबसे बुरा मामला यह है कि परियोजना को बाहर निकाला जाना चाहिए क्योंकि संग्रहण रिफैक्टर के लिए बहुत गलत है।

0

मेरी राय में, आपको इससे बचने की कोशिश करनी चाहिए। मुझे पता है, ज्यादातर बार आप नहीं कर सकते लेकिन किसी भी मामले में पुरानी भाषा के साथ नई भाषा को मिश्रण न करने का प्रयास करें, और पुरानी आदतों, प्रथाओं और पैटर्न को मिश्रण में कभी भी न जोड़ें।

हमेशा उन संसाधनों को खोजने का प्रयास करें जो आपको भाषा के तरीके से नई भाषा में आने में मदद करेंगे, अन्य भाषाओं के तरीके में नहीं; जो कभी भी ख़ुशी समाप्त नहीं होगा, और अगर ऐसा होता है तो इसे सही तरीके से संशोधित करना बहुत कठिन होगा।

चीयर्स।

1

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

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

यह औजारों पर भी लागू होता है - थोड़ी देर के लिए टूल का उपयोग करने और मूल बातें सीखने के बाद, दस्तावेज पढ़ने (या स्किमिंग) मुझे बहुत कुछ सिखा सकता है।

0

हाँ मेरे पास है।

मेरा मतलब है, क्या कोई और तरीका है? एकमात्र भाषा जिसे मैंने कभी सीखा था कि एक परियोजना पर नहीं था एबीसी मूल था, जो आपने अपने पहले कंप्यूटर पर उपयोग किया था।

0

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

0

हर बार जब मैं एक नई भाषा सीखना चाहता/चाहती हूं, तो मैं खुद को ढूंढने के लिए मजबूर करता हूं कोड करने के लिए कुछ।

लेकिन यह सुनिश्चित करने के लिए कि मैंने इसे अच्छी तरह से किया है, मैं हमेशा अपना कोड और यह क्या निष्पादित करने में सक्षम होना चाहता हूं।

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

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