1 पॉइंट द्वारा GN⁺ 2025-01-12 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Makefile प्रभाव की समझ

    • Makefile प्रभाव उस स्थिति को दर्शाता है जहाँ कोई जटिल या अपरिचित टूल शून्य से लिखने के बजाय, पहले से अच्छी तरह काम कर चुके उदाहरण को कॉपी करके उसमें बदलाव किया जाता है.
    • यह प्रभाव अक्सर तब दिखाई देता है जब अलग-अलग इंजीनियर Make जैसे टूल का उपयोग करते हैं.
    • अगर अतीत में कोई मिलती-जुलती समस्या हल की गई हो, तो इंजीनियर पुराना Makefile कॉपी करके उसे नई स्थिति के अनुसार संशोधित कर लेते हैं.
  • समस्याएँ और प्रभाव

    • डिज़ाइन चरण की समस्या: टूल बहुत जटिल होता है या उसे शुरुआत से इस्तेमाल करना झंझट भरा होता है.
    • CI/CD कॉन्फ़िगरेशन: GitHub Actions या GitLab CI/CD में YAML सेटिंग्स को अक्सर कॉपी करके बदला जाता है.
    • लिंटर और फ़ॉर्मैटर कॉन्फ़िगरेशन: बेस रूल सेट को अलग-अलग प्रोजेक्ट्स में कॉपी किया जाता है और ज़रूरत के हिसाब से सख्त या ढीला किया जाता है.
    • बिल्ड सिस्टम: हर non-trivial चीज़ धीरे-धीरे पिछले बिल्ड सिस्टम जैसी दिखने लगती है.
  • यह घटना क्यों महत्वपूर्ण है

    • डायग्नॉस्टिक्स और डिबगिंग सपोर्ट की कमी: टूल को बार-बार चलाना पड़ता है और उससे बहुत कम जानकारी मिलती है.
    • सीखने में बाधा: कुछ विशेषज्ञ ही टूल को अच्छी तरह समझते हैं, जबकि बाकी लोग न्यूनतम ज्ञान के साथ कॉपी और संशोधन करते हैं.
    • सुरक्षा समस्या: सुरक्षा से जुड़े कामों में गहरी समझ चाहिए, और Makefile प्रभाव वाले सिस्टम code और data के बीच भ्रम पैदा कर सकते हैं.
  • टूल डिज़ाइन करते समय ध्यान देने योग्य बातें

    • क्या टूल configurable होना चाहिए.
    • क्या अपना अलग syntax ज़रूरी है.
    • क्या मौजूदा syntax या idioms का पुन: उपयोग किया जा सकता है.
    • क्या copy-paste बार-बार होने की संभावना है.
  • Makefile प्रभाव से मिलती-जुलती घटनाएँ

    • यह cargo culting या normalization of deviance से मिलता-जुलता है, लेकिन Makefile प्रभाव खास तौर पर किसी विशेष डिज़ाइन के परिणाम से जुड़ा है.
    • Makefile प्रभाव अपने-आप में न तो अनिवार्य रूप से अक्षम है और न ही बुरा. यह टूल और सिस्टम डिज़ाइन करते समय ध्यान में रखने वाली बात है.

1 टिप्पणियां

 
GN⁺ 2025-01-12
Hacker News राय
  • जटिल सिस्टम अक्सर सरल सिस्टम से विकसित होते हैं। जो सिस्टम शुरुआत से ही जटिल रूप में डिज़ाइन किए जाते हैं, वे आमतौर पर अच्छी तरह काम नहीं करते, इसलिए शुरुआत सरल सिस्टम से करनी चाहिए

  • Make और Makefiles, अगर वे autoconf से ऑटो-जनरेटेड न हों, तो बहुत सरल होते हैं। अगर वे autoconf से जनरेट किए गए हों तो उन्हें संशोधित नहीं करना चाहिए, और संभव हो तो autoconf का उपयोग न करना बेहतर है। थोड़ा कोड लिखकर या कॉपी करके प्रोजेक्ट में इस्तेमाल करें और ज़रूरत के अनुसार उसे बेहतर बनाएं। बाद में उसी कोड को दूसरे प्रोजेक्ट में कॉपी करके संशोधित करें, और बदलावों को मूल प्रोजेक्ट में भी वापस शामिल करें। कई प्रोजेक्ट्स में उपयोग के बाद उसे लाइब्रेरी के रूप में निकाला जा सकता है और open source किया जा सकता है

  • लगभग 10% डेवलपर्स में शुरू से कुछ बनाने की क्षमता होती है। 40% लोग कोड कॉपी-पेस्ट करके काम करते हैं, और 50% को LeetCode puzzles के अलावा ज़्यादा कुछ नहीं पता होता। बहुत से Makefiles कॉपी-पेस्ट से बने होते हैं

  • Cargo Cult Development उस विकास पद्धति को कहते हैं जिसमें तकनीक के सिद्धांत को समझे बिना सिर्फ सतही चीज़ों की नकल की जाती है। यह कॉपी, पेस्ट, कोशिश और ट्यूनिंग के ज़रिए बस उसके काम करने की उम्मीद करने वाला तरीका है

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

  • जिन टूल्स या सिस्टम्स के साथ डेवलपर्स को इंटरैक्ट करना पड़ता है, उन्हें अक्सर रोज़मर्रा में सीखने लायक कम मूल्यवान माना जाता है। CI configuration जैसी चीज़ों को "सेट करो और भूल जाओ" की तरह देखा जाता है, और जटिल हिस्सों को दूसरी टीम संभालती है। डेवलपर्स को आसान पहुंच देने के लिए उचित टूल्स और दस्तावेज़ उपलब्ध कराने चाहिए

  • LaTeX जैसे टूल्स का उपयोग कम होता है, इसलिए लोग अक्सर कॉपी-पेस्ट से शुरुआत करते हैं। जिन टूल्स का उपयोग कम होता है, उन्हें याद रखना मुश्किल होता है

  • Make अच्छी तरह documented है, और अगर उपयोगकर्ता दस्तावेज़ पढ़े तो उसे आसानी से समझ सकता है। लेकिन कई टूल्स में documentation की कमी होती है, जिससे उपयोगकर्ता के लिए उन्हें समझना मुश्किल हो जाता है

  • जटिल टूल्स की ज़रूरत होती है, लेकिन अगर किसी सरल application में Makefile effect दिखने लगे, तो इसका मतलब है कि टूल बहुत जटिल है। छोटे प्रोजेक्ट्स के लिए Makefile उपयुक्त हो सकता है

  • "Copy-Pasta Driven Development" कोड कॉपी-पेस्ट से पैदा होने वाली समस्याओं की ओर इशारा करता है। Copilot जैसे टूल्स इन समस्याओं को और बढ़ा सकते हैं