एक अच्छा प्रोग्रामिंग रूपक क्या है? [बन्द है]


30

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

इसका कारण मुझे इसमें दिलचस्पी है क्योंकि कई लोग दैनिक आधार पर एक प्रोग्रामर के काम का सामना करते हैं, लेकिन अगर आप औसत व्यक्ति से पूछते हैं कि प्रोग्रामर क्या है या क्या करता है, तो वे वास्तव में नहीं जानते हैं। यह गलतफहमी की कुछ स्थितियों की ओर जाता है (उदा। "[...] लेकिन मुझे लगा कि आप कंप्यूटर के साथ अच्छे थे!"

मैं वास्तव में वहां सबसे अच्छा ढूंढना चाहता हूं। मैं आसानी से किसी को समझाना चाहूंगा कि मेरा करियर विकल्प क्या है। बेशक, कम से कम सामान्य विचार।

मेरे पास व्यक्तिगत रूप से एक ठोस नहीं है, लेकिन मैंने इसके बारे में लंबे समय से सोचा है और मैंने आमतौर पर 'भाषा' के रूपक की ओर गुरुत्वाकर्षण किया है, जहां हम एक ऐसी भाषा को जानते हैं, जिसे कंप्यूटर समझते हैं, और इसलिए हम कंप्यूटर को बताने में सक्षम हैं कि क्या करें हमारी समस्याओं को हल करने के लिए उन्हें करें, या "सिखाएं"।

उदाहरण के लिए:

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

खैर, हालांकि उस तरह के रोबोट अभी तक मौजूद नहीं हैं, हमारे समय के प्रोग्रामर उन लोगों की तरह हैं, लेकिन रोबोट के साथ संवाद करने के बजाय, वे कंप्यूटर से संवाद करते हैं। प्रोग्रामर कंप्यूटर को कुछ कार्यों को करने या सॉफ्टवेयर के माध्यम से कुछ समस्याओं को हल करने का तरीका सिखाते हैं जो वे इस "सामान्य भाषा" का उपयोग करके बनाते हैं।

प्रोग्रामर और यह "आम भाषा" वे हैं जो हमें ईमेल, वेबसाइट, वीडियो गेम, वर्ड प्रोसेसर, स्मार्ट फोन ( बस इसे लगाने के लिए ), और कई अन्य चीजें जैसे कि हम दैनिक आधार पर उपयोग करते हैं।

मुझे गद्दी या किसी भी चीज़ पर प्रोग्रामिंग करने का मतलब नहीं है, यह सिर्फ सबसे अच्छा रूपक है जिसके साथ मैं आ सकता था।

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


मुझे लगता है कि प्रोग्रामिंग भाषा सीखना विदेशी भाषा सीखने के लिए कुछ हद तक अनुरूप है। हालाँकि, कंप्यूटर प्रोग्रामिंग का कार्य बात करने / लिखने के सामान्य कार्य से बहुत अलग है। कंप्यूटर प्रोग्रामिंग में कम से कम आवश्यकता होती है: सटीक, नवीनता, एकाग्रता, रचनात्मकता, संगठन, दृढ़ता और कठोर तर्क।
अमी

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

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

जवाबों:


43

यह कहीं से ड्राइव करने के लिए कदम से कदम निर्देश विस्तृत लिखना पसंद है। लेकिन आपको आमतौर पर 'क्या होगा अगर कोई ट्रैफिक जाम है' जैसी चीजों के लिए आकस्मिक योजनाओं को जोड़ना होगा, या 'क्या होगा अगर कोई ट्रक टर्न लेन में टूट जाता है'।

और कभी-कभी आपको और भी अधिक गहराई से गोता लगाना पड़ता है और सड़क के नियमों को समझाना होता है जैसे कि लाल बत्ती पर किस तरफ या क्या करना है। और कभी-कभी आपको यह भी समझाने की आवश्यकता होती है कि स्टीयरिंग व्हील या गैस पेडल कैसे काम करता है।

और आमतौर पर, एक बार जब आप सभी को सटीक विवरण में वर्णित करते हैं, तो ग्राहक कहता है कि "यह सही है, सिवाय इसके कि किसी को होवरक्राफ्ट चलाने के लिए काम करने की आवश्यकता है"


हाहा, मुझे वास्तव में यह पसंद है।
जॉर्ज इज़राइल Peña

14
मेरा होवरक्राफ्ट ईल्स से भरा है!

3
या आप इसे केवल PROLOG कर सकते हैं: यह आप कार में हैं, यह आपकी मंजिल है, यह एक दुर्घटना है, अब मुझे बताएं, क्या आप दुर्घटना के बिना गंतव्य पर पहुँच सकते हैं?
biziclop

नहीं, यह आमतौर पर "परफेक्ट" में बदल जाता है, लेकिन हम वास्तव में एक घर चाहते हैं ... "। अपने सादृश्य से प्यार करें :)
jmq

3
महान सादृश्य। इसके अलावा, कार किसी ऐसे व्यक्ति द्वारा संचालित की जाती है, जो वास्तव में वही करेगा जो आप उन्हें बताते हैं, लेकिन उनके पास निर्णय लेने की सामान्य समझ या क्षमता नहीं है।
बॉब मर्फी

20

मैं बहुत, बहुत गूंगा मशीन के लिए बहुत विस्तृत निर्देश लिखता हूं।


17

मैं रूपक का उपयोग करता हूं "हम बुनाई व्यंजनों को लिखते हैं " जो दादी के अनुकूल है।

दलील:

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

मेरी राय में बहुत अच्छा रूपक।
पॉल नाथन

बुनाई की तरह लग रहा है पूरा हो रहा है :)
bughi

