प्रोग्रामिंग भाषाएं जो सामान्य रूप से आपके प्रोग्रामिंग कौशल में सुधार करती हैं? [बन्द है]


27

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


12
एक भी नहीं। बल्कि: उनमें से जितने संभव हो, प्रत्येक दूसरों से जितना संभव हो उतना अलग हो।

जवाबों:


27

"सामान्य" प्रोग्रामिंग और एल्गोरिदम के लिए:

  • अजगर, जानने के लिए अच्छा है, उपयोग करने के लिए आसान है, पढ़ने के लिए बहुत अच्छा है।
  • C ++, आपको सिखाता है कि वास्तव में एक कंप्यूटर क्या है।

एक बदलते अनुभव के लिए:

  • हास्केल
  • Prolog

अपने मन को नष्ट करने और पदावन और जेडी मास्टर के बीच की रेखा को पार करने के लिए:

  • आम LISP

3
हां, क्रिसकॉक, सी और असेंबली से सहमत होना आपको सिखाएगा कि कंप्यूटर वास्तव में क्या है, सी ++ एक बहुत मामूली कदम है, लेकिन फिर भी आपके पास मेमोरी पॉइंटर्स और हाई-परफॉरमेंस जैसे मुद्दों को संभालना होगा
लैक्रमीमैन्स

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

Prolog यकीन है कि प्रोग्रामिंग है। घोषणात्मक प्रोग्रामिंग और तर्क में निहित (और इसलिए अपेक्षाकृत गणित-ईश), हाँ। लेकिन फिर भी प्रोग्रामिंग। अंतिम बिंदु के लिए, क्या आपको लगता है कि एक और लिस्प (यानी स्कीम) भी ऐसा करेगी?

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

1
मैं आम लिस्प के ऊपर स्कीम के लिए वोट करूँगा - मुझे लगता है कि यह निर्भर करता है कि अगर आपको लगता है कि आप वास्तव में उत्पादन में एक लिस्प का उपयोग करेंगे। यदि नहीं, तो स्कीम के लिए जाएं।
स्किलड्रिक

13

जावास्क्रिप्ट को मत भूलना ।

इसमें OO फीचर्स हैं जो आपके सामान्य OO फीचर्स नहीं हैं। यह उच्च-क्रम के कार्यों और क्लोजर के लिए अच्छी तरह से अनुकूल है, और आप नियमित रूप से इनका उपयोग करते हैं। यह कई कार्यात्मक प्रोग्रामिंग ट्रिक्स के लिए अनुमति देता है। यह काफी लचीला है।

और यह व्यावहारिक है, क्योंकि हर गंभीर ब्राउज़र में यह है।

(निश्चित रूप से इसमें कई अप्रिय विचित्रताएँ भी हैं। कुछ व्यावहारिक भाषाएँ नहीं हैं)


1
क्या JS में OO विशेषताएँ हैं जो Java नहीं करता है?
महमूद होसाम

3
@ फ़ोबिया: जेएस ओओ को बिल्कुल अलग तरीके से करता है। कोई वर्ग नहीं है। वंशानुक्रम प्रोटोटाइप के माध्यम से किया जाता है - अनिवार्य रूप से एक वस्तु किसी अन्य वस्तु से विरासत में मिल सकती है। कार्य प्रथम श्रेणी के मूल्य हैं; आप न केवल उन्हें पास कर सकते हैं, आप आसानी से मौजूदा वस्तुओं को नए तरीके सौंप सकते हैं। जिस तरह से जेएस डेटा छिपाना करता है वह भी जावा से काफी अलग है: एक वस्तु जो सब कुछ उजागर करती है वह सार्वजनिक है, इसलिए आप क्लोजर का उपयोग करके डेटा और विधियों को छिपाते हैं। ध्यान दें कि कोई 'विहित OO' नहीं है; JS 'ओरिजिनल' OO के थोड़ा सा करीब है जो कि Smalltalk ने C ++ की तरह ईजाद किया था, लेकिन Java का OO अब 'canonical' भी है।
9000

11

कंप्यूटर कैसे काम करता है, इसके लिए C और असेंबली

हास्केल और LISP दोनों कार्यात्मक प्रोग्रामिंग और मेटाप्रोग्रामिंग के लिए

वेक्टर और ट्रिक प्रोग्रामिंग के लिए एपीएल

कंप्यूटर प्रोग्राम को कैसे व्यवस्थित करें, इसके लिए bash या tsh


4
एपीएल के बजाय आप एक ही लेखक द्वारा जे का उपयोग कर सकते हैं।
9000

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

9

मैं स्कीम का सुझाव दूंगा।

