प्रोग्रामिंग से गणित का क्या लेना-देना है? [बन्द है]


89

मैंने अभी सॉफ्टवेयर डेवलपमेंट में डिप्लोमा शुरू किया है। अभी हम मूल जावा के साथ शुरुआत कर रहे हैं और ऐसा (नीचे से सही कह सकते हैं) - जो ठीक है, मुझे जावा में "हैलो वर्ल्ड" करने का तरीका जानने के अलावा कोई प्रोग्रामिंग अनुभव नहीं है।

मैं सुनता रहा कि गणित कोडिंग के लिए प्रासंगिक है, लेकिन ऐसा कैसे है? क्या सामान्य उदाहरण दिखाते हैं कि गणित और प्रोग्रामिंग एक साथ कैसे चलते हैं, या एक दूसरे पर निर्भर हैं?

मैं अपने प्रश्न के लिए माफी माँगता हूँ, अस्पष्ट है, मैं मुश्किल से दुनिया का एक मोटा विचार पाने के लिए शुरू कर रहा हूँ जिस तरह से मैं एक कोड बंदर छात्र के रूप में कदम रख रहा हूं ...


49
प्रोग्रामिंग है गणित। en.wikipedia.org/wiki/Discrete_mathematics
SK-logic

25
@ बताइए, इसीलिए मैंने टिप्पणी में लिंक दिया, उत्तर के रूप में नहीं।
एसके-तर्क

7
@FiascoLabs, इससे भी अधिक - भाषा संरचना और तर्क भी गणित के उप-डोमेन हैं। प्रोग्रामिंग गणित लागू करने के अलावा और कुछ नहीं है।
एसके-तर्क

19
एक असंबंधित नोट पर, जावा से शुरू करना "नीचे से सही" नहीं है।
मैट एच

5
@ CharlesE.Grant, बहुत से गणित के छात्र भी ऐसा ही करते हैं (और अभी भी अपनी परीक्षा पास करते हैं)।
एसके-तर्क

जवाबों:


137

