केस असंवेदनशील खोजशब्द एक भाषा में [बंद]


31

हम एक कस्टम स्क्रिप्टिंग भाषा लिखने की कोशिश कर रहे हैं। केस असंवेदनशील कीवर्ड प्रदान करके भाषा को क्षमा करने का सुझाव दिया गया है ।

मुझे व्यक्तिगत रूप से यह विचार पसंद नहीं है, लेकिन मेरी टीम में कुछ लोग हैं जो यह कहते हैं कि यह अंतिम उपयोगकर्ता को खुश कर देगा! FORTRAN, BASIC, SQL जैसी भाषाओं के उदाहरण यह कहते हुए दिए गए हैं कि ये केस असंवेदनशील हैं।

यह एक अच्छा विचार है?


4
खैर, विजुअल बेसिक आमतौर पर संवेदनशील नहीं होता, क्या यह आपके सवाल का जवाब देता है? ; पी
यानिस


3
ध्यान दें कि पहचानकर्ता मामले को असंवेदनशील बनाना बहुत मुश्किल है, जब तक कि आप उपयोगकर्ताओं को ASCII वर्ण सेट तक सीमित नहीं करते हैं।
साइमन रिक्टर

2
@ मेनमा: सी ++ कम से कम नहीं है। यह पहचानकर्ता में कार्यान्वयन से परिभाषित वर्ण की अनुमति देता है, लेकिन क्या गारंटी है केवल है a-zA-Z, 0-9(शुरू में छोड़कर) और _
जियो

