जेमी Zawinski कानून का क्या मतलब है?


24

मुझे जैमी ज़विंस्की के सॉफ्टवेयर एनवलपमेंट के नियम की उचित व्याख्या की आवश्यकता है :

हर कार्यक्रम मेल तक पढ़ने के लिए विस्तार करने का प्रयास करता है। जिन कार्यक्रमों का इतना विस्तार नहीं हो सकता उन्हें प्रतिस्थापित किया जा सकता है।



2
@YannisRizos: यह भी देखें: en.wikipedia.org/wiki/Feature_creep
FrustratedWithFormsDesigner

जवाबों:


39

अब तक के सभी उत्तर (और टिप्पणियां) पूरी तरह से कथन के पहले आधे हिस्से पर ध्यान केंद्रित करते हैं, जिससे यह "ब्लोट" के बारे में एक टिप्पणी में आता है, जब महत्वपूर्ण आधा दूसरी छमाही होता है: वे कार्यक्रम जो इतने विस्तार नहीं कर सकते हैं उन्हें बदल दिया जाता है। किसे कर सकते हैं।

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

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

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

यह भी बहुत बड़ा है । ईएक्सई 65 एमबी से अधिक आकार का है, जिसमें लगभग 4 मिलियन लाइनों के कोड हैं, जो 150 से अधिक तालिकाओं वाले डेटाबेस द्वारा समर्थित है, एक दशक से अधिक काम के दौरान बनाया गया है। और फिर भी ऐसा लगता है कि हर बार जब हम इसे किसी नए स्टेशन या नेटवर्क पर स्थापित करने की कोशिश करते हैं, तो एक या दो चीजें हैं जो उनके वर्कफ़्लो के लिए बिल्कुल आवश्यक हैं, जिनके लिए हमारे पास कोई समर्थन नहीं है। इसलिए हम नई सुविधाओं को जोड़ते हैं क्योंकि अन्यथा ग्राहक उस सिस्टम से स्विच नहीं करना चाहेंगे जिसका वे पहले से उपयोग कर रहे हैं। और मुझे दोहराने दें, ग्राहक इसे प्यार करते हैं।


20
और अंततः फूला हुआ सॉफ्टवेयर एक नए प्रतियोगी द्वारा बदल दिया जाता है, जो "दुबला और
क्षुद्र

हम्म, मैंने सोचा कि उस हिस्से को ज़्विन्स्की के कथन द्वारा कवर किया गया था: "अगला, मैंने डिज़ाइन किया, और टेरी वीसमैन और मैंने कार्यान्वित किया, नेटस्केप मेल और न्यूज़ क्लाइंट्स, संस्करण 2.0 3.0 से 3.0। यह हमारे कानून के सॉफ्टवेयर एनवलपमेंट के प्रमाण में योगदान था। ", लेकिन अब जब मैंने फिर से पढ़ा है तो यह स्पष्ट नहीं है।
यनीस

1
@ झोंकोला यदि कोड वह करता है जो ग्राहकों को चाहिए और इससे अधिक नहीं तो वह फूला हुआ नहीं है।

1
@ ThorbjørnRavnAndersen मैं सहमत हूं, मेरी बात और थी कि जब सॉफ्टवेयर लोकप्रियता हासिल करता है (और इस तरह से उपयोगकर्ता / ग्राहक), उपयोगकर्ताओं द्वारा आवश्यक सुविधाओं की संख्या, और अंततः कार्यान्वित, बढ़ेगी।
झोंकोला

1
यदि आपकी व्याख्या सही है, तो Zawinski की टिप्पणी घमंडपूर्ण थी, न कि आत्म-ह्रास। मेरे लिए इस पर भरोसा करना मुश्किल है।
ctn

12

आपको यह समझना होगा कि यह बहुत पहले हुआ था, और उस समय यह कंप्यूटर के लिए अभी भी मुख्यधारा में नहीं था कि किसी दिए गए उपयोगकर्ता के लिए एक समय में एक से अधिक कार्यक्रम चलाने में सक्षम हो। व्यक्तिगत कंप्यूटर के लिए डॉस (और संभवतः शीर्ष पर विंडोज 3) और यूनिक्स-उपयोगकर्ताओं के लिए चरित्र आधारित टर्मिनल (केवल कुछ में एक्स 11 था)।

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

इसलिए यदि आपका वर्तमान कार्यक्रम आपके ईमेल को नहीं पढ़ सकता है, तो आप ऐसा करने के लिए या तो ऐसा करने के लिए इच्छुक थे (याद रखें कि यह एमआईटी छात्र थे) या किसी अन्य पर स्विच कर सकते हैं।

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


