क्या प्रोग्रामिंग के लिए गणित आवश्यक है? [बन्द है]


117

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

मेरा रुख यह था कि सभी कंप्यूटर विज्ञान अग्रिमों में लगभग पूरी तरह से गणित की प्रगति पर निर्भर थे, और इसलिए गणित में गहन ज्ञान प्रोग्रामर को बहुत मदद करेगा जब वे वास्तविक दुनिया की चुनौतीपूर्ण समस्याओं के साथ काम कर रहे हैं।

मैं अभी भी तय नहीं कर सकता कि दलीलों में से कौन सा पक्ष सही है। क्या आप अपने अनुभव से हमें अपना रुख बता सकते हैं?


7
मैंने अपने एच एस गणित शिक्षक को दस साल बाद फोन किया, बस उसे यह बताने के लिए कि मैंने अपने पूरे करियर में उन्नत गणित का इस्तेमाल कभी नहीं किया। डिक चाल, मुझे पता है, लेकिन महान सवाल! एक और।
क्रिस मैकॉल


कृपया इस सवाल का सबसे ज्यादा वोट देने वाला उत्तर देखें ।
बोरिस स्टिटनिक

बजाय। बंद, यह प्रोग्रामर को माइग्रेट किया जाना चाहिए।
क्रिस कूडमोर

जवाबों:


111

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

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

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

हालांकि, मैं दृढ़ता से सोचने के औपचारिक तरीकों पर विश्वास करता हूं कि गणित मांग करता है - सावधानीपूर्वक तर्क, काउंटर-उदाहरणों की खोज, स्वयंसिद्ध नींव का निर्माण, अवधारणाओं के बीच संबंध स्थापित करना - जब मैंने बड़ी और जटिल प्रोग्रामिंग परियोजनाओं का सामना किया है, तो यह एक जबरदस्त मदद रही है।

एथलीटों को उनके खेल के लिए प्रशिक्षित करने के तरीके पर विचार करें। उदाहरण के लिए, फुटबॉलरों को कोई संदेह नहीं है कि वे बुनियादी फुटबॉल कौशल पर अपने प्रशिक्षण समय का ज्यादा खर्च करते हैं। हालाँकि, अपनी सामान्य फिटनेस को बेहतर बनाने के लिए वे जिम में साइकिल या रोइंग मशीन, वेट वगैरह पर समय बिता सकते हैं।

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


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

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

56

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

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

बहुत अच्छा मौका है कि अगर आप एक में अच्छे हैं, तो आप शायद दूसरे में अच्छे होंगे।


और इसलिए आप कह सकते हैं कि कोई व्यक्ति जो बहुत सारे क्रॉसवर्ड करता है या स्क्रैबल खेलता है, वह प्रोग्रामिंग में अच्छा होने की संभावना है जो किसी ऐसे व्यक्ति से नहीं है जो नहीं करता है। रिश्ता एक सख्त निर्भरता के बजाय संभावना के बारे में लगता है।
लियाम

गणित में एक समस्या को हल करने की कठोरता और अनुशासन प्रोग्रामिंग में अनुवाद करता है। आपको एक समस्या को फिर से बनाने और पहले स्पष्ट दिशा से और फिर दोनों विषयों में अधिक रचनात्मक दिशाओं से संपर्क करने की क्षमता होनी चाहिए।
ब्रम्हा घोष

4
दो महान प्रोग्रामर, मैं बहुत प्रशंसा करता हूं कि उन्होंने कंप्यूटर साइंस का अध्ययन नहीं किया था, बल्कि गणितज्ञों के रूप में प्रशिक्षित थे और सिर्फ कैरियर मार्ग बदल दिए थे: मिगुएल डे इकाजा और अलेक्जेंडर स्टेपानोव। वैसे, Stepanov ने एक बार कहा था कि गणित पर काम करते समय "आप स्वयंसिद्ध के साथ शुरू नहीं करते हैं: आप स्वयंसिद्ध के साथ समाप्त होते हैं"। : डी
जो पिनाडा

@ लियम - यह शॉर्ट टर्म में मेमोरी में चीजों के मिलान और बाजीगरी के पैटर्न के बारे में है। दोनों गतिविधियों के लिए उन कौशल की आवश्यकता होती है।
jcolebrand