यह एक कार्यात्मक प्रोग्रामिंग भाषा है जिसे लिस्प से प्राप्त किया जाता है (सबसे वास्तव में लगता है कि यह एक बोली है)। कॉमन लिस्प के साथ मुख्य अंतर यह है कि इसका दृष्टिकोण बहुत न्यूनतर है - अत्यंत । उदाहरण के लिए, स्कीम के सामान्य वितरण में (कोई भी योजना <R5, या मिटी / GNU / स्कीम) आपको एक लूप कार्यान्वयन नहीं मिलेगी: आपको टेल रिकर्सियन का उपयोग करके अपना स्वयं का बनाना होगा।

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

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

यहाँ कुछ वीडियो सबक दिए गए हैं, मुझे आशा है कि, आपको तुरंत इस आकर्षक भाषा में दिलचस्पी होगी - बोलने वाले SICP के लेखक हैं: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman- व्याख्यान /


धन्यवाद। मुझे आपको चेतावनी देना है, हालांकि, सबक जुनून वाले प्रोग्रामर को आँसू में स्थानांतरित करना आसान है।
सेब्रांडोलिनो

@cbrandolino - सच है, हमारे कार्यात्मक प्रोग्रामिंग वर्ग ने बहुत से लोगों को कंप्यूटर विज्ञान कार्यक्रम से बाहर कर दिया।
jmort253

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

@ जेवियर, आप सही कह रहे हैं। मैं कार्यान्वयन को निर्दिष्ट करने के लिए उत्तर को संपादित करूँगा।
cbrandolino

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

4

एलआईएसपी, अधिमानतः एबेल्सन और सुस्मान की "संरचना और कंप्यूटर प्रोग्राम की व्याख्या" के साथ संयोजन में योजना, आपको C / C ++ द्वारा लगाए गए के अलावा अन्य शब्दों में सोचना सिखाएगी।

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


4

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

अधिकतम


3

LINQ के साथ C # 3।

यह कार्यात्मक प्रोग्रामिंग के लिए एक महान पहचान है।

एक प्रोग्राम (या प्रोजेक्ट यूलर को हल करना) लिखने की कोशिश करें और LINQ कॉल के साथ अधिक से अधिक लूप की जगह लें।
यह कार्यात्मक प्रोग्रामिंग और आलसी मूल्यांकन की अवधारणाओं को मास्टर करने में मदद करता है।

वहां से, कोई F # पर आगे बढ़ सकता है


3

हाथ नीचे, मैं हास्केल कहूंगा। और दो कारणों से:

  • यह कार्यात्मक प्रोग्रामिंग सीखने का सबसे अच्छा तरीका है। हर दूसरी भाषा के बारे में डिफ़ॉल्ट रूप से साइड इफेक्ट्स की अनुमति देता है, लेकिन चीजों को कार्यात्मक रूप से कर सकता है (और हां, इसमें विधायक और एर्लांग शामिल हैं : अधिक जानकारी के लिए इस बात को देखें )। हास्केल डिफ़ॉल्ट रूप से कार्यात्मक है, लेकिन साइड इफेक्ट्स का उपयोग करने के लिए बनाया जा सकता है जब आपको उनकी आवश्यकता होती है।
  • यह निश्चित रूप से एक भाषा है जो आपको कोड करने से पहले सोचने के लिए प्रोत्साहित करती है। सच कहूं तो, यह वास्तव में मेरे लिए कभी भी समस्या नहीं रही (यदि कुछ भी हो, तो इसका ठीक उल्टा है)। कहा कि ऐसा लगता है कि मैं अल्पसंख्यक हूं। जिन प्रोग्रामर्स को मैंने चलाया है उनमें से अधिकांश "कोड पहले, प्रश्न बाद में पूछें" मानसिकता के बजाय "आपकी समस्या को पॉन्डर करने के बजाय 5 दिनों में समाधान कोडिंग करने से पहले" माइंडसेट (जो मेरी मानसिकता हो जाती है) । इसलिए, इस तरह की भाषा अधिकांश प्रोग्रामर को मूल्यवान अनुभव प्रदान कर सकती है।

3

मैं स्कला को सुझाव दूंगा कि अगर कोई C / Java दुनिया से आता है।

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

इसलिए यदि आप OO से परिचित हैं, तो Scala उन शब्दों का उपयोग करता है जिन्हें आप पहले से ही कार्यात्मक दुनिया को समझाना जानते हैं।

मैंने पाया कि हस्केल, सूची ... आदि जैसे अधिक कार्यात्मक प्रोग्रामिंग में गोता लगाने के बजाय स्काला में कार्यात्मक प्रोग्रामिंग को समझना मेरे लिए आसान है।


2

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

  • सी ++ (कार्यात्मक नहीं है, लेकिन संकेत और स्मृति प्रबंधन जैसी अवधारणाएं अमूल्य हैं)
  • डॉ। योजना
  • ML / Ocaml (हमने ML / Ocaml का उपयोग करके एक और भाषा लिखी!)
  • जावास्क्रिप्ट (कार्यात्मक भाषा जो उद्योग में कर्षण प्राप्त कर रही है, ग्राहक पक्ष और सर्वर पक्ष दोनों)

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


