प्रोग्रामिंग: कंप्यूटर का मनोविज्ञान

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

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

विवरण में जाने से पहले मैं सबसे सरल बिंदु पर बात करूंगा।

मैं तकनीकी पोस्ट क्यों नहीं करने जा रहा हूँ?

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

बिजली महत्वपूर्ण है

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

समस्या

हार्डवेयर प्रोग्रामिंग बदलना महंगा और जटिल है 🙂 (कम से कम उन्होंने मुझे यही बताया 🙂 ). यही कारण है कि प्रोसेसर का उदय हुआ, जो वास्तव में हार्डवेयर की उस परत को अमूर्त करके हमें कुछ कमांड देता है ताकि वह सब कुछ करने में सक्षम हो सके जो हार्डवेयर के साथ संभव था, केवल अब की परत में सॉफ्टवेयर.

प्रोसेसर

आज के प्रोसेसर में सीमित संख्या में फ़ंक्शन होते हैं, जिन्हें कहा जाता है अनुदेश कई किताबों में. ये सबसे बुनियादी कार्यों की अनुमति देते हैं जिन्हें हार्डवेयर निष्पादित कर सकता है, और उपकरण की मेमोरी के माध्यम से जानकारी जुटा सकता है।

रजिस्टर

रजिस्टर एक ऐसा स्थान है जिसमें प्रोसेसर कर्नेल में काम करने में सक्षम होने के लिए जानकारी संग्रहीत करता है, वास्तुकला के आधार पर उनका एक अलग आकार और क्रम हो सकता है, लेकिन सरल तरीके से, उनका कार्य डेटा को संग्रहीत करना है जो इंगित करता है प्रोसेसर निम्नलिखित प्रकार के कार्यों में से एक है: डेटा, अंकगणित और तर्क को स्थानांतरित करें, और नियंत्रण करें प्रवाह। इस प्रकार की कार्यक्षमताओं में हर चीज़ को संक्षेप में प्रस्तुत किया जा सकता है।

Binario

प्रोसेसर बाइनरी लेवल पर काम करते हैं, इसका मतलब है कि वे केवल समझते हैं 0एसवाई 1एस 🙂 . यहाँ एक जिज्ञासु तथ्य है 😀क्या आपको GNU/Linux अनुमतियाँ याद हैं? कुंआ, क्या आपने कभी सोचा है कि प्रोसेसर वास्तव में उन अनुमतियों को कैसे पहचानता है?? सरल 🙂 बाइनरी। निम्नतम स्तर पर, एक प्रोसेसर अनुमतियों को 0s और 1s के अनुक्रम के रूप में समझेगा, यही कारण है कि हम जो ऑक्टल बनाते हैं उसमें मान होते हैं निष्पादन के लिए, 2 पढ़ने के लिए और 4 लिखने के लिए. जो लोग बाइनरी पढ़ना जानते हैं, उनके लिए आप यह समझेंगे:

111100101111

समूह के लिए पढ़ने, लिखने और निष्पादित करने की अनुमतियाँ सेट करें दूसरों ग्रुप के लिए एक्ज़ीक्यूट और रीड डालते समय समूह और फ़ाइल के स्वामी के लिए केवल पढ़ने योग्य। सबसे जिज्ञासु लोगों के लिए, अंतिम तीन 1 सक्रिय करते हैं setguid, setuid और sticky bit. यदि आप नहीं जानते कि यह बाइनरी क्या है, तो मैं इसे किसी अन्य पोस्ट में समझा सकता हूं, यदि आप सेतुइड, सेटगिड और स्टिकी बिट के बारे में नहीं जानते हैं, तो मैं इसे होमवर्क के लिए आप पर छोड़ दूंगा 😉 लेकिन मैं समझा भी सकता हूं यदि आवश्यक हो तो इसे अन्यत्र।

जब जिज्ञासा बुलाती है...