+1 के लिए "एक बहुत अच्छा मौका है कि यदि आप एक में अच्छे हैं, तो आप शायद दूसरे में अच्छे होंगे।"
थोरबजोरन राव एंडरसन

39

कंप्यूटर विज्ञान! = प्रोग्रामिंग

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


12
मुझे लगता है कि मैंने जो सबसे अच्छा उद्धरण सुना है वह है "कंप्यूटर विज्ञान टेलीस्कोप के बारे में खगोल विज्ञान की तुलना में कंप्यूटर के बारे में अधिक नहीं है।" (
डीजकस्ट्रा

5
मुझे लगता है कि मूल रूप से इस वन-लाइनर प्रकार के उत्तरों को दूर करने के लिए मूल रूप से stackoverflow.com को बनाया गया था, फिर भी 15 समान विचारधारा वाले लोग हैं जिन्होंने इस बेकार उत्तर को ऊपर उठा दिया। मेरे पास आपके साथ कुछ भी व्यक्तिगत नहीं है, हालांकि मैंने आपके उत्तर को "आक्रामक" के रूप में चिह्नित किया है। यह मेरे लिए कम से कम है।
Simsim

2
@ सिस्मिम: मुझे यह अप्रिय लगता है कि लोगों को लगता है कि सीएस डिग्री किसी तरह प्रोग्रामिंग के बारे में है।
क्लॉक

3
@ सिस्मिम: इससे कोई फर्क नहीं पड़ता कि जोएल और जेफ के दिमाग में क्या था जब उन्होंने इस वेबसाइट को बनाया। यह एक समुदाय बनाने के बारे में है जहाँ प्रोग्रामर एक दूसरे की मदद करते हैं। मुझे लगता है कि डेविड का छोटा जवाब निशाने पर सही है। +1
स्कूटी टी

@ स्कॉटी: यदि यह "एक समुदाय बनाने के बारे में था, जहां प्रोग्रामर एक-दूसरे की मदद करते हैं", तो मंचों और मेलिंग सूचियों में पर्याप्त वृद्धि होगी। हो सकता है कि मेरी प्रतिक्रिया में मैं थोड़ा कठोर था, लेकिन 15 उपयोगकर्ताओं को पूरी तरह से "उत्तर" के लिए वोट करते हुए देखकर आश्चर्य हुआ, ठीक है, निश्चित रूप से संपादन से पहले। :-)
Simsim

29

मुझे लगता है कि मैं ऐसा करने वाला पहला व्यक्ति बनने जा रहा हूं जरूरत गणित। जैसा कि दूसरों ने कहा है कि गणित विकास के कुछ पहलुओं के लिए महत्वपूर्ण नहीं है, लेकिन महत्वपूर्ण सोच और संरचित विश्लेषण के मूल तत्व बहुत महत्वपूर्ण हैं।

और अधिक, गणित बहुत सारी बुनियादी बातों को समझने में महत्वपूर्ण है जो शेड्यूलर, अनुकूलन, छंटनी, प्रोटोकॉल प्रबंधन और कंप्यूटर के कई अन्य पहलुओं जैसी चीजों में जाते हैं। यद्यपि गणना स्तर से शामिल गणित जटिल नहीं है (इसके ज्यादातर हाई स्कूल बीजगणित) सिद्धांत और अनुप्रयोग काफी जटिल हो सकते हैं क्योंकि पथरी के माध्यम से गणित की ठोस समझ से बहुत लाभ होगा।

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

मैंने ऐसे लोगों को जाना है जो बाड़ के दोनों किनारों पर (जो गणित पर एक मजबूत फोकस के बिना, और जो लोग भौतिकी या गणित के लिए स्कूल गए थे) बेहद सफल थे, लेकिन दोनों समूहों में उन्होंने संख्यात्मक समस्याओं और एल्गोरिदम और गणित सिद्धांत के बारे में जानने का आनंद लिया ।


मुझे भी वह पता हैं। यद्यपि कोई इसके बिना प्राप्त कर सकता है - क्या कोई उसके निर्णय पर पछतावा करेगा? यदि आप मामूली रूप से रोमांचक / चुनौतीपूर्ण काम करने की उम्मीद करते हैं, तो आपके द्वारा हासिल किए गए गणित कौशल निश्चित रूप से आपकी मदद करेंगे।
एंड्रास वास

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