सबसे पहले: मैं एक गणितज्ञ हूं - एक पेशेवर (इसमें मुझे गणित करने के लिए भुगतान मिलता है)। मैं कोई प्रोग्रामर नहीं हूं । मैं कुछ प्रोग्रामिंग करता हूं, लेकिन निश्चित रूप से कार्गो कल्ट किस्म का (निश्चित रूप से https://tex.stackexchange.com/q/451/86 और मेरी प्रतिक्रिया के लिए पहली टिप्पणी देखें ) और उस तरह का कुछ भी नहीं जो मुझे सामान्य रूप से इस पर लाएगा। साइट (वास्तव में, मैंने इस जवाब को पोस्ट करने के लिए TeX चैट रूम में एक लिंक देखने के बाद यहां पंजीकृत किया है)।

मेरे उत्तर का सारांश है: गणित प्रोग्रामिंग है

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

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

जहां मैं शुरू करना चाहता हूं वह मुख्य प्रश्न पर टिप्पणी के साथ है:

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

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

जब मैं कार्यक्रम करता हूं तो यही मेरी मदद करता है:

  1. अमूर्त यह शायद है गणित से सबसे महत्वपूर्ण हस्तांतरणीय कौशल। इसके द्वारा, मेरा मतलब है कि सभी अनावश्यक सामानों को हटाकर महत्वपूर्ण गुणों पर ध्यान केंद्रित करने की क्षमता।

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

  3. फॉर्म बनाम फंक्शन अग्रणी ऊपर से; अगर एक बात कई अलग अलग तरीकों में प्रस्तुत किया जा सकता है तो यह अब कहना है कि एक विशेष प्रस्तुति है उचित है बात। उस गीत फिर से गलत उद्धरण के लिए: "ऐसा नहीं है कि तुम क्या कर रहे हैं यह है कि आप क्या करते " है कि मायने रखती है।

मैं आगे बढ़ सकता था, लेकिन वे हैं जो वसंत को ध्यान में रखते हैं।

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

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

और इसलिए अंत में "गणित प्रोग्रामिंग है"। आप इन सभी चीजों को एक अच्छे प्रोग्रामर होने से सीख सकते हैं। और अगर आपने इन चीजों को सीख लिया है, तो आपको गणित बहुत आसान लगेगा क्योंकि आप समझ जाएंगे कि जब हम एक वेक्टर अंतरिक्ष में वेक्टर के बारे में बात करते हैं तो यह कक्षा का एक उदाहरण है, Vectorजिसका अर्थ है कि हम उन सभी चीजों को कर सकते हैं जो Vectorकरना है वह उदाहरण: जोड़ना, घटाना, पैमाना और आगे। ऐसा इसलिए है कि मैं क्यों प्रोग्रामर के लिए गणित पढ़ाने के लिए प्यार होता। लेकिन, एक गणितज्ञ के रूप में बोलते हुए, मैं कहूंगा कि पहलेइनमें से, "एब्सट्रैक्शन", प्रोग्रामिंग की तुलना में गणित में सीखना आसान है क्योंकि गणित अमूर्तता की खोज है। जब भी हम कुछ व्यवहार देखते हैं तो हमारा प्रशिक्षण हमेशा यह पूछने के लिए होता है कि "उस चीज़ के बारे में ऐसा क्या है जो इसे उस तरह से व्यवहार करता है? क्या होगा अगर मैंने एक और चीज़ ली है जो समान थी, क्या यह उसी तरह से व्यवहार करेगा? उस चीज़ का कितना? क्या मुझे ऐसा व्यवहार करने से रोकने के लिए हारना होगा? " (इसे चरम पर ले जाने से "सेंटीपीड गणित" होता है - शब्द की खोज)। लेकिन हम ऐसा नहीं करते हैं (केवल) "वास्तविक दुनिया" ऑब्जेक्ट्स (जो भी वे हैं), हम ऐसा उन चीजों के साथ करते हैं जो पहले से ही सार हो चुके हैं।

यह काफी लंबे समय से चला आ रहा है, इसलिए मुझे एक क्लासिक गणितज्ञ चुटकुलों के साथ करीब से देखें:

एक गणितज्ञ और एक भौतिक विज्ञानी दोनों 24 आयामी अंतरिक्ष से जुड़े कुछ नए मॉडल पर एक संगोष्ठी में शामिल हुए। बाद में, वे इस पर चर्चा कर रहे थे और भौतिक विज्ञानी ने टिप्पणी की: "यह वास्तव में कठिन था। मेरा मतलब है कि कोई व्यक्ति 24-आयामी स्थान की कल्पना कैसे करता है?" जिस पर गणितज्ञ ने उत्तर दिया: "ओह, यह आसान है। बस n-आयामी अंतरिक्ष की कल्पना करें और फिर n = 24 सेट करें।"


2012-03-2 जोड़ा गया

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

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

मुझे अभी भी लगता है कि मैं कुछ जोड़ सकता हूं। गणित के साथ-साथ गलतफहमी भी है कि "गणित करने" का अर्थ क्या है , इसके बारे में गलतफहमी भी है। मैं दो लगभग विरोधाभासी रुख देखता हूं:

  1. गणित समीकरणों और सूत्रों के बारे में है। इसलिए इसका अध्ययन करने की कोई आवश्यकता नहीं है क्योंकि विकिपीडिया मौजूद है (यह यूलर के एपोक्रिफ़ल चैलेंज से डाइडरॉट के लिए लगभग विपरीत है )।

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

जब भी दो रुख एक दूसरे के विपरीत होते हैं, वे एक ही स्थान पर समाप्त हो जाते हैं: किसी भी गणित को सीखने वाले प्रोग्रामर का कोई मतलब नहीं है - और सबसे निश्चित रूप से एक गणितज्ञ से नहीं! आखिर वे किसी चीज के बारे में क्या जानते हैं? कुछ भी जो एक प्रोग्रामर को वास्तव में जानने की जरूरत है, वह विकिपीडिया में पाया जा सकता है, या किसी और को छोड़ दिया जा सकता है।

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

मैंने ऊपर जो वर्णन किया है वह कार्गो कल्ट गणित है।

इसलिए जब मैं कहता हूं कि आपको गणित को समझने के लिए थोड़ा गणित सीखना चाहिए कि गणित कैसे काम करता है, तो मैं इसे ठीक उसी कारण से कह रहा हूं जैसे कि अगर आप थोड़ा सा कोड देखते हैं जो मैंने लिखा था: "आपका जीवन कितना आसान है यदि आप StackOverflow से कट-एंड-पेस्टिंग कोड को रोक देंगे और यह ठीक से कैसे करना है, इसके बारे में थोड़ा सा सीखा। "

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

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

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


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

  1. चर को समझना। इतने सारे लोग सरल बयानों से भ्रमित हो जाते हैं जैसे "लेट एन नेचुरल नंबर ..."। या "आइपिलसन> 0"। गणित में ऐसी जगहें हैं जहाँ किसी चर के दायरे को याद रखना महत्वपूर्ण है । प्रोग्रामिंग में ये सभी आम हैं। एक कार्यक्रम में एक गणितीय कथन का अनुवाद करना सीखें और आपको यह पता लगाना बहुत आसान होगा कि क्या है।

  2. प्रमाण की प्रकृति। यदि आपने कभी कोई परीक्षण लिखा है, या किसी अन्य व्यक्ति द्वारा उपयोग किए जाने के लिए एक कार्यक्रम लिखा है, तो आप प्रमाणों के मूल को समझते हैं। जब आप ऐसा करते हैं, तो आपको यह जानना होगा कि उपयोगकर्ता जो कुछ भी डालता है, आप उससे निपट सकते हैं (अनिवार्य xkcd संदर्भ यहां डालें)। यह सब एक सबूत है! एक प्रदर्शन है कि जो भी "उपयोगकर्ता / ब्रह्मांड" डालता है, वह वक्तव्य धारण करेगा। प्रायोगिक विशेषज्ञ "यदि यह सामान्य परिस्थितियों में काम करता है, तो यह सही होगा" पर झुक जाएगा, लेकिन प्रोग्रामर जानते हैं कि हमेशा वह बच्चा होता है जो Alt + G + Shift + ÅØÆ की कोशिश करेगा कि क्या होता है।

  3. सूखी। आपको इसे तोड़ने के लिए क्षमा करें, लेकिन हमने आपको नहीं, बल्कि इसका आविष्कार किया। सहस्राब्दियों से हम "खुद को दोहरा नहीं रहे हैं"। इसलिए मेरे पास मेरी अलमारियों पर यूक्लिड के तत्वों की एक प्रति है और यह अभी भी उपयोगी है

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


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


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

दोस्त, उस के लिए +100।
बैरी ब्राउन

2
बस इसे अपग्रेड करने के लिए पंजीकृत किया गया
leo

ठीक ठीक। आप विश्लेषणात्मक विचार के बिना अच्छी तरह से कार्यक्रम नहीं कर सकते हैं कि गणित आपको सिखाता है।
फासको लैब्स

1
प्रोग्रामिंग के गणित पर एक अच्छी किताब है (प्रोग्रामिंग को गणितीय रूप से देखते हुए)?
QED

27

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

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


6
1) प्रत्येक सेलेट्स के साथ कुछ भी गलत नहीं है, 2) एल्गोरिथम सूचना सिद्धांत, औपचारिक भाषा और शब्दार्थ शब्दार्थ सीधे उन सरल चीजों से प्रासंगिक हैं जिन्हें आप किसी कारण से चिंतित हैं (वे प्रोग्रामिंग के लिए इतना महत्व नहीं रखते हैं) सामान्य रूप में)।
SK-तर्क

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

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

