मैं गणित में स्नातक छात्र हूँ, और कंप्यूटर विज्ञान में अपना स्नातक किया है। मैं मैथ explore प्रोग्रामिंग नामक एक ब्लॉग रखता हूं जिसमें मैं प्रोग्रामिंग के लिए गणित के अनुप्रयोगों का पता लगाता हूं (और इसके विपरीत), और मुझे स्वीकार करना होगा कि मुझे कंप्यूटर विज्ञान के कम-गणितीय पहलुओं में से अधिकांश सूखे और उदासीन हैं (मूल रूप से, मेरा विरोध हास्यास्पद हैक के सभी जो उद्योग में मेरे अनुभव में सिस्टम प्रोग्रामिंग में जाते हैं)।
दूसरी ओर, अपने ब्लॉग पर मैं चेहरे की पहचान (काफी रैखिक बीजगणित का एक सा), एन्क्रिप्शन विधियों, ट्यूरिंग मशीनों और सेलुलर ऑटोमेटा, सीरियल किलर गतिविधि की भविष्यवाणी करने के लिए मॉडल, खोज इंजन और अन्य गणितीय अवधारणाओं का एक गुच्छा जैसी समस्याओं को देखता हूं। । सबसे अच्छी बात यह है कि मैं विचारों को लागू करने के लिए, और अपने स्वयं के किसी भी!
अपने दोस्त को प्रोग्रामिंग करने के लिए हम जैसे बाकी लोग करते हैं, उसे वास्तव में दिलचस्प लगता हैपरियोजना। प्रोग्रामिंग पहलू बिना किसी उत्पाद की ओर काम किए उसके पास नहीं रहेगा जिसे वह सुंदर पाता है। भाषाओं के लिए, मैं मैथेमेटिका, रैकेट (एक बहुत ही अनुकूल, लेकिन अभी भी शक्तिशाली योजना व्युत्पन्न), पायथन और हास्केल की सलाह देता हूं। गणितज्ञ शायद सबसे अच्छा है, क्योंकि वह चुनिंदा रूप से अपने स्वयं के गणितीय कार्यों को लागू कर सकता है, और परियोजना को समाप्त करने के लिए पुस्तकालयों में निर्मित गणितज्ञ का उपयोग कर सकता है (उदाहरण के लिए, एक फ़ंक्शन लिखें जो फूरियर गुणांक की गणना करता है, और फिर शेष विश्लेषण करने के लिए गणितज्ञ का उपयोग करें, जैसे कि फ़िल्टरिंग, छवि निर्माण, आदि के रूप में)। यहां तक कि एकीकरण जैसे बुनियादी विषय कुछ आकर्षक परियोजनाएं देते हैं (विभिन्न चतुर्भुज नियम, मोंटे कार्लो एकीकरण, बड़े डेटा सेट के साथ मशीन सीखने में एक सौम्य संक्रमण)।
इसके अलावा, ऐसा लगता है कि यहां बहुत सारी प्रतिक्रियाएं ऐसे लोगों से हैं जो गणित नहीं करते हैं, या जिन्होंने उन भाषाओं का उपयोग नहीं किया है जो वे गणितीय सॉफ़्टवेयर करने का सुझाव दे रहे हैं। लोग हास्केल की सलाह देते हैं, क्योंकि यह श्रेणी सिद्धांत के शाब्दिक कार्यान्वयन के करीब है, और कुछ बुनियादी अवधारणाओं की गणितीय परिभाषाओं के साथ अच्छी तरह से फिट बैठता है। लेकिन अगर आपका दोस्त आपकी उम्र के करीब है, तो वह गणितीय रूप से श्रेणी के सिद्धांत के लिए तैयार नहीं है (यह कि परिपक्वता स्नातक स्कूल तक कम या ज्यादा बेकार है, और खुद को पढ़ाने के लिए दुष्टतापूर्ण है), और पहली भाषा के रूप में हास्केल के पास सबसे मजबूत हैसुझाए गए भाषाओं का वक्र सीखना (शायद प्रोलॉग स्टायरर है)। मैंने एक जावास्क्रिप्ट कम्पाइलर को लागू करने के लिए हास्केल का उपयोग किया, और मैंने एक बहुत ही सुंदर सुरुचिपूर्ण कोड के साथ समाप्त किया, लेकिन चर म्यूटेशन जैसी सहज ज्ञान युक्त चीजों के लिए, आपको पहले से ही nontrivial monads में डब करना होगा।
पाइथन और मैथमैटिक बहुत अधिक मित्रवत होंगे, और मैथेमैटिका में उथले सीखने की अवस्था केवल इसलिए होती है क्योंकि सभी पुस्तकालयों को एक बढ़िया उपयोगकर्ता इंटरफ़ेस में पैक किया जाता है जिसमें भयानक दस्तावेज़ीकरण होता है (सिर्फ एफ 1 मारा जाता है!)। दूसरी ओर, एक ऐसी किताब है जिसके बारे में मैंने सुना है (लेकिन पढ़ा नहीं गया है) जो उन्नत गणित और एक साथ हास्केल के लिए एक परिचय दोनों प्रदान करता है । ऐसा लगता है कि सकारात्मक अमेज़ॅन समीक्षाएं हैं, इसलिए आप इसे जांचना चाहते हैं। अगर वह कभी उद्योग का सामान करना चाहता है, तो वह सी # और जावा जैसी भाषाओं की ओर बढ़ सकता है, लेकिन अधिक संभावना है कि उसे कभी भी उस जंगल में प्रवेश करने की आवश्यकता नहीं होगी (और वैसे भी बहुत सारा उद्योग गणित का सामान शुद्ध मतलब है)।
लेकिन जैसा मैंने कहा, सही परियोजना के साथ भाषा सीखना एक खुशी बन जाता है, जो भी परियोजना हो सकती है।