1
@ इम्मेल, मैंने वास्तव में एक बार्न्स और नोबल में "द मैगा गाइड टू मैथ" और "द मैंगा गाइड टू कैलकुलस" देखा, और मुझे पता है कि मैंने दूसरे दिन एक "कम्प्लीट इडियट्स गाइड टू लीनियर अलजेब्रा" देखी है। वास्तविक संसाधनों के लिए, वहाँ कुछ महान गणित वेबसाइटों (छात्रों, आदि के लिए) का उपयोग किया जाता है, लेकिन मुझे यकीन नहीं है कि उनमें से कितने अभी भी आसपास हैं। एक चीज जो मैं हर एक बार करता हूं, वह एक सामुदायिक कॉलेज में जाती है और गणित कक्षाओं को "ऑडिट" करती है (इसे पास / फेल के लिए ले जाती है) और बस एक रिफ्रेशर प्राप्त करें। हेवेंट ने इसे 5-6 वर्षों में किया था, लेकिन पिछली बार यह काफी मददगार था।
ग्रेविरक्सएक्स

26

मेरे पास मैथ्स की डिग्री है, लेकिन मुझे अपने करियर में एक बार भी उस मैथ्स की आवश्यकता नहीं है। यह तार्किक सोच के लिए मेरे दिमाग को प्रशिक्षित करने के संदर्भ में उपयोगी था, लेकिन मैंने तरल गतिकी, क्वांटम सिद्धांत या मार्कोव चेन का उपयोग करके कोई कोड नहीं लिखा है। (आखिरी आने की सबसे अधिक संभावना है, मुझे संदेह है।)

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

मत भूलो कि अधिकांश प्रोग्रामर कंप्यूटर विज्ञान को आगे नहीं बढ़ा रहे हैं - वे अनुप्रयोगों का निर्माण कर रहे हैं। मुझे आधुनिक कार चलाने के लिए उन्नत इंजीनियरिंग जानने की आवश्यकता नहीं है, भले ही उस कार को उन्नत इंजीनियरिंग के माध्यम से लगभग निश्चित रूप से बेहतर बनाया गया हो ।


मैं आपके द्वारा कही गई अधिकांश बातों से सहमत हूं, लेकिन क्या यह नहीं कहा जा सकता है कि प्रोग्रामिंग के कई पहलुओं को सामान्य गणित के सिद्धांतों को समझकर स्पष्ट रूप से आसान किया जा सकता है? कभी-कभी किसी चीज़ के लिए सूत्र एल्गोरिथ्म की तुलना में उस मूल्य तक पहुंचने के लिए प्रोग्राम करना कहीं अधिक आसान होता है ... जब तक आप उस सूत्र को जानते हैं
बेनलास्टर 15

@balabaster: कभी-कभी - लेकिन मैं कहूंगा कि ऐसा बहुत बार नहीं होता है। समान रूप से, आपको इसका उपयोग करने के लिए पहले से एक फॉर्मूला जानने की आवश्यकता नहीं है। होने के नाते सक्षम ताकि आप सूत्रों जब आप उन्हें देख समझ सकते हैं, लेकिन आप शायद ही कभी IMO डिग्री स्तर के गणित में ही की जरूरत है गणित में, अच्छा है।
जॉन स्कीट

11
गणित की डिग्री? फिर आप जानते हैं कि यह सिर्फ संख्या नहीं है। मेरे पास दो गणित की डिग्री है, और अक्सर सामग्री का उपयोग करते हैं: बूलियन बीजगणित का विश्लेषण करने / तर्क को सरल बनाने, डीएसएल निर्माण के लिए ऑटोमेटा / भाषा सिद्धांत, बड़े-ओ प्रदर्शन विश्लेषण के लिए बीजगणित, आदि
joel.neely

14

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


14

मैं यहाँ अनाज के खिलाफ जाऊंगा और "हाँ" कहूँगा

मैं सिविल इंजीनियरिंग से प्रोग्रामिंग (कंक्रीट बेकार!) पर स्विच करता हूं। मेरी गणित की पृष्ठभूमि में सामान्य प्रथम वर्ष का सामान, दूसरा और तीसरा वर्ष कैलकुलस (डिफ ईक्यू, वॉल्यूम इंटीग्रेशन, सीरीज़, फूरियर और लाप्लास ट्रांसफॉर्मस) और न्यूमेरिकल एनालिसिस कोर्स शामिल हैं।

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


