मेरी पहली प्रोग्रामिंग भाषा के रूप में, मैंने हास्केल सीखने का फैसला किया। मैं एक विश्लेषणात्मक दर्शन प्रमुख हूं, और हास्केल ने मुझे रुचि के कार्यक्रमों को जल्दी और सही तरीके से बनाने की अनुमति दी, उदाहरण के लिए, प्राकृतिक भाषा पार्सिंग, प्रमेय प्रूवर्स और दुभाषियों के लिए ट्रांसड्यूसर। हालांकि मैं केवल ढाई महीने से प्रोग्रामिंग कर रहा हूं, मैंने हास्केल के शब्दार्थ और वाक्य-विन्यास को बहुत अधिक पारंपरिक अनिवार्य भाषाओं की तुलना में सीखना आसान पाया, और इसके अधिकांश निर्माणों के साथ सहज (अब) महसूस किया।
हास्केल में प्रोग्रामिंग करना टोना-टोटका जैसा है, हालांकि, और मैं प्रोग्रामिंग के अपने ज्ञान को व्यापक बनाना चाहूंगा। मैं सीखने के लिए एक नई प्रोग्रामिंग भाषा चुनना चाहूंगा, लेकिन मेरे पास एक मनमाना भाषा चुनने, उसे छोड़ने और दोहराने के लिए पर्याप्त समय नहीं है। इसलिए मुझे लगा कि मैं इस सवाल का जवाब दूंगा, साथ ही मैं जिस प्रकार की भाषा की तलाश कर रहा हूं, उसके बारे में कई कथनों के साथ। कुछ व्यक्तिपरक हैं, कुछ का उद्देश्य हास्केल से संक्रमण को कम करना है।
- मजबूत प्रकार की प्रणाली। हास्केल में प्रोग्रामिंग के मेरे पसंदीदा हिस्सों में से एक प्रकार की घोषणाएं लिख रहा है। यह व्यक्तिगत कार्यों और समग्र रूप से कार्यक्रम के लिए उनके संबंधों के बारे में मेरे विचारों की संरचना में मदद करता है। यह मेरे कार्यक्रम की शुद्धता के बारे में अनौपचारिक रूप से तर्क करना भी आसान बनाता है। मैं शुद्धता से चिंतित हूं, दक्षता से नहीं।
- पुनरावृत्ति पर जोर देने के बजाय पुनरावृत्ति पर। मैं हास्केल में पुनरावृत्त निर्माण का उपयोग करता हूं, लेकिन उन्हें पुनरावर्ती रूप से लागू करता हूं। हालांकि, जटिल पुनरावृत्ति प्रक्रिया की तुलना में एक पुनरावर्ती कार्य की संरचना को समझना बहुत आसान है, खासकर जब कॉम्बिनेटर और उच्च-क्रम के कार्यों जैसे कि नक्शे, सिलवटों और बाइंड का उपयोग करना।
- सीखने के लिए पुरस्कृत। हास्केल में काम करने के लिए एक पुरस्कृत भाषा है। यह कांट पढ़ने की तरह है। सी के साथ कई साल पहले मेरा अनुभव, हालांकि, नहीं था। मैं सी की तलाश नहीं कर रहा हूं। भाषा को एक वैचारिक रूप से दिलचस्प प्रतिमान लागू करना चाहिए, जो मेरी पूरी तरह से व्यक्तिपरक राय में है, सी-लाइक नहीं।
जवाबों को तौलना : ये सिर्फ नोट्स हैं, निश्चित रूप से। मैं सिर्फ उन सभी को जवाब देना चाहता हूं जिन्होंने अच्छी तरह से गठित प्रतिक्रियाएं दीं। आप बहुत मददगार रहे।
1) कई प्रतिक्रियाओं ने संकेत दिया कि पुनरावृत्ति पर जोर देने वाली एक मजबूत, सांख्यिकीय रूप से टाइप की गई भाषा का मतलब एक और कार्यात्मक भाषा है। जबकि मैं हास्केल के साथ दृढ़ता से काम करना जारी रखना चाहता हूं, कैमकैन और लार्समैन ने सही ढंग से बताया कि ऐसी दूसरी भाषा "संक्रमण को बहुत कम कर देगी।" ये टिप्पणियाँ बहुत उपयोगी रही हैं, क्योंकि मैं कैमल में हास्केल लिखना नहीं चाह रहा हूँ! सबूत सहायकों में से, कोक और एजडा दोनों दिलचस्प दिखते हैं। विशेष रूप से, कोक रचनात्मक तर्क और औपचारिक प्रकार के सिद्धांत का ठोस परिचय प्रदान करेगा। मैंने फर्स्ट-ऑर्डर प्रेडिकेट और मोडल लॉजिक (मेंडेलसोहन, एंडर्टन, हिनमैन के कुछ) के साथ थोड़ा समय बिताया है, इसलिए मुझे शायद कोक के साथ बहुत मज़ा आएगा।
2) अन्य लोगों ने लिस्प (कॉमन लिस्प, स्कीम और क्लोजर) का जमकर समर्थन किया। मैं जो इकट्ठा करता हूं, उससे कॉमन लिस्प और स्कीम दोनों में उत्कृष्ट परिचयात्मक सामग्री होती है ( ऑन लिस्प और द रीज़नड स्कीमर , एसओपीपी )। SICP की सामग्री मुझे योजना के प्रति झुकाव का कारण बनाती है। विशेष रूप से, SICP के माध्यम से योजना एक अलग मूल्यांकन रणनीति, आलस्य के कार्यान्वयन, और निरंतरता, दुभाषियों, सांकेतिक गणना, और इतने पर जैसे विषयों पर ध्यान केंद्रित करने का मौका कवर करेगी। अंत में, जैसा कि अन्य ने बताया है, लिस्प का कोड / डेटा का उपचार पूरी तरह से नया होगा। इसलिए, मैं विकल्प (2), एक लिस्प की ओर बहुत अधिक झुक रहा हूं।
3) तीसरा, प्रस्तावना। प्रोलॉग में दिलचस्प सामग्री का खजाना है, और इसका प्राथमिक डोमेन बिल्कुल वही है जिसमें मैं दिलचस्पी रखता हूं। इसमें एक सरल वाक्यविन्यास है और पढ़ने में आसान है। मैं इस समय अधिक टिप्पणी नहीं कर सकता, लेकिन प्रोलॉग के अवलोकन को पढ़ने और कुछ परिचयात्मक सामग्री को स्किम करने के बाद, यह (2) के साथ रैंक करता है। और ऐसा लगता है जैसे प्रोलॉग का बैकट्रैकिंग हमेशा हास्केल में हैक हो रहा है!
4) मुख्यधारा की भाषाओं में, पायथन सबसे दिलचस्प लगता है। टिम येट्स भाषाओं को बहुत आकर्षक लगते हैं। जाहिरा तौर पर, पायथन को अक्सर प्रथम वर्ष के सीएस की बड़ी कंपनियों को पढ़ाया जाता है; इसलिए यह या तो वैचारिक रूप से समृद्ध है या सीखना आसान है। मुझे और अधिक शोध करना होगा।
आपकी सिफारिशों के लिए धन्यवाद! यह एक लिस्प (स्कीम, क्लोजर), प्रोलॉग या कोक या एजडा जैसे प्रूफ असिस्टेंट की तरह दिखता है, मुख्य लैंगॉज की सिफारिश की जा रही है।