यदि हर साल एक नई प्रोग्रामिंग भाषा सीखना है, तो सूची क्या होनी चाहिए? [बन्द है]


19

"द प्रोगैमैटिक प्रोग्रामर" के अध्याय में पहला सीखने का लक्ष्य है:

हर साल कम से कम एक नई भाषा सीखें। विभिन्न भाषाएं अलग-अलग तरीकों से समान समस्याओं को हल करती हैं। कई अलग-अलग तरीकों को सीखकर, आप अपनी सोच को व्यापक बनाने में मदद कर सकते हैं और एक लीक में फंसने से बच सकते हैं। [...]

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

लेकिन एक बार उस सूची का एक उचित सबसेट सीख लिया जाता है- आगे क्या है, और क्यों ?


3
में इस सवाल का जवाब मुझे लगता है कि अपने क्षमताओं को विस्तृत करने के लिए अध्ययन किया जा सकता भाषा मानदंड से कुछ की सूची। मैं इन सभी प्रतिमानों (भाषाओं पर ध्यान केंद्रित करने के बजाय) सीखने की कोशिश कर रहा हूं, इसलिए उन सभी को हटा दें जो आपकी वर्तमान भाषा उपयोग करती है, फिर एक ऐसी भाषा चुनें, जिसमें आपके द्वारा उपयोग की जाने वाली अलग-अलग भाषाएं हैं। C # फिर Java में शुरू करने का कोई मतलब नहीं है, शुरू में अधिक विविधता लाने का प्रयास करें। एक बार जब आप सभी मूल प्रकारों को कवर कर लेते हैं, तो आप अन्य सामान्य भाषाओं को चुन सकते हैं।
साइमन पी स्टीवंस

@Simon: क्यों नहीं यह यहाँ एक जवाब है?
रिचर्ड

1
आप जावा से C # में जाने के लिए बहुत कुछ सीखेंगे, लेकिन इतना नहीं कि दूसरे रास्ते से जा रहे हों
Casebash

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

1
एक वर्ष में एक भाषा सीखने वाले अधिकांश लोग "सभी ट्रेडों के जैक लेकिन किसी के मालिक नहीं होंगे" जब तक कि आप कई वर्षों तक कुछ पर ध्यान केंद्रित न करें। मेरा मानना ​​है, बहुत अनुभव के आधार पर कि 'पूर्ण-स्टैक' प्रोग्रामर की धारणा 1% - 5% डेवलपर्स को छोड़कर झूठी है। अधिकांश हार्ड-कोर बैकएंड लोगों को मैं जानता हूं कि महान फ्रंट एंड कौशल और इसके विपरीत नहीं हैं।
जंक

जवाबों:


19

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


7
क्या मुझे आपका ऑटोग्राफ चाहिए? :-)
क्रिश्चियन डेवन

1
+1 शानदार जवाब, भले ही यह शायद विनोदी तरीके से था।
जो डी।

1
@ जो डी का मतलब पूरी तरह से हास्यपूर्ण तरीके से नहीं था। यदि आप ऐसा कर सकते हैं, तो आपको सभी निशानों में महारत हासिल है।
वैकल्पिक

-1 का मतलब पूरी तरह से विनोदी तरीके से नहीं। (जैसे हमारे पास पर्याप्त अर्ध परित्यक्त भाषाएँ / कार्यान्वयन नहीं हैं)
ZJR

2
@ZJR तो 99% विनोदी, 1% गैर विनोदी बुरा है? Cmon। इसके अलावा, आप एक टिप्पणी के आधार पर एक उत्तर क्यों दे रहे हैं?
वैकल्पिक

13

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

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


9

एक भाषा जो आपके प्रोग्रामिंग के बारे में सोचने के तरीके को प्रभावित नहीं करती है, वह जानने लायक नहीं है। - एलन पर्लिस

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

ये प्रतिमान क्या हैं? उन्नत पुस्तक अवधारणाओं, तकनीक और कंप्यूटर प्रोग्रामिंग के मॉडल एक ग्राफिकल मानचित्र के साथ एक उत्कृष्ट अवलोकन प्रदान करते हैं ।

इस प्रकार, यदि आप केवल सी-जैसी अनिवार्य भाषाओं को जानते हैं, तो योजना / लिस्प सीखना अत्यंत उपयोगी है। यदि आप पहले से ही अनिवार्य और कार्यात्मक भाषा जानते हैं, तो प्रोलॉग सीखना उपयोगी होगा, आदि।

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

जब आप किसी अन्य प्रतिमान को टटोलते हैं, तो यह वास्तव में एक झेन क्षण है; कार्यात्मक प्रोग्रामिंग के लिए जरूरी होने से मुझे कंप्यूटिंग की दुनिया पूरी तरह से नए प्रकाश में दिखाई दी। खुश सीखने!


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

9

सी - आवश्यक के रूप में, "सब कुछ रेखांकित करता है", सिस्टम प्रोग्रामिंग भाषा