एक औसत प्रोग्रामर वास्तव में कितने मौलिक एल्गोरिदम लिखता है? मुझे लगता है कि 80% प्रोग्रामिंग नौकरियों में मूल बीजगणित से परे कोई गणित शामिल नहीं है।
18

@dbkk: एक औसत प्रोग्रामर का सबसे सामान्य कार्य ऑब्जेक्ट मॉडल का डिज़ाइन, कुछ डोमेन का "व्यावसायिक तर्क" है। और ऐसी प्रक्रिया गणित के अलावा और कुछ नहीं है, हालांकि यह आमतौर पर उन लोगों द्वारा परिलक्षित नहीं होता है जो कार्य करते हैं।
बोरिस स्टिटनिक

14

यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं। यदि आप बहुत अधिक 3D प्रोग्रामिंग करते हैं, तो 3D ज्यामिति का ज्ञान निश्चित रूप से आवश्यक है, क्या आप सहमत नहीं हैं? ;-) अगर आप एक नया इमेज फॉर्मेट बनाना चाहते हैं जैसे कि JPG या एक नया ऑडियो फॉर्मेट जैसे MP3, तो आप बहुत खो गए हैं यदि आप कॉशन या फूरियर ट्रांसफॉर्मेशन को नहीं समझ सकते हैं, क्योंकि ये मूल बातें हैं तो सबसे ज्यादा नुकसानदायक कम्प्रेशन पर आधारित हैं । यदि आप अपने गणित को अच्छी तरह से जानते हैं तो कई अन्य समस्याओं को बेहतर तरीके से हल किया जा सकता है।

कई अन्य प्रोग्रामिंग कार्य भी हैं जो आपको मिलेंगे बहुत गणित की आवश्यकता नहीं है।


13

यदि आपको यह पोस्ट करने के लिए विषय आकर्षक लगता है, तो बस आगे बढ़ें और सीखना शुरू करें। बाकी स्वाभाविक रूप से आएंगे।


9

हाँ, उन्नत गणित के लिए कोई ज़रूरत नहीं है - यदि आप वाणिज्यिक प्रोग्रामिंग कर रहे हैं - शेल्फ सॉफ्टवेयर से।

हालांकि जब कट्टर सामान से निपटने के रूप में:

  • रोबोट को नियंत्रित करने के लिए प्रक्षेपवक्र की गणना करना
  • अनिश्चितता और स्वचालित तर्क का समर्थन करने के लिए AI जैसे एप्लिकेशन बनाना
  • 3-डी मोशन और ग्राफिक्स के साथ खेलना

कुछ उन्नत गणित ज्ञान काम आ सकता है। और ऐसा नहीं है कि वे "इस दुनिया से बाहर" समस्याएं हैं।

मुझे एक कार्यालय के लिए आवश्यक राशि के कागज की "भविष्यवाणी" करने की कोशिश करने के लिए एक सॉफ्टवेयर बनाना था (और यह लगभग अनुमानित मूल्यों का सबसे अच्छा तरीका खोजने के लिए नरक था)।

आपको सावधान रहना होगा, हालांकि, क्योंकि उन्नत चीजों का उपयोग करते समय खो जाना आसान है - मेरा एक दोस्त है जिसने इसे सही ढंग से प्रदर्शित करने के लिए एक गतिशील मेनू की स्थिति को स्टोर करने के लिए ट्यूरिंग का उपयोग किया है - हम्म ... शायद वह अपनी कल्पना में बहुत दूर जागा।


आप फ़ाइलों को संपीड़ित करने या एमपी 3 फ़ाइलों को संपादित करने या ऐसी चीज़ों को जोड़ सकते हैं जिनके लिए वास्तव में यह समझना आवश्यक है कि कंप्यूटर क्या कर रहा है, बल्कि केवल एक वेबसाइट को फेंकने के बजाय।
क्लोच

4
उन्होंने ऐसा करने के लिए ट्यूरिंग का उपयोग कैसे किया? एक ouija बोर्ड या शपथ?
जेरेड अपडेटेड

8

किस प्रकार की प्रोग्रामिंग?

मेरे व्यावसायिक अनुभव में, मुझे किसी उन्नत गणित की आवश्यकता नहीं है, लेकिन यह उस क्षेत्र पर बहुत निर्भर करता है जिसमें आप हैं।

