2008-10-17 8 views
9

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

डेवलपर के लिए एक ही प्रतिमान में एक अलग भाषा में जाने के लिए वास्तविक ओवरहेड क्या हैं? क्या होगा अगर प्रतिमान अलग हैं?

उत्तर

1

मेरे लिए यह भाषा पर अच्छे ब्लॉगर्स और उपयोगी साइटें पायेगा। थोड़ी देर बाद आपको पता चल जाएगा कि सबसे अच्छे लोग कहां हैं। वे लोग और साइटें subtleties सीखने के लिए जानकारी के अच्छे स्रोत हैं।

1

अपने आराम क्षेत्र को छोड़कर। मुझे लगता है कि यह कुछ सबसे बड़े कारणों में से एक है क्योंकि कुछ डेवलपर्स नई भाषा नहीं सीखते हैं।

लेकिन दूसरों के लिए, यह उन्हें चलाता है।

10

सबसे बड़ी चुनौती (मेरे लिए) आमतौर पर भाषा की बजाय एपीआई है (.NET के बावजूद)। उदाहरण के लिए, मैं माइक्रोसॉफ्ट के सी ++ और सी # का उपयोग कई सालों से कर रहा हूं (इससे पहले डेल्फी)। लेकिन मुझे जावा पर शुरू करने में बड़ी कठिनाई है; यहां तक ​​कि छोटी परियोजनाएं मुझे थोड़ी देर ले सकती हैं। ऐसा नहीं है क्योंकि भाषा मुश्किल है (यह नहीं है), लेकिन क्योंकि एपीआई अलग हैं, और अलग-अलग व्यवस्था की गई है।

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

+1

स्पॉट ऑन। मैं डेवलपर्स पर हमेशा आश्चर्यचकित हूं जो कहते हैं कि वे 3 दिनों में एक नई भाषा सीख सकते हैं। निश्चित रूप से, आप वाक्यविन्यास सीख सकते हैं, लेकिन भाषा का उपयोग करने के बारे में जानना पूरी तरह से अलग है। –

+0

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

+0

मुझे लगता है कि जावा की पुस्तकालय विशेष रूप से खराब हैं, लेकिन यह कोई नया मंच चुनने में एक समस्या है। इससे क्या बुरा होता है कि यह जानना मुश्किल है कि खोजना क्या है, आपको दस्तावेज़ों के बड़े हिस्से को पढ़ने के लिए बहुत कुछ करना है। –

2

वही प्रतिमान बहुत आसान है क्योंकि यह वास्तव में विभिन्न पुस्तकालयों को समझने और आपके द्वारा वर्णित अनुसार तुरंत ढूंढने का विषय है।

यदि प्रतिमान इस स्विच से अलग हैं तो अधिक कठिन है। एक स्थैतिक से गतिशील भाषा या ओओपी भाषा के लिए प्रक्रियात्मक से आगे बढ़ने के लिए एक अलग दिमाग सेट की आवश्यकता होगी। इसमें अधिक समय लगेगा लेकिन यह संभव है और अभी भी एक बहुत अच्छा अभ्यास है।

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

1

समान प्रतिमान के भीतर स्थानांतरित करना अपेक्षाकृत आसान है। मुझे लगता है कि जावा और .NET दर्द रहित के बीच स्विचिंग क्योंकि दोनों प्लेटफ़ॉर्म समान कार्यक्षमता और समान पुस्तकालयों की पेशकश करते हैं। लेकिन प्रतिमान स्विचिंग एक असली चुनौती हो सकती है।

मेरे छात्रों को आमतौर पर कार्यात्मक और तर्क प्रोग्रामिंग आसान होने के बावजूद जावा सीखने के बाद कार्यात्मक और तार्किक भाषाओं में जाने का कठिन समय होता है।

अन्य समस्याएं अनुप्रयोगों के प्रकारों के बीच स्विच कर रही हैं। उदाहरण के लिए, यदि आप जावा में डेस्कटॉप एप्लिकेशन बनाने के आदी हैं तो अचानक .NET में वेब अनुप्रयोगों को बनाने का प्रयास करें, स्विच मुश्किल है क्योंकि आप न केवल नई भाषाएं सीख रहे हैं बल्कि प्रोग्रामिंग के नए क्षेत्र हैं।

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

मैं विशिष्ट भाषा की बजाय प्रतिमान की मूल अवधारणाओं को सीखने के लिए प्रोग्रामिंग सीखने वाले व्यक्तियों की वकालत करता हूं क्योंकि यह आपको भविष्य में अधिक पोर्टेबल बनाता है। ऑब्जेक्ट ओरिएंटेड कॉन्सेप्ट्स के साथ आरामदायक व्यक्ति को जावा और .NET या Python के बीच एक आसान समय स्विचिंग करना होगा जो सरल व्यक्ति सी # में प्रोग्राम करना सीखता है।

+0

मूल अवधारणाओं को समझना आवश्यक है लेकिन प्रबंधन अक्सर यह मानने की गलती करता है कि मूल समझ रखने का तात्पर्य है कि एक भाषा में आपकी लाइब्रेरी ज्ञान आसानी से दूसरी भाषा में माइग्रेट हो जाती है। मेरा मानना ​​है कि इसमें अधिक समय लगता है और अपेक्षा से अधिक महंगा है। –

0

बस एक नई मानव भाषा सीखने की तरह, मेरे लिए सबसे बड़ी समस्या सामान्य निर्माण पर आधारित है जो आपको किसी समस्या को हल करने के लिए करने की आवश्यकता है।

मुझे पता है कि शायद कई भाषाओं में "जबकि" या "के लिए" लूप सीखना इतना कठिन नहीं है - लेकिन जब आपकी समस्या एक स्तर का अबास्ट्रक्शन (इस सरणी के माध्यम से पुनरावृत्त) हो जाती है तो आप स्वयं को " "इसके बजाए" ("और इसके विपरीत।

सीखने की अवस्था भी एक नई भाषा सीखने के अलावा, और भी एक नई ढांचा सीखनी होगी। जब मैं टाइपिकल एएसपी.Net से एमवीसी (उपयोग करने के लिए) NVelocity) मैं थोड़े से पूरी तरह से खो गया महसूस किया - एएसपीनेट नियंत्रण के साथ सामान्य समस्याओं को हल करने के बारे में मेरा सभी ज्ञान भूल जाना था।

अंत में, सबसे बड़ी चुनौती तब होती है जब आप अलग-अलग पैराड के साथ भाषाओं के बीच बदलते हैं igms - क्योंकि अब आप किसी समस्या को हल करने के लिए उसी तरह सोच नहीं सकते हैं। जैसे - सी # से प्रोलॉग में जाने के बजाय, कार्यों, तर्क, कक्षा पदानुक्रम, आदि में सोचने की बजाय ... मुझे केवल राज्यों में, डेटा परिवर्तन से जुड़ी घटनाओं और घटनाओं से जुड़ी घटनाओं को याद करना पड़ता था - यह पागलपन था लेकिन मैं समाप्त कर सकता था मेरा विश्वविद्यालय होमवर्क।

0

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

इसके अलावा, ग्रहण के रूप में ग्रहण का उपयोग करने के लिए Emacs की तुलना में स्थिरता और विश्वसनीयता के मामले में एक कदम पीछे है। ग्रहण की विशेषताएं वास्तव में आकर्षक हैं, लेकिन आईडीई में कीड़े लगातार परेशानी का कारण बनती हैं।

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

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