सिस्टम प्रोग्रामर के लिए कैलकुलस और रैखिक बीजगणित कैसे उपयोगी हो सकते हैं? [बन्द है]


10

मुझे यह कहते हुए एक वेबसाइट मिली कि सिस्टम प्रोग्रामिंग के लिए कैलकुलस और लीनियर बीजगणित आवश्यक है।

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

इस साइट पर जानकारी थी: http://www.wikihow.com/Become-a-Programmer

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


6
यह इतना सीधा आवेदन नहीं है जितना कि आपकी विचार प्रक्रिया को बदलना।
SomeKittens

3
मैं प्रणाली प्रोग्रामिंग का एक बहुत कुछ कर नहीं है (ठीक - मैं किसी भी नहीं करते), लेकिन मुझे लगता है कि आप प्रदर्शन परीक्षण की एक श्रृंखला चला रहे हैं और आप परिणामों, पथरी और रेखीय बीजगणित पर सांख्यिकीय विश्लेषण करना चाहता हूँ सकता है आओ, खेल में शामिल हो। एल्गोरिदम की जटिलता विश्लेषण करते समय उनकी आवश्यकता भी हो सकती है।
FrustratedWithFormsDesigner

2
@ टेलस्टाइन: वाक़ई? यह तो दिलचस्प है। वह कैसे काम करता है?
FrustratedWithFormsDesigner

2
आप वेब साइट के लिए एक लिंक प्रदान कर सकते हैं? यह कुछ संदर्भ जोड़ सकता है जो आपको अधिक विशिष्ट उत्तर प्राप्त करने में मदद करेंगे।
कालेब

2
@FrustratedWithFormsDesigner - सादृश्य एक मान से सूचक की ओर व्युत्पत्ति की तरह है। आप एक फ़ंक्शन के साथ शुरू करते हैं और इसे एक नया फ़ंक्शन प्राप्त करने के लिए प्राप्त करते हैं जिसका अर्थ कुछ और होता है (एक ऐसा उदाहरण जो एक संख्या के बजाय एक मेमोरी पते को संदर्भित करता है)। तुम भी दूसरी व्युत्पन्न (एक सूचक के लिए एक सूचक) प्राप्त कर सकते हैं कि थोड़े ही मतलब है, लेकिन अलग है। फिर उसे पूर्ववत करने के लिए, आपको एकीकृत करने की आवश्यकता है (पॉइंटर को पॉइंटर करें), जिसमें कुछ कैविएट (एक फ़ंक्शन बनाम ऑब्जेक्ट स्लाइसिंग प्राप्त करते समय खो जाने वाला स्थिरांक) है। उम्मीद है कि समझ में आता है, यह उम्र हो गया है ...
Telastyn

जवाबों:


6

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

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

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

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


यहां तक ​​कि सिर्फ डायरेक्टेक्स या ओपेंगल प्रोग्रामिंग करने के लिए कुछ रैखिक बीजगणित समझ की आवश्यकता होगी।
रिग

@ रीग: जानें के रूप में तुम जाओ, कि मैं यह कैसे किया है। गणित की ओर से सीखना, IMHO, बास-एकेक है।
कोडर

8

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

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

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


2
अगर मैं इसे एक से अधिक बार बढ़ा सकता हूं।
मि। मिंडोर

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

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

6

मैं आगे जाऊंगा और कहूंगा कि मुझे नहीं लगता कि सिस्टम प्रोग्रामिंग के लिए पथरी या रैखिक बीजगणित महत्वपूर्ण है।

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


कभी एक GPU देखा? :) यह थोड़ा गणितीय, esp है। इसके लिए ड्राइवर लिखने के लिए ... लेकिन यह सच है: यदि आप फंस गए हैं, तो आप हमेशा math.stackexchange.com :) का उपयोग कर सकते हैं)
Aadaam