कंप्यूटर ग्राफिक्स के लिए उन्नत गणित की एक बड़ी मात्रा की आवश्यकता होती है। बहुत सारे शैक्षणिक कंप्यूटर प्रोग्रामिंग के लिए उन्नत गणित की आवश्यकता होती है।

इसलिए यह कहना कि गणित में अच्छे लोगों और प्रोग्रामिंग में अच्छे लोगों के बीच संबंध होना है।

मुझे उम्मीद है कि यह इच्छा-धोबी जवाब मदद करता है।


6

कुछ क्षेत्रों में डेवलपर्स के लिए गणित की आवश्यकता होती है लेकिन दूसरों में लगभग बेकार है।

यदि आप गेम डेवलपर हैं और भौतिकी के साथ बहुत काम करना है - गणित की समझ महत्वपूर्ण है। यदि आप उन्नत दृश्य नियंत्रण के साथ काम कर रहे हैं - तो आप ज्यामिति के बिना बहुत कुछ नहीं कर सकते। यदि आप कुछ वित्तीय गणनाएँ करने की योजना बना रहे हैं - तो यह वास्तव में आँकड़ों का ठोस ज्ञान होने में मदद करेगा।

दूसरी ओर पिछले 5 वर्षों में मेरे पास केवल 2 या 3 परियोजनाएं थीं जहां गणित की किसी भी राशि की आवश्यकता थी। इनमें से केवल 1 घटना थी जब Google खोज ने मदद नहीं की।

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

इसलिए यदि आप 'लागू सॉफ्टवेयर' व्यवसाय में हैं तो आप कभी भी अपनी गणित की डिग्री का उपयोग नहीं करेंगे। यदि आप अकादमिक सॉफ्टवेयर में हैं तो गणित महत्वपूर्ण है।


"गेम डेवलपर" के लिए मैं "सिमुलेशन डेवलपर" जोड़ूंगा। मुझे याद है कि '93 में पूरे शहर में ड्राइविंग करके एक गणित की किताब खोजने की कोशिश की जा रही थी, जो यह समझाने के लिए पर्याप्त रूप से उन्नत हो कि कैसे क्वाटरनियन्स मेरे लिए काम करते हैं, ताकि मैं एक मृत रीकॉन्गोरिद्म को ठीक से कोड कर सकूं। आज इंटरनेट के लिए भगवान का शुक्र है!
TED

6

मैं क्रिस से सहमत हूं। मैं कहूँगा "हाँ", भी। लेकिन यह आपके बाजार पर निर्भर करता है जैसा कि ऊपर कहा गया है। यदि आप बस अपने रोजमर्रा के काम में मदद करने के लिए कुछ बुनियादी "ऑफ-द-शेल्फ" एप्लिकेशन या लेखन टूल बना रहे हैं ... तो गणित लगभग उतना महत्वपूर्ण नहीं है।

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

यह मेरा 2 सेंट है, मैं ऊपर पढ़ने से बता सकता हूं कि कई सहमत नहीं होंगे। मैं सभी को यह विचार करने के लिए प्रोत्साहित करता हूं कि मैं यह नहीं कह रहा हूं कि आपके पास गणित की पृष्ठभूमि के बिना उन कौशल नहीं हो सकते हैं, मैं केवल यह कह रहा हूं कि कौशल ऐसी पृष्ठभूमि होने के दुष्प्रभाव हैं और सॉफ्टवेयर को सकारात्मक रूप से प्रभावित कर सकते हैं।


6

मेरे अनुभव में प्रोग्रामिंग में गणित की आवश्यकता होती है, आप इससे दूर नहीं हो सकते। पूरी प्रोग्रामिंग गणित पर आधारित है।

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

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

और गणित, तर्क और दर्शन को भाई-बहन मत भूलना। लॉजिक आपको caseया switchबयानों का कुशल उपयोग करने में मदद करेगा । दर्शनशास्त्र आपको उस आदमी की सोच को समझने में मदद करेगा जिसने उस कोड को लिखा था जिसे आप संशोधित कर रहे हैं।