14

बहुत अच्छा सादृश्य नहीं है, लेकिन जब लोग मुझे अपनी मशीन ठीक करने के लिए कहते हैं तो मैं कहता हूं "मैं वह आदमी हूं जो कारों को डिजाइन करता है। मैं मैकेनिक नहीं हूं!"


4
"मैं संगीतकार हूं, रोडी नहीं!"
१०:१० पर एरिकशोफर

@ ईरिक: अधिक काव्य :)
मैथ्यू एम।

1
@ ईरिक - अधिक "मैं संगीतकार हूं, न कि रोडी"।
स्टीव

मैं मूल रूप से इलेक्ट्रॉनिक्स की तर्ज पर कुछ सोच रहा था: "मैं एक सिंथेसाइज़र को मिलाप कर सकता हूं, लेकिन मैं संगीत नहीं बजा सकता", लेकिन यह संभवतः अधिक व्यापक रूप से उपयोगी है: "मैं रसोई बना सकता हूं, इसका मतलब यह नहीं है कि मैं खाना बना सकता हूं । "
n

12

एक बच्चे के रूप में, मैंने प्रोग्रामिंग का वास्तव में अच्छा वर्णन पढ़ा: यह एक रोबोट को यह बताने जैसा है कि एक सामान्य, रोजमर्रा का काम कैसे किया जाए, जैसे स्कूल जाना। तो आप इसे "स्कूल जाओ!" बता सकते हैं, लेकिन यह नहीं जानता कि कैसे। तो आप इसे कहते हैं कि "बाहर जाओ, बाईं ओर चलो, जब तक आप स्कूल नहीं आते, तब तक चलते रहो, बाएं जाओ, अंदर जाओ और बैठो"। लेकिन रास्ते में एक सड़क है! तो आपको यह बताना होगा कि "सड़क पर रुकें, जांचें कि कोई यातायात नहीं है, सड़क पार करें, और बीच-बीच में कहीं" चलते रहें। और दरवाजों का क्या? इसलिए आप "स्कूल का दरवाजा खुला है, तो चेक करें। यदि यह नहीं है, तो इसे खोलें।" वहाँ पर। आखिरकार, आपके पास एक कार्यक्रम है जो आपके रोबोट को बता सकता है कि खुद से कैसे स्कूल जाना है।

यह लोगो के साथ बहुत करीने से काम करता है, जहाँ आप कछुए को जटिल आकार बनाने के लिए वास्तव में निर्देश देते हैं।


10

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

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

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

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

एक स्लॉट मशीन । आप अपने सभी सिक्के डालते हैं और लीवर को खींचते हैं। कभी आप बड़े जीते हैं, कभी आप घंटों बैठते हैं और कुछ नहीं होता। कभी-कभी कोई और बस लापरवाही से चलता है, एक बार लीवर को खींचता है, और जैकपॉट जीतता है।

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


नूगा। आपको नौगट मिलता है।
टिम विस्क्राफ़

6

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

भवन निर्माण

इस रूपक का सबसे आम पहलू यह है कि एक भौतिक वास्तुकार कुछ हद तक एक सॉफ्टवेयर वास्तुकार के अनुरूप होता है। यहाँ कुछ अन्य समानताएँ हैं:

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