मैं एक कंप्यूटर ग्राफिक्स आदमी भी हूँ; मैं उस टिप्पणी से मिलता जुलता हूं! और आप सही हैं: जो कोई भी ग्राफिक्स कार्ड ड्राइवर लिखना चाहता है उसे कंप्यूटर ग्राफिक्स (और लीनियर बीजगणित और मूल कैलकुलस की आवश्यकता होती है) के साथ-साथ सिस्टम प्रोग्रामिंग को समझना होगा।
comingstorm

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

4

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


असतत अनुकूलन के लिए and, दिलचस्प और संबंधित लगता है।
हाय-एंजेल

1

सिस्टम प्रोग्रामिंग की आपकी परिभाषा विकिपीडिया में उत्तर के साथ बहुत अच्छी तरह से संरेखित होती है।

यदि आप सोचते हैं कि यह क्या प्रदान कर रहा है - यानी। एक सॉफ्टवेयर इंटरफ़ेस हार्डवेयर में, तो यह समझ में आने लगता है कि कैलकुलस और लीनियर अलजेब्रा के पास कितना हुनर ​​है।

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

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


क्या सिस्टम प्रोग्रामिंग की परिभाषा सही या गलत है?
विक्टर

2
यह बहुत सटीक नहीं है। सीपीयू के साथ इंटरफैसिंग के लिए केवल दिए गए निर्देशों का ज्ञान आवश्यक है।
डेडएमजी जूल

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

1

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


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

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

0

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

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


0

सिस्टम प्रोग्रामिंग, जहां तक ​​मुझे पता है, ऑसदेव, ड्राइवरों, उपयोगिताओं और इतने पर है। मैं अभी यह पता नहीं लगा सकता कि कैलकुलस और लीनियर बीजगणित उस पर किस प्रकार सहायक हो सकते हैं।

पथरी के साथ यह बहुत आसान है, जैसे ही कोई पाठ्यक्रम सामग्री पर करीब से नज़र डालता है । यह एल्गोरिथ्म जटिलता, बिग-ओ अंकन - सामान की तरह बारीकी से संबंधित है, प्रोग्रामिंग में काफी मौलिक है।

एल्गोरिथ्म की जटिलता का आकलन करते समय समीकरण आपको मिलते हैं। से तीन-स्तर नेस्टेड छोरों 0को Nएन हैं 3 दो स्तर नेस्ट छोरों एन कर रहे हैं, 2 , एक एन मूल्यांकन आप दिखाई दे सकता है मिलता है (एन 3 + 2 * एन 2 + N) - यह है कि एक समीकरण।

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

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

के रूप में रेखीय बीजगणित , यहाँ बहुत पहली तस्वीर से आप पर अनुप्रयोगों शूट प्रोग्रामिंग।

http://pad1.whstatic.com/images/thumb/c/c4/LaTeX-2m.jpg/251px-LaTeX-2m.jpg

यदि आपको कभी भी रेखापुंज ग्राफिक्स (जैसे वीडियो ड्राइवरों में) से निपटना होगा, तो ऊपर की तस्वीरें आपके बुरे सपने में आपके पास आ रही होंगी।

  • कैसे आया कि परीक्षण # 12345 लापता पिक्सेल दिखाता है? क्या मैंने ब्रेसेनहैम को लागू करने में कुछ गलत किया है ? यह परीक्षण डिजाइन में सिर्फ एक गलती हो सकती है ठीक से गोलाई त्रुटियों के लिए लेखांकन नहीं है?

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

2
@ कोडर, निश्चित रूप से कुछ कंप्यूटर विज्ञान के छात्रों को पहले स्थान पर कंटेनरों और एल्गोरिदम को डिजाइन करना है। उनके लिए गणित और प्रोफाइलर पूरक उपकरण हैं: गणित एक कार्यशील कार्यान्वयन नहीं देगा, और प्रोफाइलर आपको चेतावनी नहीं देगा कि आपका परीक्षण डेटा सिर्फ एक अस्थायी है।
चार्ल्स ई। ग्रांट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.