हां, प्रोग्राम लिखने के लिए आपको ज्यादा गणित की जरूरत नहीं है। कुछ कार्यक्रमों में दूसरों की तुलना में अधिक गणित की आवश्यकता हो सकती है। अधिक गणित ज्ञान आपको कम समझ रखने वालों पर एक फायदा देगा। इन समयों में, लोगों को उन नौकरियों को प्राप्त करने के लिए हर लाभ की आवश्यकता हो सकती है।


6

मैं 8 साल से पेशेवर रूप से प्रोग्रामिंग कर रहा हूं, और जब से मैं एक शौक के रूप में 12 साल का था।

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

एक जोड़े नंगे न्यूनतम हैं, जो आपको पहले से ही मिलना चाहिए। आपको मूल बीजगणितीय अभिव्यक्तियों और संकेतन, और सामान्य कंप्यूटर समकक्षों को जानना होगा। उदाहरण के लिए, आपको यह जानना होगा कि एक घातांक क्या है (3 से 3 की 27 है), और सामान्य कंप्यूटर अभिव्यक्ति 3 ^ 3 है। बीजगणित के लिए आम धारणाएं भाषाओं के बीच परिवर्तन नहीं करती हैं, लेकिन उनमें से कई कुछ हद तक एकीकृत पद्धति का उपयोग करती हैं। अन्य (आपकी ओर देख रहे हैं LISP) नहीं। आपको संचालन के आदेश को भी जानना होगा।

आपको एल्गोरिथम विचार को समझने की आवश्यकता है। पहले यह, फिर यह, जो इस गणना में उपयोग किया जाता है पैदा करता है। संभावना है कि आप इसे समझ रहे हैं या आप नहीं करते हैं, और यदि आप इसे नहीं समझते हैं तो कूदने के लिए यह काफी कठिन बाधा है; मैंने पाया है कि यह कुछ ऐसा है जो आपको मिलता है, और वास्तव में ऐसा कुछ नहीं जो आप सीख सकते हैं। इसके विपरीत, कुछ लोगों को कला नहीं मिलती है। उन्हें चित्रकार नहीं बनना चाहिए। इसके अलावा, सीएस पाठ्यक्रम में ऐसे छात्र हैं जो यह पता नहीं लगा सकते हैं कि यह काम क्यों नहीं करता है: x = z + w; z = 3; y = 5; ऐसा नहीं है कि वे इसके अलावा नहीं समझते हैं, यह है कि वे अस्पष्ट एक्सप्रेस की आवश्यकता को समझ नहीं रहे हैं। अगर वे इसे समझते हैं, तो कंप्यूटर को भी सही होना चाहिए? यदि आप यह नहीं देख सकते हैं कि उपरोक्त तीन पंक्तियों में क्या गलत है, तो प्रोग्रामर न बनें।

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

यह आगे गणित फिर भी चला जाता है; जो भी डोमेन आप के लिए प्रोग्रामिंग कर रहे हैं, आपको मूल बातें समझने की आवश्यकता है। यदि आप भाषा विश्लेषण सॉफ्टवेयर प्रोग्रामिंग कर रहे हैं, तो आपको संभाव्यता, सांख्यिकी, व्याकरण सिद्धांत (कई भाषाएँ) आदि जानने की आवश्यकता होगी।

अक्सर कई बार, कुछ डोमेन की आवश्यकता होती है, या इससे लाभ उठा सकते हैं, आपको लगता है कि ज्ञान असंबंधित है। उदाहरण के लिए, यदि आप ऑडियो सॉफ़्टवेयर प्रोग्रामिंग कर रहे थे, तो आपको वास्तव में तरंगों से निपटने के लिए त्रिकोणमिति जानने की आवश्यकता है।

परिमाण चीजों को भी बदलता है। यदि आप 1000 वस्तुओं का वित्तीय डेटा सेट कर रहे हैं, तो यह कोई बड़ी बात नहीं है। यदि यह 10 मिलियन रिकॉर्ड था, हालांकि, आपको वेक्टर गणित को वास्तव में जानने से बहुत लाभ होगा, और बाइनरी स्तर पर छंटनी की गहरी समझ है (सिस्टम कैसे वर्णानुक्रम में सॉर्ट करता है? यह कैसे जानता है कि 'ए' 'बी' से कम है) '?)