4
@ एसके-तर्क: क्या यह संभव है कि आप दो बस अलग-अलग धारणाओं के बारे में बात कर रहे हैं जो वास्तव में एक "सिंगलटन" है? यह मुझे लगता है कि एसके-लॉजिक एक सिस्टम में एक निश्चित इकाई का केवल एक उदाहरण होने के अमूर्त विचार के बारे में बात कर रहा है, जो कभी-कभी ठीक वही होता है, जिसकी आवश्यकता होती है। दुर्भाग्य से इस अमूर्त अवधारणा को सार्वजनिक स्थैतिक कारखाना पद्धति के भयानक रूप से खराब कार्यान्वयन के विवरण के साथ निकटता से जोड़ा गया क्योंकि GoF पुस्तक ने यह दिया कि इस तरह के एक सिंगलटन को कैसे एक्सेस किया जा सकता है।
माइकल बोर्गवर्ड

5
कृपया अधिक टॉपिक चर्चा फिर से न करें
सिंगटन

20

गणित और प्रोग्रामिंग दो तरीकों से संबंधित हैं।

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

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


गणित आपको यह गारंटी देने में मदद नहीं कर सकता है कि आपका कार्यक्रम एक उत्तर देगा। यह हाल्टिंग समस्या का समाधान होगा, जो असंभव है।
डेडएमजी

6
@DeadMG मनमाने कार्यक्रमों के लिए यह असंभव है। किसी दिए गए कार्यक्रम को कुछ उदाहरणों में समाप्त करने या समाप्त करने के लिए बहुत अच्छी तरह से साबित किया जा सकता है।
ल्यूक डैंटन

6
@ डीडीएमजी, यह हाल्टिंग समस्या की एक सामान्य गलतफहमी है। हॉल्टिंग समस्या यह नहीं कहती है कि आप यह साबित नहीं कर सकते हैं कि कोई विशेष कार्यक्रम रुकता है या नहीं, यह कहता है कि कोई एकल एल्गोरिथ्म या सबूत नहीं है जो यह तय करने के लिए सभी कार्यक्रमों पर लागू किया जा सकता है कि वे रुकते हैं या नहीं। उदाहरण के लिए देखें en.wikipedia.org/wiki/Halting_problem और प्रोग्रामर ।stackexchange.com/questions/125882/…
चार्ल्स ई। ग्रांट

आह। मेरी गलती है, तो। बेवकूफ वोट लॉक-इन ... यदि आप अपने पोस्ट को संपादित कर सकते हैं तो मैं इसे अन-डाउन कर सकता हूं?
डेडएमजी

4
@DeadMG, आप इस तथ्य ठेठ प्रोग्रामिंग कार्यों में से अधिकांश एक ट्यूरिंग-पूर्ण भाषा की जरूरत नहीं है के बारे में पता कर रहे हैं सब पर ? और बाकी मामलों के लिए, लगभग हमेशा एक विशेष हॉल्टिंग सबूत होता है।
एसके-तर्क

12

दो विशिष्ट उदाहरण जहां कंप्यूटर विज्ञान के लिए एक गणित शिक्षा महत्वपूर्ण है:

1) रिलेशनल डेटाबेस जहाँ रिलेशनल कैलकुलस का उपयोग किया जाता है।

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