बेशक, किसी भी रूपक की तरह, इसकी अपनी सीमाएं हैं। इसके साथ कुछ खामियां:

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

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


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

आप खाका कॉपी कर सकते हैं! आप हमेशा भवन का विस्तार कर सकते हैं, जैसे अपने नए जकूज़ी के लिए अतिरिक्त 25 मी ^ 2 जोड़ना!
ज़ोलोमन

सादृश्य में दोष वास्तव में सामग्री / स्थान का 1x उपयोग और वास्तविक / आभासी प्रकृति नहीं है (प्रत्येक निर्माण अद्वितीय है)। भवन की उपमा में वास्तविक दोष भवन की बात के लिए गतिशील व्यवहार एक बाधा है; एक ऐसी जगह प्रदान करना जिसके भीतर गतिविधि अंतरिक्ष से बाहर हो और गतिविधि बाहर हो। सॉफ़्टवेयर के "मैटर" के लिए गतिशील व्यवहार डेटा को प्रोसेस कर रहा है।
Huperniketes

इस ब्लॉग पोस्ट की शुरुआत में अच्छा चित्रण: orestis.gr/blog/2010/11/06/why-i-bill-hourly मैं अपना खुद का "रूपक" प्रश्न लिखने जा रहा था, लेकिन तब मुझे यह पता चला और जवाब मिल गया सबसे ज्यादा मैं जो दूंगा।
टॉड विलियमसन

6

मुझे क्रिस मैकमोहन की साफ्टवेयर डेवलपमेंट की सादृश्यता संगीत की रचना, विशेष रूप से जैज़ संगीत की तरह है।

यह एला फिट्जगेराल्ड और काउंट बेसी वन ओ'क्लॉक जंप कर रहा है। गीत एक बारह-बार ब्लूज़ है, जो एक यूआई के साथ डेटाबेस ऐप के बराबर जाज है। जिससे मेरा मतलब है: जैसे कि हर प्रोग्रामर ने एक यूआई के साथ एक डेटाबेस ऐप बनाया है, हर अमेरिकी संगीतकार ने बारह-बार ब्लूज़ बजाए हैं। यह एक ढांचा है जिस पर काउंट बेसी से लेकर जिमी हेंड्रिक्स तक कई सारे गाने लटकाए गए हैं।

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

यहाँ उस ब्लॉग पोस्ट का लिंक दिया गया है जिसमें वह इसकी चर्चा करता है: http://chrismcmahonsblog.blogspot.com/2007/05/example-of-analogy-monks-vs-music.html


1
बस एक संगीत रूपक पोस्ट करने के बारे में था (मेरे पास रचना में स्नातकोत्तर की डिग्री है), लेकिन क्रिस की कहानी इसे बेहतर तरीके से कवर कर सकती है
एलन

5

कभी-कभी मैं बुद्धिहीन लाश को नियंत्रित करने के लिए प्रोग्रामिंग का उल्लेख करता हूं । इसके बारे में मेरे ब्लॉग पोस्ट को सारांशित करना:

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

मुझे चिंता है कि उन छोटे एलईडी के साथ सोने जा रहा हूँ ...
Xeoncross

5

प्रोग्रामिंग लेगो के साथ चीजों के निर्माण की तरह है :

  • आप बड़ी चीजों को बनाने के लिए बहुत सारे छोटे बिट्स को एक साथ चिपका रहे हैं
  • छोटे टुकड़े सीमित आकार और आकार में आते हैं
  • छोटी चीजें केवल कुछ तरीकों से एक साथ फिट हो सकती हैं
  • इस सामान के साथ खेलने में बहुत मज़ा आ सकता है

5

कंप्यूटर प्रोग्रामिंग करना एक बच्चे की तरह है ...

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

मुख्य अंतर यह है कि अगर कोई हमारे स्रोत कोड को चुराता है तो हम परेशान हो जाते हैं, लेकिन हमें अक्सर खुशी होती है कि कोई हमारे बच्चों को हमारे हाथों से ले जाए।


4

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

स्वचालित उत्पादन लाइन

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

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


3

एक तेज बेवकूफ को गणित वर्ग में मदद करने के लिए एक लिखित निबंध की आवश्यकता होती है।


2

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



1

सीएस / प्रोग्रामिंग कक्षाओं में नए छात्र व्यावहारिक रूप से गैर-प्रोग्रामिंग उपयोगकर्ताओं की तरह हैं। रोबोट का उदाहरण अच्छा है।