आप पाते हैं कि एक प्रोग्रामर के रूप में, आपके सामान्य ज्ञान का आधार विस्फोट हो रहा है, क्योंकि प्रत्येक परियोजना को प्रोग्रामिंग के प्रत्यक्ष क्षेत्र के बाहर अधिक सीखने की आवश्यकता होगी। यदि आप स्वयं सीखने के बारे में व्यंग्य या आलसी हैं, और अनिवार्य रूप से 'होमवर्क' करने के लिए सप्ताह में 10+ घंटे खर्च करने का विचार पसंद नहीं करते हैं, तो प्रोग्रामर न बनें।

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


5

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


5

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

तो आपके प्रश्न का उत्तर है - यह इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं।


5

यदि आप एक नई प्रोग्रामिंग भाषा लिखने जा रहे हैं तो उन्नत गणित का ज्ञान महत्वपूर्ण है। या आपको अपना स्वयं का एल्गोरिदम लिखने की आवश्यकता है।

हालांकि, अधिकांश दिन-प्रतिदिन की प्रोग्रामिंग के लिए - वेबसाइटों से लेकर बीमा प्रसंस्करण अनुप्रयोगों तक - केवल मूल गणित आवश्यक हैं


5

एक ठोस गणितीय (जो केवल अंकगणित नहीं है) या तर्क पृष्ठभूमि के साथ कोई व्यक्ति एल्गोरिदम, चर उपयोग, सशर्त तर्क और डेटा संरचनाओं के साथ अच्छी तरह से सामना करेगा।

  • हर कोई UI डिजाइन नहीं कर सकता है।
  • हर कोई कुशल कोड नहीं बना सकता है।
  • हर कोई स्पष्ट रूप से टिप्पणी और दस्तावेज़ नहीं कर सकता है।
  • हर कोई एक अच्छा एल्गोरिथ्म नहीं कर सकता है

गणित आपको एक बिंदु पर मदद करेगा, लेकिन केवल एक बिंदु तक।


5

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


5

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

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


5

मैथ प्रोग्राम बनाने के लिए एक टूलबॉक्स है। मैं कॉर्मेन इंट्रोडक्शन टू अल्गोरिदम की सलाह देता हूं। यह अधिक "मैथी" सामान को छूता है।

- Greatest lowest limit (managing resources) 
- Random variables (game programming)
- Topological sort (adjusting spreadsheets)
- Matrix operations (3d graphics)
- Number theory (encryption)
- Fast fourier transforms (networks)

4

मुझे नहीं लगता कि उच्च गणित एक अच्छा प्रोग्रामर होने के लिए एक आवश्यकता है - हमेशा की तरह यह इस बात पर निर्भर करता है कि आप क्या कोडिंग कर रहे हैं।

बेशक अगर आप 3 डी ग्राफिक्स प्रोग्रामिंग में हैं, तो आपको मैट्रीस और सामान की आवश्यकता होगी। व्यवसाय सॉफ़्टवेयर के लेखक के रूप में, आपको संभवतः सांख्यिकी गणित की आवश्यकता होगी।

लेकिन लगभग 10 साल (और एक और 10 साल शौकिया) "उच्च गणित" के लिए एक पेशेवर प्रोग्रामर होने के नाते कुछ ऐसा नहीं है जो मुझे नियमित रूप से चाहिए। लगभग 99.8% सभी मामलों में यह सिर्फ प्लस, माइनस, विभाजन और कुछ बुद्धिमान संयोजनों में गुणा है - ज्यादातर मामलों में यह एल्गोरिदम के बारे में है, गणित नहीं।


4

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

बहुत कम प्रोग्रामिंग नौकरियां, हालांकि, हाई स्कूल गणित से ऊपर कुछ भी चाहिए। मैंने एक बार रैखिक बीजगणित का उपयोग किया है। मैंने कभी पथरी का इस्तेमाल नहीं किया है। मैं हर दिन बीजगणित का उपयोग करता हूं।


4

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

लेकिन मैं एक प्रोग्रामर से सावधान रहूंगा जो मैथ नहीं कर सकता। एक से अधिक जो आकर्षित नहीं कर सका।


4

मुझे लगता है कि यह वास्तव में इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं, लेकिन IMHO, CS और OS सिद्धांत यहां गणित से अधिक महत्वपूर्ण हैं, और आपको वास्तव में केवल उस गणित की आवश्यकता है जिसमें वे शामिल हैं।

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

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