संबंधपरक बीजगणित कुछ नमूना पुस्तक की आपूर्ति करने वाले फोन नंबर और बुक स्टोर के नामों को पुनः प्राप्त करने के लिए इन चरणों का सुझाव दे सकता है:

Join book stores and titles over the BookstoreID.
Restrict the result of that join to tuples for the book Some Sample Book.
Project the result of that restriction over StoreName and StorePhone.

संबंधपरक पथरी एक वर्णनात्मक, घोषणात्मक तरीका तैयार करेगी:

Get StoreName and StorePhone for supplies such that there exists a title BK with the same BookstoreID value and with a BookTitle value of

कुछ सैंपल बुक।

संबंधपरक बीजगणित और संबंधपरक पथरी अनिवार्य रूप से तार्किक रूप से समतुल्य हैं: किसी भी बीजगणितीय अभिव्यक्ति के लिए, पथरी में एक समतुल्य अभिव्यक्ति होती है, और इसके विपरीत। इस परिणाम को कोडड के प्रमेय के रूप में जाना जाता है।

अगला क्षेत्र कृत्रिम बुद्धिमत्ता (एआई) और मशीन लर्निंग है

इसका उपयोग कैसे किया जाता है, इस पर एक उदाहरण के लिए, udacity की कक्षा CS 373 पर एक नज़र डालें: एक रोबोट कार की प्रगति ।

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

आवश्यकताएँ: प्रशिक्षक प्रोग्रामिंग का ठोस ज्ञान ग्रहण करेगा, सभी प्रोग्रामिंग पायथन में होंगे। संभाव्यता और रैखिक बीजगणित का ज्ञान सहायक होगा।

सप्ताह 1:

कण फिल्टर के साथ संभाव्यता कार स्थानीयकरण की मूल बातें

सप्ताह 2:

गॉसियन और निरंतर संभावना कलमन फिल्टर के साथ अन्य कारों को ट्रैक करना

सप्ताह 3:

इमेज प्रोसेसिंग और मशीन लर्निंग सेंसर डेटा में ऑब्जेक्ट खोजना

सप्ताह 4:

नियोजन और खोज यह निर्धारित करना कि ए के साथ ड्राइव करना कहां है * गतिशील प्रोग्रामिंग के साथ इष्टतम मार्गों को खोजना

सप्ताह 5:

नियंत्रण पीआईडी ​​के साथ स्टीयरिंग और गति को नियंत्रित करता है

सप्ताह 6:

यह सब एक साथ रखकर एक सेल्फ ड्राइविंग कार प्रोग्रामिंग

सप्ताह 7:

अंतिम परीक्षा परीक्षा अपने ज्ञान का परीक्षण


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

11

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

गणित व्यवसायी पक्ष से, गणित में विभिन्न विषयों (साथ ही कई अन्य विज्ञान शाखाएं) प्रोग्रामिंग से काफी लाभ उठा सकते हैं।


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

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

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

9

मैं किसी भी चीज़ से ज्यादा सोचता हूं, यह उस विचार प्रक्रिया की समानता है जो दोनों को समान लगती है।

उदाहरण के लिए, दोनों बेहद तार्किक हैं। यदि आप चरणों या समान सूत्र के समान सेट का अनुसरण करते हैं, तो आप हमेशा उसी परिणाम के साथ आएंगे। उदाहरण के लिए, 1+1हमेशा के बराबर होगा 2और set a = 1साधन aहमेशा 1 होगा (जब तक आप इसे किसी और चीज़ पर सेट नहीं करते)

एक और उदाहरण स्थानिक रूप से सोचने की आवश्यकता है। गणित में, मैंने पाया कि मुझे अक्सर अपने सिर में संख्याएँ पकड़नी होती हैं और कल्पना करनी होती है कि मैं क्या कर रहा था। एक बहुत ही सरल उदाहरण के रूप में, मैं गणित की समस्याओं को तोड़ दूंगा ताकि कुछ ऐसा 13x13हो जाए 13x10 + 13x3, जो मेरे दिमाग के साथ काम करने के लिए बहुत आसान है, और मुझे उस पर नज़र रखने की ज़रूरत है 13x10=130 + 13x3=39, ताकि 130+39 = 169। यह कुछ दिखाई नहीं देने की कल्पना करने या छोटी समस्याओं में एक समस्या को तोड़ने की समान क्षमता अक्सर प्रोग्रामिंग पर लागू होती है।

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


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

5

मुझे लगता है, आज तक, आपको पथरी और कुछ त्रिकोणमिति के तत्व सिखाए गए हैं । और आप उस गणित को कहते हैं । यह पैरों की एक जोड़ी को कॉल करने जैसा है "एक इंसान।"

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

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

त्रिकोणमिति बॉक्स में एक पागल जैक है जो तब सामने आता है जब आप कम से कम इसकी उम्मीद करते हैं और फिर सिग्नल विश्लेषण , ऑडियो पीढ़ी और कई अन्य सामान इस पर निर्भर करते हैं।

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


4

प्रोग्रामिंग पारंपरिक शैक्षणिक विषयों का एक बहुत पार करता है।

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


4

