क्या डिज़ाइन द्वारा प्रोग्रामिंग भाषा "क्लीन कोड" लागू कर सकती है? [बन्द है]


19

इसलिए मैं अपनी पहली परियोजनाओं को C ++ में कोड कर रहा हूं और ऐसा लगता है कि यह कोड को केवल "काम" के बजाय "स्वच्छ" बनाने के लिए अधिक प्रयास करता है। यानी ऐसा लगता है जैसे कि C ++ "बदसूरत, लेकिन काम करने वाला कोड लिखने की अनुमति देता है।"

जो मुझे सोच रहा था,

क्या एक प्रोग्रामिंग भाषा डिजाइन द्वारा स्वच्छ कोड लागू कर सकती है? क्या ऐसी भाषाएँ पहले से हैं?

इसके अलावा, प्रोग्रामिंग भाषा के विकास / सिद्धांत में डिजाइन सिद्धांतों के रूप में इसे कैसे शामिल किया गया है? किस तरह के उपायों का उपयोग किया जाता है?


14
बहुत सी भाषाओं ने कोशिश की है। कोई भी मेरी राय में दूर से सफल नहीं हुआ है।
रोबोट

5
दुर्भाग्य से यह पूरी तरह से राय आधारित है क्योंकि "स्वच्छ कोड" की कोई उद्देश्य परिभाषा नहीं है। हमारे चैट रूम में इस पर चर्चा करने के लिए स्वतंत्र महसूस करें , मुझे यकीन है कि सभी को साझा करने के लिए कुछ राय होगी।
Ixrec

9
नहीं, आप किसी भी भाषा में FORTRAN लिख सकते हैं।
whatsisname

4
आप पूछ रहे हैं कि क्या किसी भाषा को मूर्ख बनाना संभव है। जैसा कि वे कहते हैं, बेवकूफ सरल हैं
रोबोट

2
इस प्रश्न के प्रयोजनों के लिए "स्वच्छ कोड" में क्या विशेषताएं हैं? आपको इसे परिभाषित करने की आवश्यकता है, अन्यथा किसी भी औचित्य के साथ कोई भी उत्तर मान्य हो सकता है।
थियोडोरोस चात्जिगियानकिस

जवाबों:


20

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

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

दिन के अंत में, सिंटैक्स सिंटैक्स से अधिक महत्वपूर्ण हैं। यह एक हिस्सा भी है जो रखरखाव डेवलपर के रूप में सबसे कठिन है (उदाहरण के लिए "इस कोड का वास्तव में क्या मतलब है? मैं देखता हूं कि यह क्या करता है ...")।

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


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

7

भाषाएं प्रोग्रामर को कुछ वर्गों के बग को संबोधित करने के लिए मजबूर या प्रोत्साहित कर सकती हैं, जो स्वच्छ कोड की परिभाषा का हिस्सा है। उदाहरण के लिए, विभिन्न भाषाएं संबोधित करने का अपेक्षाकृत अच्छा काम करती हैं:

  • अशक्त सूचक अपवाद।
  • साझा राज्य कीड़े।
  • समसामयिक मुद्दे।
  • अनियंत्रित अपवाद।

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

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


6

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

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


3

यदि आप इसकी मात्रा निर्धारित कर सकते हैं, तो आप एक ऐसी भाषा बना सकते हैं जो इसे अनुकूलित कर सके।

हालांकि मैं किसी विशेष भाषा के बारे में नहीं जानता जो वास्तव में "क्लीन कोड" नीति लागू करती है, बिल्ड पर चलने वाली स्टाइल कॉप्स काफी सामान्य हैं।

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

उदाहरण के लिए, लोगों को लिखने के लिए बाध्य करने के लिए यह C # के सर्वोत्तम हित में नहीं है

if (condition)
{

के बजाय

if (condition) {

लेकिन स्टाइल चेकर्स को एक picky माना जा सकता है क्योंकि यही वे करने के लिए डिज़ाइन किए गए हैं।

तो, सवाल का जवाब देने के लिए

क्या एक प्रोग्रामिंग भाषा डिजाइन द्वारा स्वच्छ कोड लागू कर सकती है?

जोर मेरा

बिल्कुल, इसलिए जब तक आप "क्लीन कोड" का मतलब के लिए एक मजबूत परिभाषा प्रदान करते हैं।

उदाहरण के लिए, मैं "स्वच्छ कोड" को परिभाषित कर सकता हूं:

  • लाइन की लंबाई 80 से अधिक वर्ण नहीं है
  • कार्यों में 100 से अधिक लाइनें शामिल नहीं हैं
  • इंडेंटेशन दो जगह होना चाहिए
  • खुले घुंघराले ब्रेसिज़ बिल्कुल एक स्थान से पहले वाली पंक्ति के अंत में पालन करना चाहिए
  • प्रति पंक्ति दो से अधिक ऑपरेटर नहीं

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


1

नहीं, इस अर्थ में नहीं कि आप वर्णन करते हैं। "कुरूपता" का पता लगाना अपने आप नहीं हो सकता!

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

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

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