1

रूबी के पास मेरे द्वारा उपयोग किए जाने वाले सबसे शक्तिशाली और सहज परीक्षण ढांचे में से एक है। मुझे यकीन नहीं है कि मैं वास्तव में समझ गया था कि जब तक मैंने रूबी में परीक्षण लिखना शुरू नहीं किया था, तब तक सही तरीके से मॉकिंग और स्टबिंग का उपयोग कैसे किया जाए। RSpec और ककड़ी शानदार उपकरण हैं।


1

ऐसी कई प्रोग्रामिंग भाषाएं हैं जिनकी आपको आवश्यकता होगी कि आप किसी समस्या के बारे में नए तरीके से सोचें (आपके द्वारा उपयोग की जाने वाली चीज़ों के सापेक्ष।) सीखने के लिए सबसे आम भाषाएं जिन्हें अनिवार्य भाषा सिखाई गई है, एक कार्यात्मक और एक कार्यात्मक है। तार्किक भाषा, उदाहरण के लिए प्रोलॉग और लिस्प

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

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


1

एक अच्छी तरह से गोल प्रोग्रामर के पास कई बैग ओ 'ट्रिक होती है जो उसकी आस्तीन में होती है, और इनमें शामिल हैं:

  • असेंबली, यह जानने के लिए कि कंप्यूटर की हिम्मत कैसे काम करती है।
  • सी या पास्कल जैसी एक प्रक्रियात्मक भाषा।
  • एक कार्यात्मक भाषा जैसे स्कीम।
  • एक OOP भाषा जैसे कि चीख़।

ये सभी आपको समस्याओं के बारे में सोचने और दृष्टिकोण करने के लिए कुछ अलग तरीके सिखाते हैं ।


0

आप स्पष्ट लक्ष्य के बिना किसी भी प्रोग्रामिंग भाषा को सही ढंग से नहीं सीखेंगे। यह जानना कि आप इसके साथ क्या करना चाहते हैं, तब आप यह तय कर सकते हैं कि कौन सा कार्यक्रम आपकी ज़रूरत के अनुरूप है।

उदाहरण के लिए, चलो c # के बारे में कहते हैं।

C # वेब प्रोग्राम, कंसोल प्रोग्राम, स्टैंडअल एक्जीक्यूटेबल, गेमिंग प्रोग्राम, सिल्वरलाइट प्रोग्राम और मोबाइल प्रोग्राम कर सकता है। जबकि वाक्य विन्यास लगभग हर मामले में समान है लेकिन यह हर परिदृश्य में अलग तरह से काम करता है। उदाहरण के लिए, एक स्टैंड अकेले निष्पादन योग्य अपनी जानकारी तब तक रखता है जब तक कि यह अनलोड नहीं हो जाता है या प्रोग्राम समाप्त नहीं हो जाता है, जबकि एक वेब प्रोग्राम, सूचना हर बार जब आप एक पेज लोड करते हैं, और सिल्वरलाइट में नष्ट हो जाते हैं, तो आप ज्यादातर समय संघर्ष के साथ बिताएंगे एक xml फ़ाइल।

और दूसरा, अपना समय विदेशी भाषाओं (उदाहरण के लिए हास्केल) के साथ नहीं बिताएं, कॉर्पोरेट बोलना, आपके प्रयास के लायक बहुत कम कार्यक्रम हैं: जावा (पहाड़ी का राजा), सी # / vb.net, php और sql।


0

Java Applets नामक संसाधन लिखने के लिए एक बहुत ही सरल प्रोग्राम है

यदि आप अभी शुरुआत कर रहे हैं, तो यह भाषा आपको चर, छोरों और उस तरह की बहुत बुनियादी समझ देगी।


0

कुछ बेहतरीन सुझाव यहाँ। मैं शायद व्यक्तिगत रूप से C या C ++ के साथ जाऊंगा। वे आपको बहुत सी अवधारणाओं से निपटने के लिए बाध्य करते हैं जो यह समझने में बहुत मायने रखती हैं कि चीजें कैसे काम करती हैं, लेकिन यह अन्य भाषाओं में अस्पष्ट हो जाती हैं। बस यह समझना कि चीजें वास्तव में कैसे काम कर रही हैं, एक प्रोग्रामर के रूप में आपकी मदद करने जा रही हैं, भले ही आप जिस भाषा का उपयोग कर रहे हों, वह बाद में कुछ विवरणों को छिपाए।

असेंबली मजेदार है अगर आप थोड़ा निचले स्तर पर खुदाई करना चाहते हैं, तो, लेकिन इसके साथ बहुत कुछ करने की उम्मीद न करें। :)


0

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

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