यहां मैं आपको व्यावहारिक चीजें बताऊंगा जहां मैंने कुछ कम्प्यूटिंग समस्याओं (विशेषकर इंटरनेट डोमेन में) को हल करने में गणित का सामना किया है:

  1. खोज इंजन डेटा की खोज के लिए वेक्टर पथरी का उपयोग करता है।
  2. मैट्रिक्स फैक्टराइजेशन का इस्तेमाल बहुत सारे सामान जैसे सेंटीमेंट एनालिसिस के लिए किया जा सकता है।
  3. आपको अपने द्वारा लिखे गए कोड की जटिलता का पता लगाने के लिए कैलकुलस, योगों को जानना होगा।
  4. प्रोबेबिलिस्टिक इंफॉर्मेशन रिट्रीवल / सर्च में प्रायिकता का अत्यधिक उपयोग किया जाता है
  5. Naive Bayes Theorem का उपयोग Predictive Analytics में किया जाता है।
  6. आपको एसवीएम नामक एक अवधारणा के लिए हाइपर प्लेन आदि सामानों को जानना होगा जो फिर से मशीन लर्निंग में श्रेणीकरण समस्याओं को हल करने के लिए उपयोग किया जाता है।
  7. आपको नेचुरल लैंग्वेज प्रोसेसिंग सामान करने के लिए एंट्रॉपी को समझने की आवश्यकता है।
  8. खोज इंजन द्वारा प्रयुक्त अव्यक्त शब्दार्थ अनुक्रमण / प्रधान घटक विश्लेषण मैट्रिक्स बीजगणित पर बहुत निर्भर करता है। & जल्द ही......

3

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

इसी तरह, मैं अब एक डेटाबेस-संचालित वेब एप्लिकेशन डेवलपर हूं। यदि आप मेरी तुलना किसी ऐसे व्यक्ति से करते हैं जो एम्बेडेड असेंबलर लैंग्वेज प्रोग्रामिंग करता है, तो आप हमें दो बेहद प्रतिभाशाली पेशेवर समझ सकते हैं, लेकिन हम दोनों "प्रोग्रामर" होते हुए भी बहुत अलग तरह की विशेषज्ञता हासिल करेंगे।

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

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

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

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

संक्षेप में, प्रोग्रामिंग, जैसा कि हम में से अधिकांश इसे जानते हैं, गणित के साथ करने के लिए पूरी तरह से नहीं है, जैसा कि हम में से अधिकांश इसे जानते हैं; लेकिन जब आप इसे एक सार स्तर पर देखते हैं, तो उनमें बहुत कुछ होता है।


मैं विशेष रूप से "जैसा कि हम में से अधिकांश इसे जानते हैं" भाग पसंद करते हैं। यही कठिनाई है कि मैं यहां अधिकांश उत्तर पढ़ने में देखता हूं: "बाएं हाथ" को नहीं पता कि "दाहिने हाथ" क्या कर रहा है।
लूप स्पेस

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

2

गणित एक घन समीकरण का वर्णन (कहता है) करता है।

एक एल्गोरिथ्म बताता है कि उस घन समीकरण को कैसे हल किया जाए।

उस (या किसी भी) एल्गोरिथ्म का निर्माण करना जिसे एक मशीन द्वारा निष्पादित किया जा सकता है, प्रोग्रामिंग है

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

एक अच्छा प्रोग्रामर एक अच्छा गणितज्ञ नहीं हो सकता है (वास्तव में, अक्सर नहीं) और इसके विपरीत। वे अलग पहचान योग्य कौशल हैं।


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

2

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

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

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

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


2

तुरंत दिमाग में आने वाले दो उदाहरण हैं:

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

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


1

प्रोग्रामर के नजरिए से: गणित प्रोग्रामिंग का सबसेट है।

प्रोग्रामिंग में लागू गणित:

जब प्रोग्रामिंग में संग्रह (सरणियाँ, सूचियाँ, नक्शे, आदि) के साथ काम कर रहे हैं, तो आप गणितीय अमूर्त के वास्तविक दुनिया कार्यान्वयन के साथ काम कर रहे हैं।

गणित के बिना प्रोग्रामिंग:

यदि आप करते हैं println("Hello World"), तो यह तथ्य कि स्क्रीन पर स्थिति की गणना करने के लिए कुछ गणित का उपयोग किया जाता है, स्ट्रिंग की लंबाई, आदि, वास्तव में ज्यादातर अप्रासंगिक है।

गणित के लिए प्रोग्रामिंग का उपयोग करना:

प्रोग्रामिंग भाषा में गणित और भौतिकी को लागू करने से कंप्यूटर एडेड डिजाइन जैसी चीजें संभव हो जाती हैं।


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

0

प्रोग्रामिंग आमतौर पर एक मॉडल पर आधारित होता है जो आमतौर पर गणितीय मॉडल होता है।

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

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

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

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


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

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

सीखने की दृष्टि से गणित की पृष्ठभूमि होना अनिवार्य है अन्यथा अन्य कोई सीख नहीं होगी।
नं

