आप एक गैर-प्रोग्रामर को "सुंदर कोड" कैसे समझा सकते हैं? [बन्द है]


44

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

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


12
क्या आप किसी प्रोग्रामर को बिना कोड दिखाए सुंदर कोड समझा सकते हैं ? वर्णन अपने आप में एक कला है।
कोजिरो

9
अगर हम यहां एक अच्छे विचार के साथ आ सकते हैं, तो शायद मैं इसका इस्तेमाल एक गैर-गणितज्ञ के लिए एक सुंदर सबूत का वर्णन करने के लिए कर सकता हूं।
डेविड थोरले

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

सुंदर कोड तब है जब आप कॉमिक सैंस के लिए अपना आईडीई फ़ॉन्ट सेट करते हैं। sigh
कर्क ब्रॉडहर्स्ट

जवाबों:


88

भाषा उपमा

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

निर्माण सादृश्य

एक shoddily निर्मित घर पर विचार करें। इसमें दरवाजे और खिड़कियां हैं जो स्पष्ट रूप से ईंट से ढकी हुई हैं। मोर्टार एक कोने में फटा है जहां नींव अपर्याप्त थी। और कोई यह नहीं समझ सकता है कि एक सीढ़ी 2 मंजिल तक क्यों चलती है जो मौजूद नहीं है। टॉयलेट रसोई के बगल में बिना किसी निकास पंखे के साथ बनाया गया है और इस तरह स्थित है कि प्रचलित हवाएं घर के बाकी हिस्सों के माध्यम से गंदा दलदल उड़ा देगी। खुली चिमनी से चिमनी कुछ लकड़ी से 5 सेमी दूर है, आग पकड़ने के लिए तैयार है।

कंट्रास्ट करें कि एक घर के साथ जहां सब कुछ है जहां यह होना चाहिए, यह कम रखरखाव है, पूरी तरह से अछूता है ताकि सौर गर्मी का एक सा हिस्सा इसे सर्दियों में गर्म रखेगा, वेंटिलेशन से ऊर्जा बरामद होती है, इसलिए आपके पास ताजा हवा, आरामदायक तापमान दोनों हैं और नगण्य बिजली बिल। इसे गैर-ज्वलनशील पदार्थों से बनाया गया है ताकि यह आग से जल न सके। यह 9.0 भूकंप और एक एफ 5 बवंडर का सामना करेगा। अन्य घर की तुलना में इसे बनाने में केवल 30% का खर्च आता है, लेकिन 5 वर्षों में अंतर का भुगतान करना होगा। और यह सौंदर्यवादी रूप से मनभावन है।

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


19
कि निर्माण सादृश्य एकदम सही है!
डैनियल वांडर्सलुइस

1
+1 @ user21007: लंबे समय पहले, मैं विशाल साइटों के लिए एक सूचना वास्तुकार था - हर किसी को निर्माण सादृश्य, और सिस्टम की अवधारणा मिलती है जो बस काम करती है और सही महसूस करती है।
ब्लंडर्स

1
GUIs के साथ उत्पादों के लिए अच्छा सादृश्य। ढांचे और पुस्तकालयों के लिए इतना अच्छा नहीं है।
डेन

1
इस विज्ञापन की याद दिलाता है: youtube.com/watch?v=p9tjs-6wbsI
JohnL

4
मैंने अतीत में भाषा सादृश्य का बहुत उपयोग किया है: "मैं इस बदसूरत कोड के साथ काम कर रहा हूं ..." "रुको, आप बदसूरत द्वारा क्या करते हैं?" "यू देखें, इसका लेखन
झूठ है

28

एक कार के बारे में सोचो।

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

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

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


11

सभी मौजूद कोड की आवश्यकता है, और इसमें से किसी को भी स्पष्टीकरण की आवश्यकता नहीं है।


2
@ ज़दान: मैं यह कहकर काउंटर करूंगा कि जो लोग इसे सुंदर पाते हैं, उन्हें अपेक्षित ज्ञान होता है (इसलिए, देखने वाले की नजर में)। इसके अलावा, चतुर! = सुंदर आईएमओ।
स्टीवन एवर्स

2
@ ज़दान: जब उसे इस तरह के स्पष्टीकरण की बहुत आवश्यकता होती है, तो यह "सुंदर कोड" नहीं है, लेकिन "एक चतुर हैक।"
मेसन व्हीलर