क्या आपने कभी कतारबद्ध सिद्धांत का अध्ययन किया है? क्या आपने कभी मेमोरी मैनेजर और सांख्यिकीय मॉडल का अध्ययन किया है जो डेवलपर्स को एक दूसरे के ऊपर चुनते हैं? मैं जरूरी नहीं कि आपके जवाब का खामियाजा पूरी तरह से असहमत हो जाऊं, लेकिन आपका अति-सरलीकरण।
सैन जैसिंटो

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

जो मुझे लगता है कि बहुत वैध है। मुझे लगता है कि OS प्रोग्रामिंग से सिस्टम प्रोग्रामिंग को अलग करने की आवश्यकता है। कसकर बुनी गई अवधारणाएँ, लेकिन फिर भी अलग-अलग।
सैन जैसिंटो

4

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

मैंने अभी तक असतत गणित नहीं लिया है, लेकिन मुझे एक गणित-अंकन में लिखी गई प्रोग्रामिंग के साथ बहुत सी सिद्धांत सामग्री दिखाई देती है जो इस कक्षा में पढ़ाई जाती है।

इसके अलावा, सुनिश्चित करें कि आप जानते हैं कि किसी भी आधार, विशेष रूप से आधार 2, 8, और 16 में किसी भी चीज की गणना कैसे करें।

इसके अलावा, एक वर्ग जो वास्तव में मेरे लिए कुछ अवधारणाओं को घर ले आया था, यह प्री-प्रोग्रामिंग क्लास था। हमें पढ़ाया गया यूनियनों, चौराहों, और उस सभी खुश सामान और यह लगभग बिल्कुल समरूप बिट गणित। और हमने बूलियन लॉजिक को बहुत जोर से कवर किया। जब मैंने सबसे उपयोगी माना, तब हमने सीखा कि जटिल बूलियन बयानों को कैसे कम किया जाए। यह बहुत आसान था:

(x|y) & (x|z) & (x|foo)

को सरल बनाया जा सकता है

x | (y & z & foo)

जो मैंने पहले नहीं समझा था।


4

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

किसी भी तरह से आकार या रूप में आपको इनमें से किसी के लिए भी गणित वर्ग लेने या उत्तीर्ण करने की आवश्यकता नहीं है।

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

अब यदि आप हेक्स से बाइनरी से दशमलव में जल्दी से या तो अपने सिर में, कागज पर, या एक कैलकुलेटर का उपयोग करके आप संघर्ष करने जा रहे हैं का उपयोग नहीं कर सकते। यदि आप नेटवर्किंग और अन्य चीजों में शामिल होना चाहते हैं, जिसमें टाइमिंग शामिल है, जो कर्नेल ड्राइवर अक्सर करते हैं, लेकिन ऐसा नहीं करना चाहिए। आप संघर्ष करने जा रहे हैं। मुझे गणित की डिग्री और / या कंप्यूटर विज्ञान, और / या इंजीनियरिंग डिग्री वाले लोगों की एक बहुत लंबी सूची के बारे में पता है जो दर की गणना के साथ संघर्ष करते हैं, प्रति सेकंड बिट्स, प्रति सेकंड बाइट्स, आपको कुछ करने के लिए कितनी स्मृति की आवश्यकता है, आदि। कुछ हद तक इसे कुछ प्रकार का अल्पविराम माना जा सकता है जो कुछ के पास है और कुछ को काम करना है।

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


यह नहीं है, लेकिन वास्तविकता है। एक प्रोग्रामिंग दृष्टिकोण से डिजिटल इलेक्ट्रॉनिक्स और सॉफ्टवेयर इंजीनियरिंग के बारे में आपको जो कुछ भी जानने की जरूरत है उसे संक्षेप में प्रस्तुत किया जा सकता है। 0, 1, और, या, नहीं। वे पांच चीजें हैं जो डिजिटल इलेक्ट्रॉनिक्स और सभी कार्यक्रमों पर काम करती हैं। आप तेज नंद द्वार के एक बड़े बॉक्स के साथ कुछ भी बना सकते हैं।
Old_timer

4

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


3

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

लेकिन सामान्य तौर पर, मुझे याद नहीं है कि पिछली बार मैंने दिन-प्रतिदिन की प्रोग्रामिंग में किसी भी प्रकार के उन्नत गणित का उपयोग किया था, इसलिए नहीं।

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