सॉल्वर बहुत ज्यादा गणित-डोमेन की समस्या है, जो इस कारण से खड़ी हो जाएगी कि इसमें शामिल गणित की समझ जरूरी है। मैं यह नहीं कह रहा हूं कि प्रोग्रामिंग में कोई गणितीय अवधारणाएं शामिल नहीं हैं , लेकिन जैसा कि @DeadMG ने अपने जवाब में बताया, इस प्रक्रिया के बहुत व्यावहारिक पहलू हैं जहां गणित बिल्कुल मदद नहीं करता है।
ब्लर एफएल

1
@ बिरफ्ले, डेडएमजी, ठीक है, थोड़ा अज्ञानी है (और लगभग हमेशा गलत)। मठ हमेशा उन सभी "नरम" क्षेत्रों में मदद करेगा। मनोविज्ञान गणित पर आधारित है। समाजशास्त्र और भी अधिक गणितीय है। और सिस्टम डिज़ाइन के मामले में, आप शब्दार्थ में बहुत अच्छी पृष्ठभूमि के बिना इसे नहीं छू सकते हैं (जो असतत गणित से है)। प्रोग्रामिंग में ऐसे कोई पहलू नहीं हैं जो गणितीय नहीं हैं। GUI डिजाइन और CRUD कोडिंग शामिल हैं।
एसके-तर्क

0

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

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


0

यह ईमानदारी से निर्भर करता है कि आप किस प्रकार की प्रोग्रामिंग कर रहे हैं।

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

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

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


आपको निश्चित रूप से खेलों के लिए अपने ट्रिगर और वेक्टर गणित को जानना होगा।
एलन बी

पूर्ण रूप से। मैंने यह भी पाया है, हालांकि, खेल लिखना गणित को फिर से सीखने का एक शानदार तरीका हो सकता है जिसे आप हाई स्कूल से भूल गए हैं, जब तक आप एक समय सीमा पर नहीं होते।
kcunning 12

0

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

फिर यह जानने जैसी छोटी चीजें हैं कि आप मापांक ऑपरेटर का उपयोग करके एक पंक्ति में कितने स्तंभों को नियंत्रित कर सकते हैं।

मैं एक अच्छा प्रोग्रामर होने के विचार का दृढ़ता से समर्थन करता हूं जिसके पास एक मित्र (या सहकर्मी / सलाहकार) है जो एक अच्छा गणितज्ञ है।

जाहिर है कि अगर आप दोनों कौशल रखने के लिए धन्य हैं, तो इसके साथ दौड़ें!


0

सरल उत्तर; मठ आपको उपवास करता है । ज़रूर, आप अपनी कोडिंग की समस्याओं को दूर कर सकते हैं / se / wikipedia, लेकिन पर्याप्त गणित कर सकते हैं और आपको इसकी आवश्यकता नहीं होगी । मानो या न मानो, ठीक से प्रशिक्षित मानव मस्तिष्क Google की तुलना में तेज है । इसके अलावा और अधिक गणित आप तेजी से जानते हैं कि आप परिणाम को समझने में सक्षम होंगे google / se / wiki आपको देता है, और कम आपको यह समझने के लिए ड्रिल करने की आवश्यकता होगी कि लोग आपको क्या बताते हैं। अपनी प्रोग्रामिंग समस्याओं को हल करने की प्रक्रिया में आप वैसे भी गणित सीखना समाप्त कर देंगे, लेकिन यदि आप गणित पर ध्यान केंद्रित करते हैं तो यह कहीं अधिक कुशल प्रक्रिया होगी।

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

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

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


0

गणित और 99% प्रोग्रामिंग करने की क्रियाएं बहुत कम होती हैं। एक महान प्रोग्रामर होने के लिए गणित की आवश्यकता नहीं है। मैंने गणित में कई कॉलेज स्तर के पाठ्यक्रम शामिल किए हैं, जिनमें कैलकुलस I, II, III तत्वों के रैखिक बीजगणित और कई अन्य शामिल हैं, लेकिन केवल सीमित नहीं हैं।

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


0

1) जैसा कि आप प्रोग्रामिंग सीखते हैं, आप तकनीकी शब्दजाल (जैसे, एल्गोरिथ्म) में आएंगे। एल्गोरिथ्म का विश्लेषण करने के लिए, किसी को बहुपद, लघुगणक और घातीय कार्यों की प्रकृति के बारे में विचार करना होगा।

2) एक कंप्यूटर विज्ञान अनुप्रयोग के आधार पर, किसी को असतत गणित और निरंतर गणित पर एक विचार रखना होगा ताकि सार्थक समाधान लिखा जा सके। इस तरह के पाठ्यक्रमों के माध्यम से जाकर इस पर अधिक समझ सकते हैं जैसे-

---> कंप्यूटर विज्ञान के लिए गणित

---> कोडिंग द मैट्रिक्स: लीनियर अलजेब्रा कम्प्यूटर साइंस एप्लीकेशन के माध्यम से