9

जैसा कि बाकी सभी ने पहले ही उल्लेख किया है कि "कानून" सॉफ्टवेयर ब्लोट और स्कोर रेंगना पर एक विनोदी अवलोकन है , और यह ग्रीनस्पून के दसवें नियम के समान है :

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

कानून, नेटस्केप ब्राउज़र के साथ और बाद में नेटस्केप मेल और समाचार के साथ ज़्विन्स्की के काम को दर्शाता है, जैसा कि यहाँ , अच्छी तरह से, स्वयं वर्णित है :

इसके बाद, मैंने डिज़ाइन किया, और टेरी वीज़मैन और मैंने कार्यान्वित किया, नेटस्केप मेल और समाचार क्लाइंट, संस्करण 2.0 3.0 के माध्यम से 3.0। यह साफ्टवेयर एनवलपमेंट के कानून के प्रमाण में हमारा योगदान था :

"प्रत्येक कार्यक्रम मेल पढ़ने तक का विस्तार करने का प्रयास करता है। वे प्रोग्राम जो इतने विस्तार नहीं कर सकते हैं उन्हें प्रतिस्थापित किया जा सकता है जो कर सकते हैं।"

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

मोज़िला का यूआई डिसफंक्शन

चूंकि नेटस्केप उत्पादों के लिए अधिकांश उपयोगकर्ता इंटरफ़ेस डिज़ाइन नेटस्केप आवश्यकताओं के लिए काम करने वाले नेटस्केप कर्मचारियों द्वारा किया गया था, इसलिए मोज़िला इंटरफ़ेस का सामना करना पड़ा। एक साफ कोर होने के बजाय, जिस पर नेटस्केप अपनी आवश्यकताओं के अनुरूप उत्पाद का निर्माण कर सकता था, मोज़िला सूट कभी भी सही नहीं लगा; यह अजीब यूआई निर्माणों से भरा था जो केवल नेटस्केप के निजी स्रोत भंडार में ओवरले द्वारा भरे जाने के लिए मौजूद थे - "वाणिज्यिक पेड़।"

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

1 बेन गुडगर के अब दोषपूर्ण ब्लॉग के एक संग्रहीत संस्करण से।


5
आह ... कि Emacs बताते हैं :-)
jwernerny

9
@ जर्नार्नी कुछ भी नहीं Emacs बताते हैं ...
yannis

4
@MichaelKohne - उसी कारण से मुझे लगा कि Emacs मैट्रिक्स का एक प्रारंभिक गैर-ग्राफ़िकल कार्यान्वयन था।
मार्टिन बेकेट

2
इसके अलावा, मैंने निष्कर्ष निकाला है कि ग्रीनस्पून दसवां नियम एक अवलोकन है जिसे आप अनिवार्य रूप से पर्याप्त रूप से जटिल कार्यक्रमों में पाते हैं जो आपके पास रनटाइम पर कोड प्रदान करने की क्षमता होनी चाहिए।

2
@jwernerny मेरा मानना ​​है कि एक पूरा पृष्ठ है जो इस बारे में बात करता है: jwz.org/doc/lemacs.html
माइकल

4

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


2
उर्फ "ग्रीनस्पून का दसवां नियम।"
जेरी कॉफिन

1
@JerryCoffin: धन्यवाद, मुझे इसका नाम नहीं पता था! en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
FrustratedWithFormsDesigner

3

यह इस बात पर टिप्पणी है कि कैसे कुछ सॉफ्टवेयर परियोजनाएं अधिक से अधिक सुविधाओं को बढ़ाती और जोड़ती रहती हैं।

कई परियोजनाएं सुविधाओं को जोड़ने का विरोध करने में सक्षम नहीं हो सकती हैं, चाहे जरूरत हो या न हो।

एक तार्किक निष्कर्ष यह है कि सॉफ्टवेयर का हर टुकड़ा मेल भेजना समाप्त कर देगा।

स्कोप रेंगना भी देखें ।


मेल संचार कुछ स्थानों पर सॉफ्टवेयर से मनुष्यों को सूचनाएं भेजने का / / तरीका है।
पॉल नाथन

मेल भेजना पढ़ने से ज्यादा वाजिब है। मेरा राउटर मुझे हर बार अपने लॉग भेज सकता है लेकिन मेल स्वीकार करने का कोई कारण नहीं है। इसी तरह, कई एंड्रॉइड प्रोग्राम छवियों को साझा करेंगे और ऐसे उद्देश्यों को साझा करने के लिए।
जीन पिंडर

-1

मैं इसे देखने के लिए कम से कम तीन तरीके देखता हूं।

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

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

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

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