1
FFT एक बहुत ही स्मार्ट हैक है, लेकिन ऐसा कोई तरीका नहीं है जिससे आप इसे सुंदर कह सकें।
Kyte

1
मैं सबसे अधिक भाग के लिए स्नोर्फस से सहमत हूं। हालांकि मेरे लिए सुंदर कोड न केवल आवश्यक, पर्याप्त और आत्म-व्याख्यात्मक होना चाहिए, बल्कि इसे अनिवार्य रूप से परिपूर्ण और हल्का महसूस करना चाहिए। मेरा मानना ​​है कि बहुत सारे कोड SnOrfus द्वारा उजागर किए गए मानदंडों को प्राप्त कर सकते हैं लेकिन अभी तक किसी अन्य तरीके से काफी बोझिल या अपूर्ण महसूस करते हैं। मैं ऐसे कोड को सुंदर कहूंगा।
asoundmove

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

5

मैं कविता का उल्लेख करूंगा:

एक अच्छी तरह से लिखी गई कविता में एक ही विषय के बारे में बुरी तरह से अनुवादित मैनुअल से एक अर्क की तुलना में एक अलग महसूस होता है।


यह मेरा विचार भी था, लेकिन हर कोई कविता को पसंद या समझता नहीं है। संगीत भी समझ में आया: अच्छा गीत बनाम बुरा गीत, लेकिन यह भी बहुत व्यक्तिपरक है।
PSU

क्या ... 25 इंटरफेस +25 कक्षाएं सभी अमूर्त वर्गों से विरासत में मिली हैं? मुझे बस एक लाल पहिया बैरो चाहिए था। और शायद कुछ मुर्गियां।
एरिक रेपेने

5

कोडिंग समस्याएं अवधारणा के बारे में हैं, इसलिए सुंदर कोड समस्या का एक उल्लेखनीय अवधारणा है।

उदाहरण के लिए, हम इसे पसंद करते हैं जब किसी समस्या को मौजूदा हल की गई समस्या के लिए कम किया जा सकता है, समस्या की प्रकृति में अंतर्दृष्टि उधार दे सकता है

कभी-कभी समस्या की फिर से अवधारणा को इतना आसान बना सकते हैं; हम उन सुरुचिपूर्ण समाधानों की बात करते हैं जिनके लिए सरल ट्रिक्स की आवश्यकता होती है जो एक कठिन कार्य को सरल बनाते हैं।

मेरे लिए, क्विकॉर्ट एक सुंदर उदाहरण है: एक सरणी से एक यादृच्छिक तत्व चुनें, और फिर सरणी में हर दूसरे तत्व की तुलना करें; यदि संख्या इससे कम है, तो इसे ढेर ए में डालें; यदि संख्या इससे अधिक है, तो इसे पाइल बी में रखें। अब त्रिकोण असमानता से, पाइल ए में किसी भी तत्व की तुलना पाइल बी ए और बी पर किसी भी तत्व की तुलना में करने की आवश्यकता नहीं होगी, और आप कर रहे हैं। ।


5

मुझे यह याद दिलाता है:

http://imgs.xkcd.com/comics/lisp.jpg

स्रोत: XKCD - LISP


5
बेहतर है कि एक लिंक के रूप में विशेष रूप से होवर पाठ गायब है।
user151019

1
और होवरटेक्स्ट इस मामले में आधा मजाक है।

4

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

  • पठनीयता
  • संक्षिप्ति
  • दक्षता
  • लचीलापन
  • मुखरता
  • मजबूती
  • सुरक्षा / बेवकूफ proofness
  • संपूर्णता
  • संगति
  • उपयोग में आसानी (एपीआई के लिए)

2

जैक्सन पोलक पेंटिंग कुछ के लिए सुंदर और दूसरों के लिए सुंदर का उदाहरण हैं।


हम्म्म्म ... मुझे यह महसूस नहीं हो रहा है।
डायनामिक

प्रोग्रामिंग कला (या उस मामले के लिए विज्ञान) की तुलना में अधिक शिल्प है। ऐसा नहीं है कि मैं दस्तक दे रहा हूं।
एरिक रिपेन

1

यदि व्यक्ति गणित में पारंगत है, तो मुझे सुंदर कोड की समस्या के सुरुचिपूर्ण समाधान से तुलना करना पसंद है।


