एक प्रोग्रामर के रूप में, क्या मुझे निम्न और उच्च-स्तरीय प्रोग्रामिंग भाषाओं को जानना चाहिए? [बन्द है]


18

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

"यदि आप अपने आप को एक प्रोग्रामर कहते हैं तो आपको इन सभी चीजों को जानना चाहिए"

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


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

1
@ डायलेन: जब उच्च स्तर पर काम करते हैं, तो निश्चित रूप से निचले स्तर के विवरण को मुखौटा करना आवश्यक होता है। हालांकि, मुझे लगता है कि प्रत्येक प्रोग्रामर को यह पता होना चाहिए कि वे किस तरह से मशीनों को निचले स्तर पर काम कर रहे हैं। ज्ञान को बहुत विस्तृत करने की आवश्यकता नहीं है - बस यह जानना कि खरोंच से एक बुनियादी कंप्यूटर का निर्माण कैसे करना पर्याप्त है।
शेड्यूलर

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

3
का एक और मामला, "व्हीव, हैप्पी आई मिस दैट बुलेट!" आप वास्तव में या ऐसे स्नोब के साथ काम नहीं करना चाहते हैं?
एडवर्ड स्ट्रेंज

2
@Schedler - और यदि वे अपने स्वयं के बोर्डों को नहीं जला रहे हैं, तो वे कुल मिलाकर नए हैं।
एडवर्ड स्ट्रेंज

जवाबों:


37

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

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

मैं किसी ऐसे व्यक्ति के लिए काम नहीं करूंगा जिसके पास आपका संपर्क है।


4
+1: टिप्पणी का कोई मतलब नहीं है।
S.Lott

हालाँकि मैं शर्त लगा सकता हूँ कि बहुत सारे असेंबली-केवल देव हैं जो उन्हें घंटे के हिसाब से चार्ज करने में प्रसन्न होंगे।
एरिक रेपेन

22

"यदि आप अपने आप को एक प्रोग्रामर कहते हैं तो आपको इन सभी चीजों को जानना चाहिए"

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

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


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

4
आपकी बात याद आ रही है। हां उच्च स्तर के प्रोग्रामर को निम्न-स्तर के पहलुओं की समझ होनी चाहिए, लेकिन क्या उसे पता होना चाहिए कि लिंक्स राउटर के लिए फर्मवेयर अपग्रेड कैसे लिखें?
maple_shaft

7
मुझे लगता है कि उन्हें पता होना चाहिए कि कैसे पता करें, हालांकि। आधुनिक प्रोग्रामिंग का एक बड़ा हिस्सा यह जानना है कि क्या याद रखना चाहिए और संदर्भ के रूप में क्या दर्ज करना है।
माइकल के

8

एक ऐसे व्यक्ति की तरह बोला जाता है जिसने अपने जीवन में कभी भी एक पंक्ति नहीं लिखी। यह वही व्यक्ति होगा जो महसूस करेगा कि आपको बोली लगाने के आधे समय में इसे करने में सक्षम होना चाहिए। एक बेवकूफ के साथ बहस मत करो।

आपने अपनी सीमाओं को जानकर बहुत अधिक ज्ञान और चरित्र दिखाया। यह व्यक्ति उन चीजों के बारे में बात करता है जिन्हें वह जानता है।

मुझे लगता है कि हर बढ़ई को पता होना चाहिए कि फर्नीचर का एक अलंकृत टुकड़ा कैसे उकेरा जाए। अगर एक पायलट एक विमान उड़ा सकता है, तो वह उन सभी को उड़ा सकता है।


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

6

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

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

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

मुझे गंभीरता से उस परियोजना को नहीं लेने पर विचार करना होगा यदि ग्राहक पहले से ही आपसे इस तरह से बात कर रहा है - आप कभी नहीं जानते कि वह कहां जा सकता है।


6

मैं वास्तव में इसे घृणा करता हूं जब लोग कहते हैं "आपको अपने आप को प्रोग्रामर कहने के लिए एक्स को जानने की आवश्यकता है।" वास्तव में? वैसे कुछ लोग पूरे दिन COBOL और LOVE IT पर काम करते हैं। वे इसे और उनके समस्या डोमेन पर इतना अच्छा हो सकता है कि उनके बगल में हम सभी ढोंग कर रहे हैं।

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


3

मेरा सुझाव है कि आप इसे पढ़ें:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

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

तो निश्चित रूप से, अब आपको इन सामानों के बारे में पता होना चाहिए। विशेष रूप से asm या CPU आर्किटेक्चर का विशेषज्ञ नहीं होना। लेकिन जब आपको अधिक जानने की आवश्यकता होती है, तो अपने आप को दस्तावेज़ करने के लिए पर्याप्त जानना, वास्तव में, होना चाहिए।


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

यह बात है: आपको विशेषज्ञ होने की आवश्यकता नहीं है। लेकिन आपको मूल बातें जानने की जरूरत है। तो आपको पता चल जाएगा कि आपके द्वारा उपयोग की जा रही अमूर्तता की सीमाएं क्या हैं - यह न्यूनतम है, और पता है कि सीमा तक पहुंचने पर अपने आप को कैसे दस्तावेज़ करना है।
deadalnix

2

उनका तर्क नो ट्रू स्कॉट्समैन तार्किक पतन का एक अच्छा उदाहरण है।

हालाँकि, निम्न और उच्च स्तरीय प्रोग्रामिंग के बीच का अंतर भाषा नहीं है, यह अनुप्रयोग ज्ञान डोमेन है। मान को सही पर असाइन करने का मतलब एक विजेट पर एलईडी या सक्षम माउस क्लिक घटनाओं को चालू करना हो सकता है। भाषा की परवाह नहीं है।

उदाहरण के लिए, एक arduino पर एक एलईडी मैट्रिक्स के साथ काम करने के लिए इस पुस्तकालय पर एक नज़र डालें । यह यहाँ रॉकेट साइंस नहीं है, और वास्तव में कोई भी प्रोग्रामर इसे थोड़े प्रयास से समझ पाएगा, यदि उन्होंने "लो-लेवल ओह नो!" मानसिक ब्लॉक।


1

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

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

शायद वह व्यक्ति जिसने आपको बताया कि "वाक्यांश" निराश है, शायद आप एकमात्र ऐसे संपर्क व्यक्ति नहीं थे जिससे उसने बात की है।

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

चियर्स,

wardy


1

सैद्धांतिक ज्ञान होना अच्छा है। करने में सक्षम होने के नाते में जानने के निम्न स्तर के भाषा जब आवश्यक है बहुत महत्वपूर्ण है।

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


-2

मैं फिर से वाक्यांश दूँगा

"यदि आप अपने आप को एक प्रोग्रामर कहते हैं तो आपको इन सभी चीजों को जानना चाहिए"

सेवा

"यदि आप अपने आप को एक प्रोग्रामर कहते हैं तो आपको पर्याप्त पता होना चाहिए कि आप इन सभी चीजों को जल्दी से सीख सकते हैं"

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