एक शुरुआत के लिए, मुझे लगता है कि गतिशील टाइपिंग भाषाएं python/ जैसे schemeप्रोग्रामिंग के लिए पहली सबसे अच्छी भाषा हैं। Static टाइप की गई भाषाएँ जैसे Java/ के C++साथ शुरू करने के लिए सबसे अच्छा नहीं है। "MIT / UOC-बर्कले / स्टैनफोर्ड" से प्रकाशित Opencourseware आपको एक नियमित कॉलेज पाठ्यक्रम से बेहतर मार्गदर्शन कर सकता है। मैं शर्त लगाता हुं!!!


-1

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


-2

बस मेरा अनुभव, और नहीं:
मैं गणितज्ञ नहीं हूं। मैं कोई जीनियस नहीं हूं, सिर्फ एक ऑटोडिडैक्ट हूं।
... और कई वर्षों के बाद, मुझे एहसास हुआ कि मैं अंतर्ज्ञान के साथ काम करता हूं

पहले मैंने स्क्रैच से पिक (मृत प्रणाली) सीखा (अकेले कागज़ के दस्तावेज और नमूने के साथ),
... मस्ती के लिए सी, सी ++ के बाद, और काम के लिए जावा

जैसा कि आपने इसके बारे में बताया, मैं कह सकता हूं कि यह भाषा सीखना कोई गणितीय समस्या नहीं है (भले ही बुनियादी / न्यूनतर बीजगणित आपकी मदद करें), लेकिन एक तार्किक

अब कई उपकरण (जैसे ग्रहण) आपकी सहायता करते हैं और सही करते हैं: आपको केवल 52 आरक्षित शब्दों के साथ, जो आप करना चाहते हैं , उस पर ध्यान केंद्रित करना होगा ... और कई पुस्तकालय जो आपके लिए काम करते हैं।

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

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

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

अन्यथा, एक और तरीका प्रयोग करें।

सादर
क्लाउड


फिर से, नीचे पोस्ट देखें। आप गणित कर रहे हैं, आप इसे स्वीकार नहीं करना चुनते हैं।
जैमेसन

1
मैंने देखा, लेकिन मैंने अन्य पदों को भी -1 ^ n के साथ एक छात्र के लिए गणितीय रुचि के बारे में पहला प्रश्न (जो आधार पता है, विशेषांक नहीं) का जवाब दिया है, जब उन्होंने लैटिन, दर्शन, भाषा में तर्क के बारे में बताया ... वास्तविक जिंदगी। क्या गणितज्ञ ने मन को इतना सीमित कर दिया है कि जीवन को समझने के बिना सभी समीकरण को खारिज कर दिया जाता है, और यह भूल जाते हैं कि न्यूटन एक सेब द्वारा दिए गए अंतर्ज्ञान से शुरू होता है? संभवत: जब यह संभव हो तो अन्य दुनिया के लिए दिमाग खोलना मध्यस्थ के लिए है, यह चर्चा के दोनों पक्षों को समृद्ध करेगा। मेरे लेखन में Notherless मैं लापरवाह हो जाएगा।
cl-r

-2

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

गणित की अन्य शाखाएँ सीधे तौर पर शामिल होती हैं, विशेष रूप से औपचारिक भाषा और ऑटोमेटा सिद्धांत। ये नियमित अभिव्यक्ति का वर्णन करते हैं, पैटर्न मिलान में उपयोग किया जाता है, और औपचारिक व्याकरण, प्रोग्रामिंग भाषाओं का वर्णन और पार्स करने के लिए उपयोग किया जाता है।

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

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

कार्यक्रम सबूत हैं: 19 वीं सदी तर्क और 21 वीं सदी कम्प्यूटिंग

कार्यक्रम प्रूफ हैं: लैम्बडा कैलकुलस में मॉडल और प्रकार

विकिपीडिया का करी-हावर्ड पत्राचार लेख

कंप्यूटर विज्ञान में तर्क की असामान्य प्रभावशीलता पर

तर्क की अनुचित प्रभावकारिता

हां, गणितीय तर्क के "तर्क" भाग पर वे भारी हैं, लेकिन गणित को आमतौर पर कुछ स्वयंसिद्ध माना जाता है, और उनके तर्क परिणाम पहले क्रम तर्क के माध्यम से विकसित होते हैं।

जहाँ तक अन्यथा कहना और पैसे के लिए एक "आईपी" अधिकतमवादी होना:

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


6
-1 विज्ञापन होमिन के लिए अंत में।
चार्ल्स ई। ग्रांट

@charles विज्ञापन किसके खिलाफ है? मूल पोस्टर? मुझे लगता है कि पेटेंट के बारे में बात व्यावहारिक है (भले ही इसे बेहतर ढंग से प्रकाशित किया जा सकता था)।
gcbenison