वापस, 80 के दशक में, लोगो, कारेल, (या इसी तरह की प्रोग्रामिंग एनविरोमेंट्स) का उपयोग करके, जहां उपयोगकर्ता प्रोग्राम करना सीखता है, कंप्यूटर को एक रोबोट की तरह देखता है, इसके बजाय, एक टाइपराइटर के साथ टीवी सेट की बहुत मदद की। वे उपकरण जहां आमतौर पर जूनियर हाई स्कूल और हाई स्कूल में उपयोग किया जाता है।

उस व्यावहारिक प्रोग्रामिंग ने छात्रों को समस्या सुलझाने के कौशल को अपनाने में मदद की, भले ही वे कंप्यूटर से संबंधित क्यों न हों !!!

या, भले ही छात्र प्रोग्रामर नहीं बने।

कुछ कॉलेज और विश्वविद्यालयों ने प्रथम वर्ष के पाठ्यक्रमों में उन उपकरणों को भी लागू किया।

मुझे आश्चर्य है कि कई हाई स्कूल लोगो और कारेल को पढ़ाना क्यों छोड़ते हैं ...


1

मुझे फ्रेड ब्रूक्स सादृश्य पसंद है, पौराणिक मानव-माह से, वह प्रोग्रामिंग जादू करने जैसा है।

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

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


1

"[...] लेकिन मुझे लगा कि आप कंप्यूटर के साथ अच्छे थे!"

यह आमतौर पर एक कंप्यूटर को ठीक करने में एक geek चाल के लिए एक प्रयास है (आपको लगता है कि उन्हें गलत साबित करने के लिए आग्रह करता हूं?)। मेरा मानक जवाब:
मैं एक प्रोग्रामर हूं। वह एक ऑटोमोबाइल इंजीनियर की तरह है - वह शायद नहीं जानता होगा कि आप '72 ट्रैबैंट 'के ब्रेक को कैसे ठीक करें, और निश्चित रूप से वह ऐसा नहीं करेगा यदि वह जानता था। एक मैकेनिक ऐसा करेगा!



0

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

प्रोग्रामर एक घर के निर्माताओं की तरह होते हैं। हम आपको हमारे द्वारा बनाए गए घरों के बारे में सब कुछ बता सकते हैं। फिर भी, अगर आप हमसे पूछते हैं कि हम एक यादृच्छिक घर से गुजरते हैं जो हम सड़क पर गुजरते हैं, तो संभावना है कि हम शायद इसके बारे में ज्यादा नहीं जानते होंगे। लेकिन अगर आपको उस घर पर कुछ जोड़ने या बदलने की आवश्यकता है, तो हम इसे कर सकते हैं बशर्ते कि मालिक हमें देता है।


0

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


0

मैं आम तौर पर प्रोग्रामिंग को एक पहेली के बराबर करता हूं।

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

पहले से मौजूद प्रोजेक्ट को संशोधित करने के लिए - एक बिल्ली ने आकर समाप्त पहेली का एक हिस्सा बंद कर दिया। इसमें कुछ समय लगेगा, लेकिन फ्रेमवर्क पहले से ही मौजूद है, इसलिए यह बहुत खराब नहीं होना चाहिए (यह इस पर निर्भर करता है कि कितनी जरूरतों को बदलना है)।

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


-1

यह दुखद है लेकिन, प्रोग्रामिंग एक ऐसा काम है जिसे केवल करना सीखकर किया जा सकता है।

प्रोग्रामिंग में धारणा के कई अलग-अलग स्तर हैं और विभिन्न पक्षों से अलग हैं।

निम्न स्तर पर यह "बहुत, बहुत गूंगा मशीन के लिए बहुत विस्तृत निर्देश लिखें"

अगले स्तर पर यह जटिलता से निपट रहा है। काम को आसान बनाने के लिए नए रूपक का निर्माण। उच्च गणित की तरह।

विभिन्न पक्षों से इसके सहायक तकनीकों जैसे कि संस्करण नियंत्रण, स्व-प्रलेखित कोड, परियोजना निर्माण और परीक्षण का उपयोग।

दूसरी तरफ से इसकी इमारत "उपयोगकर्ता" इंटरफ़ेस (शाब्दिक रूप से, मेरा मतलब एपीआई भी यूआई है), संभावित त्रुटियों की भविष्यवाणी करता है (उपयोगकर्ता, डेटा या स्वयं भी) और त्रुटियों पर सही प्रतिक्रिया करता है।

और अंत में।

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

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