क्या उच्चतर और उच्चतर प्रोग्रामिंग भाषाओं के उपयोग से कंप्यूटर आर्किटेक्चर ज्ञान वाले प्रोग्रामर की कमी हो सकती है?


15

"उच्च स्तरीय प्रोग्रामिंग भाषा" लेख के विकिपीडिया से उद्धरण:

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

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

अब मुझे स्तरों पर भाषा के उपयोगों के आँकड़े नहीं पता हैं, लेकिन मुझे संदेह होगा कि उच्च स्तर की भाषाएँ अधिक से अधिक निम्न भाषाओं की जगह ले रही हैं। यदि हां, तो क्या इससे कंप्यूटर आर्किटेक्चर ज्ञान के साथ प्रोग्रामर की कमी हो सकती है? क्या यह उद्योग के लिए एक समस्या होगी?

जवाबों:


16

यह कर सकते हैं , लेकिन संभावना नहीं एक समस्या को बढ़ावा मिलेगा।

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

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


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

5
@dsimcha, सहमत हैं, लेकिन जाने के लिए लड़का होने के लिए आपको आने-जाने के लिए "दूसरों" की आवश्यकता है; ;-) अगर हर किसी को सब कुछ जानने की जरूरत है, तो अमूर्त बुरी तरह से विफल हो गया है।
Preets

1
@Preets, और यही वजह है कई कपोल-कल्पना है बुरी तरह विफल रहा है। यहां तक ​​कि एक गो-टू के लिए मौजूद रहने के लिए कमरा भी इस बात का सबूत है कि अमूर्तता पहले ही विफल हो चुकी है।
पचेरियर

@ रेयान, यह वास्तव में एक ऐसी समस्या का कारण बनेगा जहां भविष्य में दुनिया भर में लीक हुए अमूर्त की परतों के कारण सूक्ष्म कीड़ों से भरे ऐप्स से बाढ़ आ गई है। अब यह आश्चर्यजनक है कि अनंत संसाधनों वाली Google जैसी कंपनियां अभी भी अपने मुख्य ऐप में बग रख सकती हैं।
पचेरियर

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

9

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

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

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

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


5
मैंने सुना है कि "आपको अमूर्त एक परत को जानने की ज़रूरत है जहाँ आप काम करते हैं"। खैर, यह बल्कि पिथियर था; मेरी याददाश्त का दोष। इसलिए यदि आप C या डेल्फी में काम कर रहे हैं, तो आपको पता होना चाहिए कि असेंबली कैसे काम करती है। यदि आप स्मॉलटाक या जावा में काम कर रहे हैं, तो आपको पता होना चाहिए कि आपका वीएम कैसे काम करता है। (तर्क से, आपको हमेशा विधानसभा के बारे में कुछ पता होना चाहिए !) यदि आप टीसीपी के साथ काम कर रहे हैं, तो आपको पता होना चाहिए कि आईपी कैसे काम करता है। और इसी तरह।
फ्रैंक शीयर

1
मेरा मतलब है, आप इसे और भी आगे ले जा सकते हैं: यह केवल विधानसभा को जानने के लिए पर्याप्त क्यों होना चाहिए? यह बाइनरी सीपीयू निर्देशों पर केवल एक हाथ से पकड़े उच्च-स्तरीय अमूर्तता है। लेकिन रुकें! मशीन कोड? यह सिर्फ एक अमूर्त है! आपको यह जानने की जरूरत है कि तर्क द्वार बनाने के लिए ट्रांजिस्टर का उपयोग करके सीपीयू का निर्माण कैसे किया जाता है! और बस और रजिस्टर। लेकिन रुकें! ट्रांजिस्टर? यह परमाणुओं के एक निश्चित विन्यास के लिए सिर्फ एक अमूर्तता है। और परमाणु क्वांटम क्षेत्रों में उतार-चढ़ाव पर सिर्फ एक अमूर्त हैं। अंत में, यह सिर्फ javascript:alert("Hello world")स्ट्रिंग सिद्धांत में पीएचडी की आवश्यकता है।
सारा

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

1
जब तक आप जो एक पेशेवर हैं: मेरी बात @DrewJordan सिर्फ इतना है कि है की जरूरत के बारे में पता है और मुद्दों की एक निश्चित वर्ग ठीक करने के लिए (या बस एक गहरी निजी दिलचस्पी नहीं है), तो यह काफी स्पष्ट रूप से दावा करने के लिए बेतुका है कि आप है की जरूरत अंदरूनी कामकाज पता करने के लिए और आपके द्वारा उपयोग किए जा रहे प्रत्येक टूल की अजीब सूक्ष्मताएँ। मैंने केवल दृष्टिकोण को तार्किक निष्कर्ष पर आकर्षित किया। यकीन है, यह जानते हुए कि एक ईथरनेट केबल कैसे बनाया जाता है, आपको एक नया निर्माण करने की अनुमति देगा, सही उपकरण दिए जाने पर जब आपका इंटरनेट कनेक्शन विफल हो जाता है, लेकिन जब आप 20 परतें ऊपर काम करते हैं तो ज्ञान प्राप्त करने पर समय और पैसा खर्च करना बस बेकार है।
सारा

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

5

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


2
सिद्धांत रूप में, हाँ, लेकिन वे बहुत बड़े ifs के एक जोड़े हैं ।
मेसन व्हीलर 16

1

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

वास्तव में, क्या डोमेन को वास्तव में कंप्यूटर की वास्तुकला के ज्ञान की आवश्यकता है? यह एक विशेष हार्डवेयर वास्तुकला से बंधा होने की आवश्यकता है? ऑपरेटिंग सिस्टम? डिवाइस ड्राइवर? ज़रूर, लेकिन फिर भी ऐसे कोड के कुछ हिस्सों को विशिष्ट वास्तु ज्ञान की आवश्यकता होती है।

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

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

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