@gcbenison, "कोई भी जो कहता है कि प्रोग्रामिंग गणित नहीं है ... या इसका एक पूर्ववर्ती मकसद है" एक क्लासिक विज्ञापन होमिनम अटैक है: मुझे आपके तर्क का जवाब नहीं देना है क्योंकि आप एक बुरे व्यक्ति हैं। मुझे यह चिड़चिड़ा लगा क्योंकि मुझे नहीं लगता कि प्रोग्रामिंग गणित है, और मुझे लगता है कि सॉफ्टवेयर पेटेंट एक घृणा है। मेरे पास एप्लाइड मैथ में एमएस है, हालांकि क्या मुझे पता है कि मैं जिस बारे में बात कर रहा हूं वह निश्चित रूप से बहस के लिए खुला है।
चार्ल्स ई। ग्रांट

@ निर्माता: धन्यवाद। मैं उन व्यवहारों को नजरअंदाज करने के लिए उपयोग करता हूं क्योंकि वे स्वयं दूसरों पर थोपे गए दुख हैं। --- ब्रूस एडगर के लिए: संदेह पर हस्ताक्षर करना प्रगति में है।
cl-r

@ cl-r: मैं बहुत विशिष्ट उदाहरणों के बारे में सोच रहा था, जैसे SCO एंटी-लिनक्स अभियान, और प्रकृति. com/news/… अगर हम प्रोग्रामर वकीलों को वकील के लाभ के लिए गणित को परिभाषित करने देते हैं, तो हम सभी सभ्यता का एक महान असंतोष करते हैं ।
ब्रूस एडगर

-2

प्रोग्रामिंग के साथ गणित सब कुछ करना है। उदाहरण के लिए, गेम प्रोग्रामिंग में आपको भौतिकी के लिए मैट का उपयोग करने और कम से कम सब कुछ करने की आवश्यकता है। जावा में खिलाड़ी की x स्थिति को स्थानांतरित करने के लिए आप ऐसा करेंगे int x = x + speed * deltaTimeया int x = x - speed * deltaTimeआप कह सकते हैं कि यह मूल गणित है जिससे आप अधिक उन्नत सामग्री पर जा सकते हैं। रेटिंग शतरंज खिलाड़ियों के लिए एक एल्गोरिथ्म है जिसे एलो एल्गोरिदम कहा जाता है।

यह एलो एल्गोरिथ्म समझाया गया है

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

यह जादू नहीं है यह कड़ी मेहनत और अच्छा गणित है।


-4

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

अधिकांश डेवलपर्स अपने पेशेवर कैरियर के दौरान एक भी समीकरण हल नहीं करेंगे, और बड़े ओ नोटेशन जैसी चीजों को गैर गणितीय तरीके से भी समझा जा सकता है। आप सिर्फ सामान के बारे में सोचते हैं, कल्पना करें कि आपके सिर में बिट्स फ़्लिप हो गए, और वॉयला, आप बता सकते हैं कि सामान किस तरह का बड़ा है, अगर कोई यह बताता है कि लॉग और पावर क्या है।

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

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

मुझे अब गणितीय सामान पता है, ताकि मैं गणित-पृष्ठभूमि प्रोग्रामर के साथ सभी लॉग के अंतर और सामान के साथ बात कर सकूं, लेकिन केवल इस कारण से कि वे बेहोश नहीं होंगे। क्योंकि वह सामान समय के 99.9% बेकार है, और जब यह होता है, तो इसे प्रोग्रामर के दृष्टिकोण से 1000 गुना अधिक प्रभावी ढंग से सीखा जा सकता है।

हेक, प्रोग्रामर को एक प्रोग्रामिंग भाषा + रूपरेखा + सर्वोत्तम प्रथाओं में महारत हासिल करने के लिए कम से कम 5 साल की आवश्यकता होती है। पृथ्वी पर उन्हें सीखना चाहिए कि प्रमेयों को कैसे साबित किया जाए? गणित के छात्र गणित का सामान करते हैं, प्रोग्रामर उस सामान को चलाते हैं, बस यही काम करना चाहिए।


8
एक बच्चा अपनी माँ से कहता है कि उसे गणित की जरूरत नहीं है coz वह बड़ा होने वाला है और एक करोड़पति बेसबॉल खिलाड़ी है। उनकी माँ ने उनसे कहा "आपको अपने लाखों लोगों को गिनने के लिए गणित की आवश्यकता होगी"।
नव

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

2
@ jmort253: गणित का अध्ययन आपको तार्किक रूप से सोचने वाले व्यक्ति में नहीं बनाता है। यह या तो कुछ ऐसा है जो आपके दिमाग में है, या नहीं। मुझे स्कूल से गणित से नफरत है, लेकिन मैं बहुत तार्किक व्यक्ति हूं। प्रोग्रामिंग गणित नहीं है, मैं 10+ वर्षों के लिए सिस्टम प्रोग्रामिंग में हूं, और मैं बता सकता हूं कि 100% आत्मविश्वास के साथ, और जब आप वेब विकास या एसक्यूएल प्रशासन में होते हैं तब भी आप कम गणित की उम्मीद कर सकते हैं। आपका कार्य नए गणितीय सिद्धांतों को विकसित करने के लिए नहीं है, आपका कार्य सबसे कुशल एल्गोरिदम और कंटेनरों का उपयोग करके सीमित संसाधनों में सीमित संसाधनों का उपयोग करके काम करना है।
कोडर

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

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