2012-01-12 11 views
24

हाल ही में, सी # का उपयोग करके, मैंने लैटिन वर्ण ñ का उपयोग करके एक विधि पैरामीटर घोषित किया, और मैंने अपने पूरे समाधान को बनाने (संकलित) करने की कोशिश की और यह काम करता है, इसलिए मैं अपने प्रोग्राम को निष्पादित करने में सक्षम था। लेकिन मुझे यह जानकर उत्सुकता है कि सी # में लिखे गए स्रोत कोड में लैटिन अक्षरों जैसे विशेष पात्रों का उपयोग करना गलत है? यदि यह गलत है, तो क्यों?क्या सी # स्रोत कोड, जैसे "ñ" में विशेष वर्णों का उपयोग करना गलत है?

यह इसके अलावा अधिक है सुपाठ्य और सार्वभौमिक अंग्रेजी में कोड लिखने के लिए, वहाँ किसी भी अन्य कारण एक सी # स्रोत कोड में विशेष वर्ण का उपयोग नहीं करने के लिए कर रहे हैं?

+2

मैं दुनिया भर में शर्त स्रोत कोड प्रोग्रामर की मूल भाषा में लिखी टिप्पणियों से भरा हुआ है। तो नहीं, यह नहीं देख सकता कि यह गलत कैसे हो सकता है। –

+0

संबंधित: http://programmers.stackexchange.com/questions/1483/do- लोग-in-non-english-speaking-countries-code-in-english – naveen

+2

लेकिन, * टिप्पणियों के अलावा *, ** सदस्यों के नाम के बारे में क्या ** जैसे विधियों, तर्क, आदि ...? –

उत्तर

22

मुझे इसे कई प्रश्नों में तोड़ने दें।

विनिर्देश सी # पहचानकर्ता, तार में गैर रोमन पत्र, और इतने पर उपयोग करने के लिए के अनुसार है यह कानूनी?

हाँ, बिल्कुल। यूनिकोड विनिर्देश पत्र के रूप में वर्गीकृत कोई भी चरित्र कानूनी है। सटीक विवरण के लिए विनिर्देश देखें।

क्या सी # कार्यक्रमों में गैर-रोमन अक्षरों के संबंध में कोई तकनीकी समस्या है?

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

इसके अलावा, बहुत से लोग पुराने-पुराने संपादकों का उपयोग करते हैं; मैंने सीखा था कि 1 9 80 के दशक के अंत में वाटकॉम पर प्रोग्राम कैसे किया जाए और मैं अब भी अपने संपादक के रूप में वाटकॉम VI का उपयोग करता हूं। मैं कभी-कभी दृश्य स्टूडियो में जितना तेज़ी से कोड कर सकता हूं क्योंकि 23 साल के अभ्यास के बाद मेरी उंगलियां वास्तव में बहुत अच्छी हैं। (हालांकि इन दिनों मैं लगभग सबकुछ के लिए विजुअल स्टूडियो का उपयोग करता हूं।) जाहिर है 1 9 80 के दशक में लिखे गए एक संपादक को यूनिकोड के साथ समस्या होगी।

क्या सी # कार्यक्रमों में गैर-रोमन अक्षरों के संबंध में कोई गैर-तकनीकी समस्याएं हैं?

जाहिर है, हाँ।

class List<τ> : IEnumerable<τ> 

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

degrees = 180.0 * radians/π; 

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

+3

मुझे सामान्य प्रकार के पैरामीटर और गणित संबंधी अभिव्यक्तियों के लिए यूनानी अक्षरों का उपयोग करने का आपका विचार पसंद है। –

+0

मुझे लगता है कि आपका मतलब "आर्केन" कुंजी संयोजन था? – phoog

+1

जिज्ञासा से, आप vi के आधुनिक संस्करण का उपयोग क्यों नहीं करते हैं, जैसे gvim? – svick

0

जब तक यह संकलित करता है मुझे लगता है कि यह उपयोग करना ठीक है, जो लोग अंग्रेजी बोलते हैं, विशेष पात्र कहते हैं। मैं स्वीडन में रहता हूं और यहां हमारे पास अक्षर ÅÄÖ है जो अंग्रेजी में nonexistent है। बहुत से लोग प्रोग्राम लिखने में सक्षम होने के लिए अपने कार्यक्रमों में ÅÄÖ का उपयोग करते हैं ताकि एक स्वीडिश डेवलपर समझ सके। कभी-कभी ऐसे शब्द होते हैं जिनके पास अंग्रेजी में कोई अच्छा अनुवाद नहीं होता है और फिर स्वीडिश शब्द अधिक स्पष्टीकरणपूर्ण होता है।

6

जोड़ा गया यह पहली टिप्पणी के आधार पर बिट:

इस सवाल का जवाब नहीं है ... ओ पी पूछ नहीं है कि यह अनुमति दी है (जाहिर है), लेकिन क्या यह गलत है - थॉमस लेवेस्क

ठीक है, मुझे इसे और अधिक सीधे संबोधित करते हैं:

यह इस तरह के एकमें लैटिन वर्णों के रूप में विशेष वर्णों का उपयोग करने के लिए गलत हैस्रोत कोड सी # में लिखा है? यदि यह गलत है, तो क्यों?