ठीक है, यदि आपने यहां मेरा अनुसरण किया है, तो आपकी जिज्ञासा आपसे बहुत सारे प्रश्न पूछना शुरू कर देगी, सबसे पहले जिसका मैं उत्तर देना चाहता हूं (और शायद एकमात्र उत्तर जो यह पोस्ट मुझे करने की अनुमति देता है क्योंकि मैं पहले से ही बहुत कुछ लिख रहा हूं) : यदि कॉलें समान हैं, तो प्रोग्राम इतने भिन्न क्यों हैं?

मनोविज्ञान

प्रोग्रामिंग मन को पढ़ना सीखने की कला है 🙂 मैं इस अनुभाग को एक उद्धरण के साथ शुरू करना चाहता हूं जो मैंने बहुत पहले पढ़ा था, एड्सगर डिज्क्स्ट्रा ने कहा:

यदि डिबगिंग बग्स को हटाने की प्रक्रिया है, तो प्रोग्रामिंग उन्हें पेश करने की प्रक्रिया होनी चाहिए।

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

कंप्यूटर गलतियाँ नहीं करते

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

सी एक कठिन भाषा है, आप इसके साथ बहुत कुछ कर सकते हैं, लेकिन यदि आप चाहें तो यह आपको अपने पैरों पर कुल्हाड़ी मारने से कभी नहीं रोक पाएगी, या आप इसे बता दें।

यह एक विचित्र सत्य है 🙂 चूंकि इतने निम्न स्तर पर काम करते समय, यह संभव है कि किए जाने वाले कई ऑपरेशन विनाशकारी हो सकते हैं, कुछ ऐसा जो थोड़े उच्च स्तर की भाषाओं के साथ नहीं होता है, क्योंकि त्रुटि निवारण परतें पुरानी होती हैं।

सब कुछ मनोविज्ञान है

प्रत्येक भाषा, ढांचा, प्रोग्रामर किसी न किसी प्रकार के दर्शन का सम्मान करता है और उसका पालन करता है, और यदि ऐसा नहीं होता है, तो इसका भविष्य बहुत आशाजनक नहीं है। हममें से जो लोग UNIX और डेरिवेटिव्स पर काम करते हैं वे शायद पुराने वाक्यांश को जानते होंगे:

एक काम करो, और बहुत अच्छे से करो.

यह दर्शन कर्नेल जैसी कुछ परियोजनाओं द्वारा अपनाया गया है, काफी छोटे कार्य जो केवल एक ही काम करते हैं, लेकिन वे इसे अपना सर्वश्रेष्ठ प्रदर्शन करते हैं।

यदि हम अन्य भाषाओं की ओर जाएं, तो प्रत्येक भाषा का अपना कार्य और उद्देश्य होगा, कुछ अधिक अनुज्ञेय और कुछ अधिक प्रतिबंधात्मक, लेकिन सभी अपने-अपने सोचने के तरीके का पालन कर रही हैं।

मन को पढ़ना सीखें

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

लगातार हो

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

सारांश

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


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   जेवियर जी. डेलगाडो कहा

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

    1.    क्रिसड आर कहा

      हेलो जेवियर, आपका बहुत-बहुत धन्यवाद 🙂 मुझे लगता है कि यह बहुत महत्वपूर्ण है क्योंकि वे हमेशा मुझे केवल यह सिखाना चाहते थे कि कोड को कैसे पुन: प्रस्तुत किया जाए, प्रसिद्ध Ctrl+C...Ctrl+V 🙂 लेकिन मैं कभी भी इससे प्रभावित नहीं हुआ, भले ही यह दुनिया की सबसे सरल समस्या है, मैं इसे किसी और से कॉपी करने के बजाय खुद लिखना पसंद करता हूं, इससे मुझे लगता है कि यह मेरी रचना है।
      सादर

  2.   Balua कहा

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

  3.   क्रिसड आर कहा

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

  4.   ऐन्डर्स कहा

    एक बेहतरीन लेख! मैं अगले लेख की प्रतीक्षा कर रहा हूँ...