1

अच्छे कोड के कुछ पहलू हैं:

  1. इसमें बड़ी संख्या में छोटे विवरण हैं जो सभी एक ही दिशा में इंगित करते हैं
  2. यह संरचना में सुसंगत है , प्रत्येक भाग एक ही पैटर्न का अनुसरण करता है
  3. लेकिन यह खुद को दोहराता नहीं है , इसके बजाय हर भाग अलग है
  4. यह उस व्यवहार को भी अनुमति नहीं देता है जिसे अमान्य माना जाता है
  5. इसमें विभिन्न राज्यों की सबसे छोटी संख्या संभव है
  6. आप फ़ंक्शन प्रोटोटाइप को पढ़कर कोड के संपूर्ण व्यवहार को समझ सकते हैं
  7. इसका कोई साइड इफेक्ट नहीं है
  8. इसके निष्पादन को रोकने की गारंटी है
  9. यह प्रोग्रामिंग भाषाओं में उपलब्ध किसी भी उन्नत सुविधाओं का उपयोग नहीं करता है
  10. यह समस्या हल करने की जटिलता की तुलना में बहुत जटिल नहीं है
  11. इसमें कोई त्रुटि या अपरिभाषित व्यवहार नहीं है
  12. यह कई अलग-अलग विक्रेताओं से संकलक के साथ संकलित किया जा सकता है
  13. इसका उपयोग करने के लिए कोड पर निर्भरता नहीं है

0

मेरे लिए भाषा मेरे उपकरण हैं।

और किसी भी शिल्पकार की तरह, मैं टकसाल की स्थिति में रहना पसंद करता हूं।

कोड की बेहतर स्थिति, अवधारणा की स्पष्टता, स्थिरता और पठनीयता के बारे में। बेहतर कोड।

तो मेरे लिए, अच्छी तरह से लिखा कोड पढ़ना एक अच्छी तरह से तैयार किए गए टूल के साथ टूलबॉक्स खोलने जैसा है।

मैंने इस उपमा को कई बार सफलता के साथ उपयोग किया है। विशेष रूप से अधिक व्यावहारिक या कलात्मक पृष्ठभूमि वाले लोग इस तरह से स्वच्छ / सुंदर कोड की अवधारणा को समझते हैं।


0

मुझे लगता है कि यह निर्भर करता है कि आप सुंदर कोड से क्या मतलब है।

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

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


0

मेरी विनम्र और व्यक्तिगत राय में, सुंदर कोड एक अच्छी उपन्यास पुस्तक की तरह है:

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

0

यह एक दुबली मतलबी कंपनी की तरह है जहाँ हर कोई अपनी भूमिका जानता है, यह पता लगाना आसान है कि कौन क्या अच्छा है, और क्या कोई दोहराव नहीं है

बनाम

ऑफिस स्पेस जहां औसत दर्जे का चैंपियन है, तीन प्रबंधकों के पास टीपीएस रिपोर्ट के बारे में बग से बेहतर कुछ भी नहीं है! @ # $ FAX MACHINE NEVER WORKS !!! और किसी भी कर्मचारी को एक सप्ताह में केवल 15 मिनट का वास्तविक काम मिल सकता है। कोई कर्मचारी तकनीकी रूप से भी वहां काम नहीं कर सकता है क्योंकि कोई व्यक्ति उसे गोली मारना भूल गया है (यह वास्तव में बताना मुश्किल है क्योंकि कोई भी कुशलता से काम नहीं करता है और यह मूल्यांकन करना मुश्किल है कि वे क्या हासिल करने की कोशिश कर रहे हैं)। और व्यावहारिक रूप से कुछ भी प्राप्त करने के लिए एक बेतुकी अति-जटिल प्रणाली को नेविगेट करने की आवश्यकता होती है, जिसके बारे में किसी ने पढ़ा और सोचा था कि उनके फिर से शुरू होने पर नीट-ओ दिखेगा, हालांकि यह वास्तव में एक समस्या को हल नहीं करता है जो उनके पास था।


-1

कोई "सुंदर कोड" नहीं है, "सुरुचिपूर्ण एल्गोरिदम" और "सुरुचिपूर्ण डिजाइन" हैं। डिज़ाइन को गैर प्रोग्रामर द्वारा समझा जा सकता है।

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


-1

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

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