विनिर्देश की परिभाषा के अनुसार, यह "गलत" नहीं है (नीचे देखें)।

, इसके अलावा यह अधिक स्पष्ट और सार्वभौमिक अंग्रेजी में कोड लिखने के लिए वहाँ किसी अन्य कारण से एक सी # स्रोत कोड में विशेष वर्ण का उपयोग नहीं करने के लिए कर रहे हैं?

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


C# ECMA Specification पृष्ठ 70 से

:

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

identifier:: 
    available-identifier 
    @ identifier-or-keyword 

available-identifier:: 
    An identifier-or-keyword that is not a keyword 

identifier-or-keyword:: 
    identifier-start-character 
    identifier-part-charactersopt 

identifier-start-character:: 
    letter-character 
    _ (the underscore character U+005F) 

identifier-part-characters:: 
    identifier-part-character 
    identifier-part-characters 
    identifier-part-character 

identifier-part-character:: 
    letter-character 
    decimal-digit-character 
    connecting-character 
    combining-character 
    formatting-character 

letter-character:: 
    A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl 
    A unicode-escape-sequence representing a character of classes Lu, Ll, Lt, Lm, Lo, or Nl 

महत्वपूर्ण बिट है क्या कल्पना के रूप में परिभाषित एक letter-character

यह विशेष रूप से शामिल हैं: A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl

चरित्र आप का उल्लेख (ñ unicode reference) श्रेणी "लू" (Letter, Uppercase) जो विशेष रूप से एक पहचानकर्ता में विनिर्देश द्वारा अनुमति दी है के अंतर्गत आता है।

+3

यह सवाल का जवाब नहीं देता है ...ओपी यह नहीं पूछ रहा है कि इसकी अनुमति है (जाहिर है यह है), लेकिन क्या यह गलत है –

+0

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

+0

* यदि इसे विनिर्देशन की अनुमति है तो यह परिभाषा द्वारा "गलत" * है: मैं असहमत हूं ... कुछ कानूनी व्यवहार हो सकता है भले ही यह कानूनी है –

3

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

जब आप अनुवाद करना चाहते हैं तो यह बेहद दर्दनाक है - एक ऐसी भाषा से जिसे आप एक शब्द नहीं जानते हैं - परिवर्तनीय नाम या कोड के एक टुकड़े के आसपास टिप्पणियां जो आप डिबगिंग कर रहे हैं।

एक और मुद्दा यह है कि भाषा स्वयं अंग्रेजी में लिखी जाती है।

बेशक यह एक व्यक्तिगत वरीयता है।

+1

यह विशेष रूप से परेशान होता है जब आपके पास एक विदेशी भाषा में पहचानकर्ता होता है जिसे आप यह भी नहीं जानते कि कैसे उच्चारण करें ... –

+2

@ थॉमस लेवेस्क्यू यह आपके लिए भी परेशान है अंग्रेजी में एक पहचानकर्ता जिसे आप यह भी नहीं जानते कि कैसे उच्चारण करें :-) – phoog

5

घर पर चारों ओर बजाना, मैं अक्सर Func पैरामीटर λ नाम दूंगा क्योंकि यह मुझे ऐसा करने के लिए प्रेरित करता है।

कोड के लिए कोई भी व्यक्ति देखेगा, मैं किसी को किसी कठिन मामले में टाइपिंग नहीं करूँगा क्योंकि यह मुझे किसी दिए गए मामले में गैर-लैटिन पत्र का उपयोग करने के लिए तैयार करता है। यह मनोरंजन के लिए जगह नहीं है।

ñ जैसे एक सामान्य सामान्य लैटिन अक्षर के साथ, यदि मेरे पास इसका उपयोग करने वाले ऋण-शब्द का उपयोग करने का एक अच्छा कारण था, तो इसका उपयोग करने में मुझे कोई योग्यता नहीं होगी। उसने कहा, यह कभी नहीं आया है। एक डायक्रिटिक के साथ एकमात्र ऋण-शब्द के बारे में मैंने कभी भी कोडिंग में उपयोग किया है façade है, लेकिन यह कंप्यूटिंग संदर्भ में उपयोग में इतना लंबा रहा है और इसलिए इसे अक्सर मुखौटा रूप में देखा जाता है जो मुझे लगता है कि मुखौटा ठीक वैसे ही बहाना से प्राप्त मैं बाद मैं उपयोग अंग्रेजी के रूप में इस्तेमाल किया वर्तनी होने के बावजूद रंग के लिए एक कंप्यूटिंग शब्द के रूप में रंग के बारे में सोच है, और इसलिए ही कभी प्रयोग करेंगे एक कंप्यूटिंग शब्द के रूप में लिखित अंग्रेजी में façade और रंग

+1

+1! :) –

+0

@RubensMariuzzo मुझे लगता है कि टिप्पणी इस वीडियो के बारे में और कहती है कि किसी के व्यक्तिगत इतिहास में सीएस इतिहास की तुलना में साहित्य और कंप्यूटर प्रोग्रामिंग के बीच बचपन का विभाजन शामिल है :) –

+0

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

संबंधित मुद्दे