2
VB6 वास्तव में एक तरह के हाइब्रिड दृष्टिकोण का उपयोग करता है: आप किसी भी तरह से कीवर्ड और पहचानकर्ता लिख ​​सकते हैं और आईडीई तुरंत उन्हें संग्रहीत तरीके से कनवर्ट करता है। (आप "एंडिफ़" भी लिख सकते हैं और इसे "एंड
इफ़

जवाबों:


42

अपने आप से पूछें कि अंतिम उपयोगकर्ता कौन है। अगर इसका अर्थ किसी के द्वारा C या जावास्क्रिप्ट में प्रोग्रामिंग अनुभव, या यूनिक्स में IT अनुभव के साथ लिखा जाना है, तो केस सेंसिटिविटी शायद सही काम है, क्योंकि उपयोगकर्ता यही अपेक्षा करता है। लेकिन ज्यादातर एंड-यूजर्स, यहां तक ​​कि पावर-यूजर्स के लिए, यह भ्रामक होगा।

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

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


सोचें कि प्रोग्रामिंग भाषाओं को देखने से पहले कौन से फाइल सिस्टम संवेदनशील हैं। विंडोज़ के लिए FAT / NTFS और MacOS X के लिए HFS + दोनों केस असंवेदनशील हैं, जबकि यूनिक्स के लिए UFS / NFS केस सेंसिटिव हैं। पावर यूजर्स को छोटे अंतर से फाइल / वेरिएबल को अलग करने की क्षमता पसंद है जबकि ज्यादातर उपयोगकर्ता चीजों को अधिक सहज रखना पसंद करते हैं। जैसा कि अवनर कहते हैं कि अंतर उत्पाद-प्रबंधन का विकल्प है।
माइकल शोपिन

4
चूंकि यह एक स्क्रिप्टिंग भाषा है, इसलिए यह एक बिना दिमाग वाला मामला है - असंवेदनशीलता का रास्ता है। केस-संवेदी क्यों? यदि उत्तर "सी और जावा जैसा होना" है, तो क्या यह वास्तव में एक अच्छा कारण है?
बेन

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

2
यह एक स्क्रिप्टिंग भाषा होने के कारण नो-ब्रेनर हो सकता है - प्रासंगिक सवाल यह है: कौन स्क्रिप्टिंग कर रहा है, और उनके लिए सबसे अच्छा विकल्प क्या है? (मैं यह भी कहूंगा कि आपको शायद सुसंगत होना चाहिए: यदि आपके कीवर्ड केस-असंवेदनशील हैं, तो कृपया पहचानकर्ताओं को केस-संवेदी न बनाएं ...)
आने वाले

@delnan मुझे लगता है कि यह एक तार्किक विकल्प है कि OS को लक्षित करने वाली भाषा की स्क्रिप्टिंग जहां केस-सेंसिटिविटी बिल्ट-इन होनी चाहिए, वह केस-सेंसिटिव भी होनी चाहिए।
आर्टेमिक्स

16

आपको उस उपयोगकर्ता अनुभव के आधार पर निर्णय लेना चाहिए जिसे आप प्रस्तुत करना चाहते हैं, न कि इसे लागू करना कितना आसान या कठिन है।

यदि आपके उपयोगकर्ताओं के लिए असंवेदनशीलता का मामला आसान हो जाएगा तो आपको इसे लागू करना चाहिए।

बिंदु एसक्यूएल में एक मामला असंवेदनशील है। यह एक इंटरैक्टिव सेटिंग में उपयोग करना बहुत आसान बनाता है।

एक और तरीका है इस को देखने के लिए वहाँ कभी के बीच एक अंतर हो जाएगा keywordऔर Keywordमें अपनी भाषा है, और इस अंतर को उपयोगकर्ता के लिए सार्थक हो जाएगा? एक स्क्रिप्टिंग भाषा के लिए मैं कहूंगा कि इसका उत्तर "नहीं" है।


3
+1 के लिए "क्या यह अंतर उपयोगकर्ता के लिए सार्थक होगा"। उपयोगकर्ता सबसे अधिक मायने रखता है।
बेन

केस असंवेदनशीलता के कारण इंटरैक्टिव सेटिंग में एसक्यूएल का उपयोग करना आसान क्यों है? क्या इसलिए कि आप गलती से कैप्स लॉक चालू कर सकते हैं और नोटिस नहीं कर सकते?
कज़

@ काज - बहुत सुंदर।
ChrisF

11

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

एक बार भाषाओं को असंवेदनशील बनाना स्पष्ट लग रहा था। ऐसा इसलिए है क्योंकि सभी कंप्यूटिंग सिस्टम और उनके I / O डिवाइस (कीबोर्ड, प्रिंटर और डिस्प्ले डिवाइस) पर लोअर केस उपलब्ध नहीं था। प्रोग्रामिंग भाषा कार्यान्वयन को ऊपरी मामले में लिखे गए कार्यक्रमों को स्वीकार करना पड़ा, क्योंकि केवल वही प्रदर्शित या मुद्रित किया जा सकता था। और इसके लिए उन्हें केस असंवेदनशील होना चाहिए, क्योंकि ऊपरी मामले को स्वीकार करना और एक ही समय में संवेदनशील होने का मतलब है निचले मामले को खारिज करना। लोअर केस कुछ प्रोग्रामर चाहते थे, लेकिन हमेशा नहीं हो सकते थे। कोई भी वास्तव में उन कार्यक्रमों के साथ काम नहीं करना चाहता था जो ऊपरी मामले में चिल्लाए थे; यह सिर्फ एक हार्डवेयर सीमा थी।

थोड़ी देर के लिए, टर्मिनलों में केस फोल्डिंग करना भी आम था। यदि एक टर्मिनल केवल ऊपरी मामले को प्रदर्शित कर सकता है, लेकिन आपको ऊपरी और निचले मामले का समर्थन करने वाले कंप्यूटिंग सिस्टम में प्रवेश करना होगा, तो टर्मिनल निचले मामले को ऊपरी मामले में बदल देगा। सोचिये ये बहुत पहले की बात है? "Apple II की तरह, Apple II Plus की कोई लोअरकेस कार्यक्षमता नहीं थी।" (http://en.wikipedia.org/wiki/Apple_II_Plus) जब शुरुआती Apple कंप्यूटर के उपयोगकर्ताओं ने एक BBS में डायल किया, जिसमें मिश्रित-केस सामग्री थी, तो टर्मिनल एमुलेटर (या होस्ट) को उस सभी ऊपरी मामले को मोड़ना था। उन दिनों बुलेटिन बोर्डों पर सभी कैप्स में लिखे संदेश आम थे। यह कार्यक्षमता अभी भी यूनिक्स की तरह ऑपरेटिंग सिस्टम में लिनक्स कर्नेल की तरह पाई जाती है। उदाहरण के लिए, stty olcucअपने शेल प्रॉम्प्ट पर टाइप करें ।Unix tty लाइन अनुशासन आउटपुट पर ऊपरी केस को मैप कर सकता है, और यह इनपुट पर लोअर केस को मैप कर सकता है। यह आपको एक कम केस प्रोग्रामिंग भाषा में काम करने की अनुमति देता है, एक ऐसे टर्मिनल पर, जिसका कोई निचला मामला नहीं है।

केस असंवेदनशीलता एक पुराने कंप्यूटर युग से एक पुरानी अवधारणा है जो अंतरराष्ट्रीय कम्प्यूटिंग की आधुनिक दुनिया में बहुत अच्छा काम नहीं करती है। क्या आप इसे अन्य भाषाओं में विस्तारित करते हैं? फ्रेंच के बारे में कैसे: क्या आप È और è को समान मानते हैं? या जापानी? क्या आप हीरागाना और कटकाना को केवल मामले मानते हैं, ताकि ag h イ ル और い る ag る समान पहचानकर्ता हों? ऐसे मूर्खतापूर्ण के लिए समर्थन आपके लेक्सिकल विश्लेषक को बहुत जटिल करेगा, जिसके पास पूरे यूनिकोड स्थान के लिए मामले के समतुल्य नक्शे होने चाहिए।

ध्यान दें कि गणित संवेदनशील है। उदाहरण के लिए, ऊपरी मामला सिग्मा योग को निरूपित कर सकता है, जबकि निचला मामला सिग्मा मानक विचलन की तरह कुछ और दर्शाता है। यह किसी भी कठिनाइयों का निर्माण किए बिना एक ही सूत्र में हो सकता है। (क्या प्रोग्रामिंग भाषा Σ और σ के बराबर होगी?)

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

मूल रूप से, 1985 के बाद से बनाई गई कोई भी नई प्रोग्रामिंग भाषा जो केस-असंवेदनशील है, जो एक ई-नाखून के बिना और उसके बाद की स्थिति के लिए है।

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

विंडोज में केस हैंडलिंग के कारण होने वाली कष्टप्रद समस्याओं को देखें, जब फाइलों को दूसरे ऑपरेटिंग सिस्टम से आयात किया जाता है। यह एक तकनीकी मुद्दा है। केस सेंसिटिव फाइल सिस्टम में विदेशी डेटा की समस्या होती है जो केस-असंवेदनशील नहीं होते हैं।

आम लिस्प ने आदर्श दृष्टिकोण पर प्रहार किया है: प्रतीक नाम मामले के प्रति संवेदनशील होते हैं, लेकिन जब टोकन पढ़े जाते हैं, तो वे ऊपरी मामले में बदल जाते हैं। इसका मतलब है कि टोकन foo, fOO, FOOऔर Fooसभी निरूपित एक ही प्रतीक: प्रतीक जिसका नाम चरित्र स्ट्रिंग के रूप में संग्रहीत किया जाता है "FOO"। इसके अलावा, यह व्यवहार केवल डिफ़ॉल्ट रीड टेबल कॉन्फ़िगरेशन है। पाठक ऊपरी मामले में, निचले मामले में, मामले को पलटने या संरक्षित करने के लिए पत्रों को मोड़ सकता है। अंतिम दो विकल्प केस-संवेदी बोली को जन्म देते हैं। इस तरह, उपयोगकर्ताओं के पास अधिकतम लचीलापन है।


1
"कैसे फ्रेंच के बारे में: क्या आप È और é को समकक्ष मानते हैं? या जापानी? क्या आप हीरागाना और कटकाना को केवल मामले मानते हैं, ताकि ident ァ イ do ル और ふ い same same समान पहचानकर्ता हों?" जवाब "हाँ" है, और यह केवल मूर्खतापूर्ण है अगर आपको लगता है कि अन्य लोगों की संस्कृतियां मूर्ख हैं।
बेन

ठीक है, अपने छोटे सिर को विस्फोट करने के लिए तैयार करें, क्योंकि मुझे नहीं लगता कि अन्य लोगों की संस्कृतियां मूर्ख हैं (कुछ अपवादों के साथ, दुनिया की वर्तमान घटनाओं के संबंध में), फिर भी एक ही समय में मुझे लगता है कि フ イ ル और ル का इलाज करना पूरी तरह से नैतिक है। Language same ふ language प्रोग्रामिंग भाषा में समान पहचानकर्ता के रूप में।
कज़

@ क्या आप बताई गई संस्कृतियों को जानते हैं? यदि आप जानते हैं कि काज़ किस बारे में बात कर रहा था तो आप उसे मूर्ख नहीं कहेंगे।
डेविड काउडन

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

यदि आप ऐसे पहचानकर्ताओं को मना करते हैं जो केवल मामले, उच्चारण या काना या जो कुछ भी हो, में भिन्न हैं, तो आप स्पष्ट रूप से स्वीकार कर रहे हैं कि वे एक ही हैं (लेकिन केवल निरंतरता पर जोर देते हैं)। यह बेहतर है कि ऐसी चीज़ों पर रोक न लगाई जाए और उपयोगकर्ताओं को कोडिंग कन्वेंशन का विषय बनने के लिए छोड़ दें। एक बेहतर विचार यह होगा कि एक घोषणात्मक प्रणाली हो जिससे कार्यक्रम उस पर बल दे सके fooऔर Fooउसे समानार्थक या विशिष्ट माना जा सके। इस तरह की घोषणा के बिना, यह दोनों के लिए एक त्रुटि है। और जब से घोषणा का विस्तार नहीं होता है FOO, तब FOOभी निषिद्ध है; इसे जोड़ना होगा।
कज़

6

वास्तविक निर्धारण कारक यह है कि आप कितनी बार एक ही नाम के साथ कई चीजें करना चाहते हैं। केस असंवेदनशीलता एसक्यूएल में काम करती है क्योंकि यह अक्सर आप एक कॉलम का नाम नहीं चाहते हैं SELECT। यह जावा में कष्टप्रद होगा क्योंकि हर दूसरी रेखा दिखती है Object object = new Object(), जहाँ आप एक ही नाम एक वर्ग, एक उदाहरण, और एक निर्माता का उल्लेख करना चाहते हैं।

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

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

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


मुझे नहीं लगता कि नामों के लिए कीवर्ड का पुन: उपयोग करना चाहते हैं यह मुद्दा है। SQL, Visual Basic, और C # (पूर्व दो केस-असंवेदनशील और बाद वाले केस-सेंसिटिव) दोनों ही पहचानकर्ता को उद्धृत करने का एक तरीका अनुमति देकर इसका समाधान करते हैं: "double quotes"(या [brackets]MS SQL में) SQL में, [brackets]VB.net में, और @atsignC # में।
रैंडम 832

"कितनी बार आप एक ही नाम के साथ कई चीजें करना चाहते हैं।" केस असंवेदनशीलता का अर्थ है कि आपको कुछ ओवरहेड जोड़ना होगा नामों को अस्वीकार करने के लिए जो अन्यथा मामले से निपटा जाएगा (उदाहरण के लिए, 'सदस्य' के लिए एक उपसर्ग के रूप में, एक उपसर्ग संपत्ति के नाम से अलग करने के लिए, कहते हैं)।
nwahmaet

आप किसी वस्तु को क्यों नाम देंगे? वह सिर्फ परेशानी के लिए पूछ रहा है।
बेन

@, मान लीजिए कि आप कंटेनर ऑब्जेक्ट को लागू कर रहे हैं, तो आप अपने ऐड मेथड के लिए पैरामीटर को और क्या कहेंगे?
विंस्टन एवर्ट

@WinstonEwert, मैं इसे कॉल करूंगा o। यह वास्तव में कोई फर्क नहीं पड़ता कि आप इसे क्या कहते हैं क्योंकि यह सिर्फ एक पैरामीटर नाम है। जब तक यह अपमानजनक या अवैध नहीं है, या भ्रम का कारण है
बेन

5

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


अच्छी बात है, लेकिन जवाब नहीं।

@delnan: शायद एवन शाहर-कश्तन (जिसे मैंने +1 दिया था) से उतना अच्छा नहीं है, लेकिन शायद यह ओपी के लिए मददगार है।
डॉक ब्राउन

3
हाँ, एक टिप्पणी के रूप में सहायक;)

तो अगर यह कहना कि यह केवल एक अच्छा विचार है अगर आप उपयोगकर्ता को केस संवेदनशीलता के बारे में चेतावनी देते हैं तो यह एक जवाब होगा? मेरे लिए, यह मान लिया गया था।
जेएफओ

नहीं, तो यह एक मामूली बात होगी जो मुश्किल से जवाब के रूप में पूछे गए प्रश्न का उत्तर दे रहा है। IMHO।

4

क्या आप चर-अ-घोषित कर सकते हैं? यदि ऐसा है तो मैं केस संवेदी के खिलाफ बहस करूंगा, क्योंकि इससे होने वाले बग को ट्रैक किया जा सकता है

ATypo = 42; 

विरोध के रूप में

Atypo = 42; 

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


2
IMHO यह पढ़ने को भी आसान बनाता है। आखिरकार जब आप एक वाक्य शुरू करते हैं, तो आप पहले शब्द को बड़ा करते हैं, लेकिन आप इसका अर्थ नहीं बदलते हैं। कोड के लिए भी होना चाहिए!
NWS 14

2
@delnan - आप पठनीयता चाहते थे, यह उसी वर्णमाला का उपयोग करता है, जब आप केस बदलते हैं तो अर्थ क्यों बदलते हैं?
NWS

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

2
@ मुझे एक सादृश्य बनाने दें। गणितीय संकेतन, प्रोग्रामिंग भाषाओं के विपरीत, विशेष रूप से मनुष्यों के लिए है। प्राचीन कंप्यूटर की ऐतिहासिक कलाकृतियों के मामले में असंवेदनशीलता का सामान्य तर्क यहां लागू नहीं होता है। फिर भी मुझे शक है किसी भी गणितज्ञ कि लोगों का तर्क था aऔर Aपरस्पर विनिमय किया जाना चाहिए। वे बिना किसी अपवाद के लगातार केस करते हैं। उदाहरण के लिए, कुछ संदर्भों में ऊपरी मामलों के पत्रों का उपयोग सेट के लिए किया जाता है, जबकि निचले मामलों के पत्रों के सदस्यों को सेट किया जाता है। एक और उदाहरण इलेक्ट्रिकल इंजीनियरिंग में होता है, लोअर-केस टाइम-डिपेंडेंट और अपर केस टाइम-इंडिपेंडेंट होने ...

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

2

FORTRAN, BASIC, SQL जैसी भाषाओं के उदाहरण यह कहते हुए दिए गए हैं कि ये केस असंवेदनशील हैं।

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

अब आप उस मामले को अधिक क्षमा करने की असंवेदनशीलता का तर्क दे सकते हैं, लेकिन दूसरा पक्ष यह है कि मामले की संवेदनशीलता अधिक पठनीय कोड में हो सकती है क्योंकि यह fOrCeS tHe cOdEr tO uSe cOnSiStEnn cApItAlIzAtIoN है।


4
मैं इस तर्क से बीमार हूँ "X अच्छा है, Y संबंधित चीज़ Z को लागू करता है, इसलिए Y, X को लागू करने से अच्छा करता है" (जैसे sane कोडिंग शैली / पायथन / ऑफसाइड नियम)। कोई भी अच्छा प्रोग्रामर इस तरह से पूंजीकरण नहीं करता, जो पठनीयता को गंभीरता से प्रभावित करता हो, तब भी जब अनुमति दी जाए। जो लोग दुर्व्यवहार के मामले में असंवेदनशीलता करते हैं, वे एक संवेदनशील माहौल में असंगत रूप से पूंजीकरण करते हैं (और एक सौ अन्य अत्याचार करते हैं), वे बस एक व्यक्तिगत नाम के प्रत्येक उपयोग के लिए उसी खराब पूंजीकरण का उपयोग करने के लिए मजबूर हैं। खराब प्रोग्रामर किसी भी भाषा में फोरट्रान लिख सकते हैं। (डिस्क्लेमर: मैं केस सेंसिटिविटी का बहुत बड़ा प्रशंसक हूं!)

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

असंवेदनशील भाषा में ऊपरी मामले का कोई भी उपयोग असंवेदनशीलता का दुरुपयोग करता है।
कज़

@Kaz - erm ... एक लाख SQL प्रोग्रामर को यह बताने की कोशिश करें।
स्टीफन सी

1

केस संवेदनशीलता को हानिकारक माना।

जीवन संवेदनशील नहीं है और न ही उपयोगकर्ता या प्रोग्रामर हैं।

केस संवेदनशील भाषाएँ एक ऐतिहासिक दुर्घटना हैं, विवश प्रणालियों की, जो केस-असंवेदनशील तुलनाओं को कठिन बनाती हैं। यह बाधा अब मौजूद नहीं है, इसलिए केस-संवेदी कंप्यूटर सिस्टम को फिर से बनाने का कोई कारण नहीं है।

मैं इतना कहना चाहूंगा कि केस की संवेदनशीलता बुराई है , क्योंकि यह उपयोगकर्ता के सामने कंप्यूटर की सुविधा डालता है।

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


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

यूनिकोड इसे पूरे अन्य दायरे में रखता है।
डेडज़ैम

3
यह ब्लॉग केवल C में बुरा क्यों है, इसके लिए कोई औचित्य नहीं देता है, केवल पायथन या PHP- में और ओपी केस सेंसिटिव आइडेंटिफ़ायर, केवल कीवर्ड के बारे में बात नहीं कर रहा है । उस लिंक में उस विषय के बारे में कहने के लिए कुछ भी नहीं है।
डेडज़ैम

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

2
@ बीन: कुछ भाषाओं में, बहुत ही सख्त लेक्सोग्राफिकल रिवाज हैं, या नियम भी हैं। सी और सी ++ में, ऑल-कैप्स एक मैक्रो है, और भ्रम को रोकने के लिए मैक्रोज़ को ऑल-कैप रहना चाहिए। कुछ भाषाओं के प्रतीकों के लिए या प्रारंभिक कैप के बिना अलग-अलग अर्थ होते हैं (और मुझे नहीं पता कि वे विभिन्न भाषाओं में कितनी अच्छी तरह से करते हैं जिनके पास समान ऊपरी और निचले मामले पत्र नहीं हैं)। यदि आपके पास इस तरह के नियम या रूढ़ियां हैं, तो आपको विभिन्न नामस्थानों के प्रभाव के बारे में कुछ मिलता है, और अलग-अलग नामस्थानों में पहचानकर्ता नामों की नकल अक्सर काम करती है।
डेविड थॉर्नले

1

मेरे व्यक्तिगत अनुभव से मुझे केस सेंसिटिव और असंवेदनशील भाषाओं के बीच बड़ा अंतर नहीं दिखता।

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

एक ही अर्थ में CheckOut और checkOut और चेकआउट और cHeCkOuT और CHECKOUT का उपयोग नहीं करना चाहिए। यह पठनीयता को चोट पहुँचाएगा और इस तरह के कोड को अधिक दर्दनाक बना देगा (लेकिन इससे भी बदतर बात यह है कि कोई कोड की पठनीयता को नष्ट करने के लिए कर सकता है)।

यदि आप कुछ प्रकार के नियमों का उपयोग करते हैं, तो आप उदाहरण के लिए देखेंगे:

CheckOut.getInstance () - यह एक वर्ग की स्थैतिक विधि है जिसे checkOut.calculate () कहा जाता है - यह चर या सार्वजनिक क्षेत्र में रखी गई किसी वस्तु का एक तरीका है जिसे _checkOut.calculate () कहा जाता है - यह निजी क्षेत्र में रखी गई वस्तु का एक तरीका है जिसे CHECKOUT कहा जाता है। - यह एक अंतिम स्थिर या स्थिर क्षेत्र / चर है

कुछ अन्य फ़ाइलों या फ़ाइल के कुछ हिस्सों की जाँच किए बिना। यह रीडिंग कोड को तेज बनाता है।

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

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

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


1

प्रोग्रामिंग भाषाओं को असंवेदनशील होना चाहिए।

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

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

भाषा के मामले को असंवेदनशील बनाना निश्चित रूप से आसान है; आपको लेसर, पार्सर और सिंबल टेबल की जरूरत नहीं होती है, ताकि यह सुनिश्चित हो सके कि केस इंसेंटिव फैशन में सब कुछ मैच के अतिरिक्त काम कर जाए। लेकिन यह भी एक बुरा विचार है, दो कारणों से:

  • सबसे पहले, खासकर यदि आप एक स्क्रिप्टिंग भाषा का निर्माण कर रहे हैं, एक सरल टाइपो जहां आप एक जगह में कुछ "myObject" और दूसरे में "MyObject" कहते हैं, जहां आप स्पष्ट रूप से एक ही वस्तु का उल्लेख कर रहे हैं, लेकिन बस कैपिटलाइज़ेशन के साथ थोड़ा असंगत हो गया है , एक रनटाइम त्रुटि में नहीं बदल जाता है। (यह स्क्रिप्टिंग भाषाओं में एक प्रमुख दर्द-बिंदु के रूप में बदनाम है जो इस गलत तरीके से प्राप्त करता है, जैसे कि पायथन।)
  • दूसरा, केस सेंसिटिविटी न होने का मतलब है कि कैपिटलाइज़ेशन को बदलकर केस सेंसिटिविटी का दुरुपयोग नहीं किया जा सकता है क्योंकि एक ही शब्द का दो अलग-अलग चीज़ों को एक ही दायरे में रखा जाए। यदि आपको कभी सी वातावरण में विंडोज कोड के साथ काम करना पड़ता है, और जैसे बदसूरत घोषणाओं में भाग लेते हैं HWND hwnd;, तो आपको पता चल जाएगा कि मैं किस बारे में बात कर रहा हूं। जो लोग उस तरह के ओफ्ता को लिखते हैं और उन्हें गोली मार दी जाती है, और भाषा के मामले को असंवेदनशील बनाकर केस सेंसिटिव एब्यूज को अपने कोड में अपना रास्ता बनाने से रोकता है।

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


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

मुझे कोई आपत्ति नहीं है HWND hwnd;। यह एक उदाहरण है जहां केस संवेदनशीलता अच्छी तरह से काम करती है। सभी प्रकार के "इंडियन हिल" सम्मेलन मूर्खतापूर्ण हैं। hwnd_t hwndज़्यादा बेहतर है। मुझे संदेह है कि यह सब इसकी वजह है FILE। एक बार संस्करण ६ यूनिक्स में इसकी I / O लाइब्रेरी हेडर फाइल थी #define FILE struct _iobuf। यह सभी कैप्स में था क्योंकि यह एक मैक्रो था। जब यह एएनएसआई सी में टाइप्डफ बन गया, तो सभी कैप स्पेलिंग को बरकरार रखा गया। और मुझे लगता है कि यह इस बात की नकल से है कि ALL_CAPS_TYPE सम्मेलन का आविष्कार किया गया था, और बेल लैब में कोडित किया गया "इंडियन हिल स्टाइल गाइड। (मूल एक!)
कज़

यदि आप अब "इंडियन हिल स्टाइल गाइड" के लिए गूगल करते हैं, तो आप ज्यादातर बेल लैब्स के 1990 के दस्तावेज़ का संदर्भ लेते हैं, जो पूरी तरह से सभी कैप टाइप के नामों के पश्चाताप करता है: ऐसी किसी भी सिफारिश का कोई निशान नहीं। लेकिन मूल संस्करण की तरह चीजों की सिफारिश की typedef struct node *NODE। मुझे यकीन है कि यही वह जगह है जहाँ Microsoft ने इस पर उठाया होगा। तो, बेल लैब्स को दोष दें HWND
कज़

1

मुझे विश्वास नहीं हो रहा है कि किसी ने कहा "केस सेंसिटिविटी पढ़ने के कोड को आसान बना देती है"।

यह निश्चित रूप से नहीं करता है! मैंने कंपनी और कंपनी (पब्लिक वैरिएबल कंपनी, मिलान किए गए निजी वैरिएबल कंपनी) जैसे चर में एक सहकर्मी के कंधे पर देखा है और फ़ॉन्ट और रंग की उनकी पसंद दोनों के बीच का अंतर बताने के लिए अविश्वसनीय रूप से कठिन बना देती है - यहां तक ​​कि एक दूसरे के बगल में भी।

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

मुझे पता है कि सबसे पागल सम्मेलन "अपरकेस पब्लिक, लोअरकेस प्राइवेट" है। यह सिर्फ मुसीबत के लिए पूछ रहा है!

मेरी गलतियाँ "बेहतर है कि कुछ नीरवता से विफल हो और जितनी जल्दी हो सके चुपचाप असफल होने के बजाय सफल होने के लिए प्रकट हो"। और संकलन समय से अधिक जल्दी नहीं है।

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

एक कन्वेंशन का उपयोग करना बेहतर है जहां निजी चर परेशानी एक प्रत्यय है - जैसे कंपनी सार्वजनिक चर, कंपनीप निजी चर। कोई भी गलती से दोनों को मिलाने वाला नहीं है, और वे एक साथ इंटैलिजेंस में दिखाई देते हैं।

यह आपत्ति लोगों के साथ हंगेरियन नोटेशन के विपरीत है, जहां एक पूर्वनिर्मित निजी चर pCompany intellisesne में एक अच्छी जगह में दिखाई नहीं देगा।

इस अधिवेशन में खूंखार ऊपरी / निचले मामले के अधिवेशन के सभी फायदे हैं और इसकी कोई भी कमी नहीं है।

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

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


1
ठीक है, तो companyName == companyname। यह उचित लगता है, लेकिन आप स्थानों को कैसे संभालते हैं? क्या आपके कार्यक्रम को दुनिया के विभिन्न हिस्सों में अलग-अलग शब्दार्थों के कारण संकलित किया जाएगा, जैसा कि यह PHP में करता है? क्या आप पूरी तरह से एंग्लो-केंद्रित होंगे और केवल पहचानकर्ताओं में ASCII प्रिंट करने योग्य सेट का समर्थन करेंगे? केस असंवेदनशीलता बहुत कम अतिरिक्त लाभ के लिए अतिरिक्त जटिलता है।
12

0

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

इस युग में प्रोग्रामर केस सेंसिटिविटी की उम्मीद करते हैं।


1
मामले की तुलना इतनी कठिन नहीं है। बस अपने पहचानकर्ताओं को विघटित करें। ई = ई '= ई' = é। याद रखें, आप अभी भी चुन सकते हैं कि किस मामले के नियमों का पालन करना है, और अंग्रेजी एक उचित विकल्प है। (निश्चित रूप से अगर आपके कीवर्ड अंग्रेजी भी हैं)
MSalters

2
हाँ, वे "हार्ड" हैं, पूरे यूनिकोड स्थान पर।
काज

1
"इस युग में प्रोग्रामर केस संवेदनशीलता की उम्मीद करते हैं"? केवल अगर उनके पास स्टॉकहोम सिंड्रोम है, तो सी परिवार के साथ बहुत समय तक काम किया है।
मेसन व्हीलर

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

0

केस सेंसिटिविटी से कोड अधिक पठनीय और प्रोग्रामिंग आसान हो जाता है।

  • लोगों को मिश्रित मामले का उचित उपयोग पढ़ने में आसान लगता है

  • यह CamelCase को अनुमति देता है / प्रोत्साहित करता है ताकि विभिन्न मामलों के साथ एक ही शब्द संबंधित चीजों को संदर्भित कर सके: Car car; इस प्रकार नामित चर carप्रकार से बना है Car

  • ALL_CAPS_WITH_UNDERSCORES कई भाषाओं में सम्मेलन द्वारा स्थिरांक इंगित करता है

  • all_lower_with_underscores का उपयोग सदस्य चर या कुछ और के लिए किया जा सकता है।

  • केस सेंसिटिविटी के लिए सभी आधुनिक प्रोग्रामिंग टूल्स (सोर्स कंट्रोल, एडिटर्स, डिफरेंट, grep आदि) को डिजाइन किया गया है। यदि आप केस असंवेदनशील भाषा बनाते हैं, तो आपको हमेशा टूल प्रोग्रामर के साथ समस्याएं हो सकती हैं।

  • यदि भाषा की व्याख्या की जाएगी, तो कोड के असंवेदनशील पार्सिंग के लिए एक प्रदर्शन जुर्माना हो सकता है।

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

फायदा क्या है? आपके द्वारा उल्लिखित 3 भाषाएं 1970 या उससे पहले की हैं। कोई भी आधुनिक भाषा ऐसा नहीं करती है।

दूसरी ओर, कुछ भी जो वास्तव में अंत-उपयोगकर्ता को खुश करता है, दुनिया में थोड़ा प्रकाश लाता है। यदि यह वास्तव में उपयोगकर्ता की खुशी को प्रभावित करेगा, तो आपको यह करना होगा।

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


1
मुझे लगता है कि आप "केस-असंवेदनशीलता एक बुरा सपना है" कहना चाहते थे। जापानी के पास मामला है: हीरागाना और कटकाना, अलग तरह के मामले। जैसे A और a एक निश्चित तरीके से "समान" हैं, वैसे ही ア और are हैं। कटकाना को कभी-कभी जोर देने के लिए उपयोग किया जाता है, इसी तरह भाषाओं में ऊपरी मामले जो रोमन वर्णमाला का उपयोग करते हैं। यह कहने की जरूरत नहीं है कि हीरागाना और कटकाना को प्रोग्रामिंग लैंग्वेज आइडेंटिफायर्स के समान मानना ​​मूर्खता होगी।
कज़

धन्यवाद - यह समृद्ध है! मैंने अपनी पोस्ट को थोड़ा साफ किया।
ग्लेनपेटर्सन

1
Car car;केस सेंसिटिविटी के खिलाफ सबसे अच्छे तर्कों में से एक है : यह बदसूरत है, और यदि आपकी भाषा असंवेदनशील है, तो आप केस सेंसिटिविटी का दुरुपयोग नहीं कर सकते।
मेसन व्हीलर

1
है Car myCar;इतना बेहतर है?
GlenPeterson

@ मेसन व्हीलर: यदि हम अपनी भाषा के निर्माण को उन लोगों तक सीमित रखते हैं, जिनका हम दुरुपयोग नहीं कर सकते, तो हम बहुत कुछ करने में सक्षम नहीं हैं, क्या हम हैं? किसी को भी मामले की संवेदनशीलता का दुरुपयोग करने की सलाह "नहीं" है।
डेविड थॉर्नले 14
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.