लिस्प (योजना) - अजीब लेकिन अविश्वसनीय रूप से शक्तिशाली उर-भाषा जो महान हैकर्स को लगता है कि शांत को परिभाषित करता है

स्मॉलटाकल - क्योंकि यह वही है जो OO होना चाहिए था

एर्लांग (या अन्य अभिनेता भाषा) अभिनेताओं को समझने के लिए

हास्केल - मोनाड्स को समझने के लिए

जावास्क्रिप्ट - क्योंकि इसकी हर जगह और ब्राउज़र स्क्रिप्टिंग के लिए आवश्यक है

पायथन / रूबी / पर्ल में से एक (लेकिन यह वास्तव में कोई फर्क नहीं पड़ता) - तो आप जानते हैं कि अच्छी लाइब्रेरी समर्थन वाली लोकप्रिय, आधुनिक, उच्च-स्तरीय स्क्रिप्टिंग भाषा क्या महसूस करती है

एसक्यूएल - तो आप रिलेशनल डेटाबेस से बात कर सकते हैं

प्रस्तावना - क्योंकि आपको अभी भी अपना दिमाग उड़ाने की जरूरत है


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

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

1
प्रस्तावना - क्योंकि आपको अभी भी अपना दिमाग उड़ाने की ज़रूरत है - सर्वश्रेष्ठ टिप्पणी कभी +1
Zachary K

1
मुझे लगता है कि हेकेल सीखने का मुख्य लाभ जरूरी नहीं कि मोनाड अमूर्त की पकड़ है, बल्कि वास्तविक मजबूत और शक्तिशाली प्रकार प्रणाली के लाभों को सीखना है। यदि किसी का "स्टैटिक टाइप सिस्टम" का विचार जावा जैसा है, तो हैस्केल आपकी सांस को रोक लेगा।
सारा

4
  • गो (नई प्रणाली स्तरीय प्रोग्रामिंग भाषा जो संगामिति और अवधारणाओं के लिए अच्छे समर्थन के साथ पारंपरिक नहीं है)
  • Lua (स्क्रिप्टिंग भाषा सरल, अभिव्यंजक, अत्यंत लचीली और संतुलित प्रतिमान आवश्यक, कार्यात्मक और मेटा प्रोग्रामिंग, OOP की अनुमति)
  • D (C / C ++ सही किया गया)
  • ग्रूवी (जावा दुनिया में अभिव्यक्ति और मेटा प्रोग्रामिंग)
  • एफिल (अनुबंध द्वारा डिजाइन और ओओपी के लिए एक अलग दृष्टिकोण)
  • प्रस्तावना (तर्क प्रोग्रामिंग भाषा)

1
किसी को ये क्यों सीखना चाहिए? ( यहाँ दिलचस्प बिट क्यों है, कुछ वास्तविक प्रोग्रामिंग भाषाएं हैं: प्रत्येक प्रतिमान एक से अधिक बार लागू किया गया है।)
रिचर्ड

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

@ जोनास: हमें अभी भी एक सरल भाषा की आवश्यकता है जो सही हो, जबकि यह भाषा नहीं आती है डी का उपयोग केवल अनिवार्य रूप से किया जा सकता है। आपके लिए, D2 अधिक कार्यात्मक है, जब पूरा हो सकता है तो मुख्य रूप से अनिवार्य भाषा में प्रतिमान का सबसे अच्छा कार्यान्वयन होगा।
मनिएरो

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

@ जोनास: एरलांग एक अच्छी भाषा है, लेकिन यह सी / सी ++ सही नहीं है, यह पूरी तरह से अलग बात है।
मनिएरो सेप

2

1) प्रस्तावना: यह उन सभी अनिवार्य भाषाओं के लिए पूरी तरह से अलग है जो आप अब तक उपयोग कर रहे हैं, और यह समस्याओं के बारे में आपके सोचने के तरीके को बदल देगा

2) लिस्प: इसके बिना, आप वीआई का उपयोग कर सकते हैं

3) एर्लांग: फिर से, यह पूरी तरह से अलग है, साथ ही, यह काफी फैशनेबल लगता है।

4) ट्यूरिंग टारपिट (जैसे ब्रेनफक) से कुछ, और शायद इसके लिए एक संकलक या दुभाषिया लिखें: मैं ऐसा करने के लिए एक कारण के बारे में नहीं सोच सकता, लेकिन यह एक अच्छा विचार लगता है।


1
"इसके बिना, आप वीआई का उपयोग कर सकते हैं"। मुझे आश्चर्य है कि किसी ने नहीं उठाया :)
Gauthier

मैं vi का उपयोग करता हूं! (वेल गविम)
ज़ाचारी के

1

आपके द्वारा सूचीबद्ध के अलावा,

हास्केल, एफ #, क्लजुरे, ओकेमेल, लुआ, गो, डी, एर्लांग, ऑब्जेक्टिव सी।


1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.