क्या वैरिएबल नामों में यूनिकोड वर्णों का उपयोग करना बुरा है? [बन्द है]


82

मैंने हाल ही में पायथन 3 के लिए एक रैंकिंग एल्गोरिथ्म, एलेग्स्किल को लागू करने की कोशिश की।

यहाँ गणित क्या दिखता है:

वैकल्पिक शब्द

सच में नहीं।

यह तो मैंने क्या लिखा है:

t = (µw-µl)/c  # those are used in
e = ε/c        # multiple places.
σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

मैं वास्तव में इसे स्वीकार नहीं करने के लिए अजगर 3 की दुर्भाग्यपूर्ण है सोचा या ²चर नाम के रूप में।

>>> √ = lambda x: x**.5
  File "<stdin>", line 1
    √ = lambda x: x**.5
      ^
SyntaxError: invalid character in identifier

क्या मैं अपने दिमाग से बाहर हूं? क्या मुझे केवल ASCII संस्करण के लिए सहारा लेना चाहिए था? क्यों? क्या केवल फॉर्मूला के साथ समानता के लिए सत्यापन के लिए ASCII से ऊपर का संस्करण कठिन नहीं होगा?

ध्यान रहे, मैं समझता हूं कि कुछ यूनिकोड ग्लिफ़ एक दूसरे की तरह दिखते हैं और कुछ I (या यह है कि some) या ▗▖ सिर्फ लिखित कोड में कोई अर्थ नहीं निकाल सकते हैं। हालाँकि, मैथ्स या एरो ग्लिफ़ के मामले में ऐसा नहीं है।


अनुरोध के अनुसार, ASCII केवल संस्करण की तर्ज पर कुछ होगा:

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

... एल्गोरिथ्म के प्रत्येक चरण के अनुसार।


58
यह पागल है, पूरी तरह से अपठनीय और अकस्मात शांत है।
डोमिनिक मैकडोनेल

2
यूनिकोड के बारे में बात कर रहे हैं ... कोडिंगहोरर.कॉम
blog/

3
मुझे यह बहुत अच्छी बात लगती है कि पायथन अंकगणितीय परिचालनों को चर के रूप में स्वीकार नहीं करता है। एक वर्गमूल चिह्न को वर्गमूल लेने के संचालन को निरूपित करना चाहिए, और एक चर नहीं होना चाहिए।
डेविड थॉर्नले

4
@ डेविड, पायथन में ऐसा कोई भेद नहीं है। वास्तव में, sqrt = lambda x: x**.5मुझे एक फ़ंक्शन मिलता है (अधिक सटीक, एक कॉल करने योग्य) sqrt(2) => 1.41421356237:।
21

4
OutputStream.🚽;

जवाबों:


54

मैं दृढ़ता से लगता है कि बस की जगह σके साथ sया sigmaबेवकूफ हो सकता है, मस्तिष्क मृत की सीमा पर।

संभावित लाभ क्या है? अच्छा चलो देखते हैं …

  • क्या यह पठनीयता में सुधार करता है? नहीं, मामूली में नहीं। यदि ऐसा होता, तो मूल सूत्र निस्संदेह लैटिन अक्षरों का भी उपयोग होता।

  • क्या यह लेखन क्षमता में सुधार करता है? पहली नज़र में, हाँ। लेकिन दूसरे पर, नहीं। क्योंकि यह सूत्र कभी भी बदलने वाला नहीं है (ठीक है, "कभी नहीं")। आमतौर पर कोड को बदलने की आवश्यकता नहीं होगी, न ही इन चरों का उपयोग करके इसे विस्तारित करने की। इसलिए राइटिबिलिटी है - सिर्फ एक बार - यह मुद्दा नहीं है।

व्यक्तिगत रूप से, मुझे लगता है कि गणितीय सूत्रों पर प्रोग्रामिंग भाषाओं का एक फायदा है: आप सार्थक, अर्थपूर्ण पहचानकर्ता का उपयोग कर सकते हैं। गणित में, यह आम तौर पर ऐसा नहीं होता है, इसलिए हम एक-अक्षर वाले चर का सहारा लेते हैं, कभी-कभी उन्हें ग्रीक बनाते हैं।

लेकिन ग्रीक समस्या नहीं है। गैर-वर्णनात्मक, एक-अक्षर पहचानकर्ता हैं।

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


3
कुछ उपकरण यूनिकोड वर्ण नहीं पढ़ सकते, भले ही प्रोग्रामिंग भाषा उनके उपयोग का समर्थन करती हो। मैं इसे गैर-यूनिकोड चर नामों का उपयोग करने के लिए एक मस्तिष्क-मृत निर्णय नहीं कहूंगा, और यह आपके पोस्ट के 2.5 साल बाद भी सही है।
गैरी एस बुनकर

44
@ गैरी "कुछ उपकरण यूनिकोड नहीं पढ़ सकते हैं" - इसलिए उपकरण बदलें, वे बकवास कर रहे हैं। क्षमा करें, यह 2013 है और मेरे पास ऐसे उपकरणों के लिए शून्य सहानुभूति और यहां तक ​​कि कम धैर्य है। दोषपूर्ण उपकरणों के लिए लगातार खानपान प्रगति को रोकता है।
कोनराड रुडोल्फ

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

3
@ मुझे लगता है कि "उपकरण बदलें" एक उपयुक्त उत्तर है। आपका उदाहरण विशेष रूप से ऐसे मामले को दिखाता है: जावा .propertiesफाइलें पार्स करने के लिए तुच्छ हैं। यदि आप वास्तव में एक उपकरण श्रृंखला के साथ काम करने के लिए हुए हैं, जो .propertiesफ़ाइलों द्वारा समर्थित है , तो यूनिकोड का समर्थन नहीं किया है, यह पूरी तरह से उचित है कि कहा गया उपकरण श्रृंखला को छोड़ दें (या तो इसे स्वयं बदलें, एक विकल्प खोजें, या, सबसे खराब स्थिति में, आयोग एक )। बेशक यह विरासत प्रणालियों पर लागू नहीं होता है। लेकिन विरासत प्रणालियों के लिए सर्वोत्तम प्रथाओं के लिए कोई भी विचार कभी लागू नहीं होता है।
कोनराड रुडोल्फ

8
इन "इंटरचेंज" समस्याओं को आप मुख्यतः जावा और विंडोज डेवलपर्स की समस्या कहते हैं। अधिकांश लिनक्स दुनिया एक दशक पहले UTF-8 पर मानकीकृत थी। यह निश्चित रूप से एक टूलकिन समस्या है। खराब साधनों का उपयोग करना बंद करें।
अमीर रेमर

33

व्यक्तिगत रूप से, मुझे उस कोड को देखने से घृणा होगी जहां मुझे इसे टाइप करने के लिए चरित्र मानचित्र को फिर से लाना होगा। भले ही यूनीकोड ​​एल्गोरिदम में निकटता से मेल खाता हो, लेकिन यह वास्तव में तत्परता और संपादित करने की क्षमता पर चोट कर रहा है। कुछ संपादकों के पास एक फ़ॉन्ट भी नहीं हो सकता जो उस चरित्र का समर्थन करता हो।

क्या एक विकल्प के बारे में और बस ऊपर है //µ = uऔर ascii में सब कुछ लिख?


14
वैसे, मान लें कि सभी कीबोर्ड मानक कोडिंग कुंजी को आराम से उजागर नहीं करते हैं। मेरे कीबोर्ड लेआउट को टाइप करने के लिए तीन कुंजी की आवश्यकता है {और }(जो ttys btw में विफल रहता है) और पूरी तरह से अभाव है `और ~... किसी भी बैश स्क्रिप्ट को मुझे चरित्र मानचित्र का उपयोग करने की आवश्यकता क्यों नहीं होगी, अगर मैं एक कस्टम कीमैप का उपयोग नहीं कर रहा था? :)
बैड

4
मैंने अपने मूल निवासी के साथ एक ह्युनी कीबोर्ड स्थापित किया है, और एक कीस्ट्रोक वाले लोगों के बीच स्विच कर सकता हूं। IM / ईमेल पर गणित के बारे में बात करते समय यह उपयोगी होता है ... और मैंने पहले ही इसे अजगर लिपियों में उपयोग करने के बारे में सोचा था।
लियोरी

18
ओह। सादे लोगों द्वारा सिर्फ ग्रीक अक्षरों को बदलना? कोई फायदा नहीं हुआ। सार्थक चर नामों का उपयोग करें, या कागज से नामों के साथ छड़ी करें। रचनात्मक होने का कोई कारण नहीं।
कोनराड रुडोल्फ

12
बस और μ ... μ अप मिश्रित नहीं होते हैं
endolith

4
उचित संपादकों के पास यूनिकोड के लिए उचित इनपुट विधियां हैं जो इस तरह कोड को संपादित करना आसान बनाती हैं। उदाहरण के लिए, Emacs (अन्य चीजों के बीच) का समर्थन करता है TeXऔर rfc1345TeXयह कैसा लगता है; यह आपके द्वारा लिखे जाने की सुविधा देता है \sigmaके लिए σऔर \toके लिए rfc1345आप की तरह कुछ संयोजनों देता है &s*के लिए σऔर &->के लिए । अंगूठे के एक नियम के रूप में, मैं संपादकों का उपयोग करने वाले प्रोग्रामरों को एमएसीएस से कम सक्षम करने के बारे में चिंता नहीं करता हूं।
तिखन जेल्विस

31

यह तर्क मानता है कि आपको यूनिकोड टाइप करने और न ही ग्रीक अक्षर पढ़ने में कोई समस्या नहीं है

यहाँ तर्क दिया गया है: क्या आप पाई या परिपत्र_ अनुपात पसंद करेंगे?

इस मामले में, मैं पीआई को सर्कुलर_रैटो पसंद करूंगा क्योंकि मैंने पीआई के बारे में सीखा है क्योंकि मैं ग्रेड स्कूल में था और मैं उम्मीद कर सकता हूं कि पीआई की परिभाषा हर प्रोग्रामर को उसके नमक के लायक है। इसलिए मुझे r सर्कुलर_रैटो टाइप करने में कोई दिक्कत नहीं होगी।

हालाँकि, इसके बारे में क्या

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

या

σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

मेरे लिए, दोनों संस्करणों जैसे समान रूप से अपारदर्शी हैं, piया π, है सिवाय मैं ग्रेड स्कूल में यह फार्मूला नहीं सीखा। winner_sigmaऔर Wwinइसका मतलब कुछ भी नहीं है, या कोड पढ़ने वाले किसी और के लिए, और न σwही इसका उपयोग करने से यह बेहतर नहीं होता है।

इसलिए, वर्णनात्मक नाम, जैसे total_score, winning_ratioआदि का उपयोग करके ascii नामों का उपयोग करने की तुलना में पठनीयता में बेहतर वृद्धि होगी जो केवल ग्रीक अक्षरों का उच्चारण करते हैं । समस्या यह नहीं है कि मैं ग्रीक अक्षर नहीं पढ़ सकता, लेकिन मैं वर्णों (ग्रीक या नहीं) को चर के "अर्थ" के साथ नहीं जोड़ सकता।

जब आप टिप्पणी करते हैं तो आप निश्चित रूप से समस्या को स्वयं समझ जाते हैं You should have seen the paper. It's just eight pages...:। समस्या यह है कि यदि आप एक पेपर पर अपने वैरिएबल के नामकरण को आधार बनाते हैं, जो पठनीयता के बजाय संक्षिप्तता के लिए एकल-अक्षर के नाम का चयन करता है (भले ही वे ह्यून हैं), तो लोगों को पत्र को एक साथ जोड़ने में सक्षम होने के लिए पेपर पढ़ना होगा "अर्थ"; इसका मतलब है कि आप लोगों को अपने कोड को समझने में सक्षम होने के लिए एक कृत्रिम बाधा डाल रहे हैं, और यह हमेशा एक बुरी बात है।

यहां तक ​​कि जब आप ASCII- केवल दुनिया में रहते हैं, तो दोनों a * b / 2और त्रिभुज क्षेत्र सूत्र के alpha * beta / 2समान रूप से अपारदर्शी प्रतिपादन होते हैं height * base / 2। एकल-अक्षर चर का उपयोग करने की अपठनीयता तेजी से बढ़ती है क्योंकि सूत्र जटिलता में बढ़ता है, और अललेजस्किल सूत्र निश्चित रूप से एक तुच्छ सूत्र नहीं है।

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

जब ग्रेड स्कूल में, मैं निश्चित रूप से इस तरह के प्रतीकों का उपयोग कर गणितीय अभिव्यक्तियों को देखकर बुरा नहीं मानूंगा: +, -, ×, ÷, मूल अंकगणित और met () के लिए एक वर्ग-मूल फ़ंक्शन होगा। ग्रेड स्कूल के बाद, मैं एक चमकदार नए प्रतीकों के अलावा बुरा नहीं होगा: एकीकरण के लिए school। प्रवृत्ति पर ध्यान दें, ये सभी ऑपरेटर हैं। संचालकों को चर नामों की तुलना में बहुत अधिक उपयोग किया जाता है, लेकिन वे अक्सर एक पूरी तरह से अलग अर्थ के लिए उपयोग किए जाते हैं (उस मामले में जहां गणितज्ञ ऑपरेटरों का पुन: उपयोग करते हैं, नया अर्थ अक्सर पुराने अर्थ के कुछ बुनियादी गुणों को रखता है; यह ऐसा नहीं है; जब चर नामों का पुन: उपयोग किया जा रहा है)।

निष्कर्ष में, नहीं, चर नामों के लिए यूनिकोड वर्णों का उपयोग करना बुरा नहीं है; हालाँकि, चर नामों के लिए एकल अक्षर नामों का उपयोग करना हमेशा बुरा होता है, और यूनिकोड नामों का उपयोग करने की अनुमति देना एकल एकल चर नामों का उपयोग करने का लाइसेंस नहीं है।


9
सच कहूं, तो यहां के फॉर्मूले ज्यादा मायने नहीं रखते हैं, भले ही मैं error_on_measured_skill_with_99th_percent_confidenceइसके बजाय इस्तेमाल करूं sigma
badp

4
@ सबद: लंबे नाम! = अच्छे नाम। फिर भी, ऐसे अवसर हैं जहां आपके लिए एक अच्छा नाम चुनना असंभव है (जैसे कि जब आप केवल सूत्र को समझते हैं, लेकिन पूरी तरह से समझ नहीं पाते हैं कि सूत्र के प्रत्येक भाग क्या करते हैं (जो पूरी तरह से अलग स्तर का समझ लेता है), फिर उस स्थिति में, दूसरा सबसे अच्छा विकल्प है कि आप अपने गधे को कुछ टिप्पणियों के साथ कवर करें (उन्हें बाहरी कागज पर भेजने से बेहतर)। एक डेटा शब्दकोश जोड़ें जो बताता है कि चर नामों का क्या उल्लेख है, उदाहरण के लिए // σw = skill level measurement error, आदि
रेयान

1
@badp: ईमानदार होने के लिए, बस उस जानकारी के साथ, उस सिग्मा का अर्थ कुछ ठगने वाले कारक (इसलिए बोलने के लिए) है, यह मुझे सूत्र से थोड़ी बेहतर समझ देता है कि सिग्मा मुझ पर क्या हमला करता है। जब सूत्र को शुरू करने के लिए समझना मुश्किल है, तो आप इसके ऊपर अधिक अपारदर्शिता नहीं जोड़ना चाहते हैं।
रेयान

2
हाँ। इस। दुर्भाग्य से, मैंने अपना जवाब लिखते समय इसे अनदेखा कर दिया।
कोनराड रुडोल्फ

3
खैर, सांख्यिकी से संबंधित कुछ में काम कर किसी को भी जानता है कि σ का अर्थ है "मानक विचलन"। यह उस डोमेन में एक बहुत प्रसिद्ध मानक प्रतीक है।
टीआरआईजी

14

क्या आप कोड को समझते हैं? क्या बाकी सभी को इसे पढ़ने की ज़रूरत है? यदि हां, तो कोई समस्या नहीं है।

व्यक्तिगत रूप से मुझे ASCII- केवल स्रोत कोड के पीछे देखकर खुशी होगी।


किया हुआ। (मुझे लगता है कि आखिरी पंक्ति आप कोड के
ASCII-

4
@badp: नहीं, यह मुझे ASCII- केवल कोड की मृत्यु को देखने के लिए कह रहा था।

जब तक आप यह देखना शुरू नहीं करते हैं कि विंडोज 1252 सिस्टम पर उतरते समय यूनिकोड स्रोत फ़ाइलों का क्या होता है ...

1
@ थोरबजर्न: यदि उनमें बीओएम शामिल है, तो उम्मीद है कि कुछ भी नहीं होगा।

9

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


5
मेरे लिए यह सुनिश्चित करना मुश्किल था कि कोड और फॉर्मूला पहली बार में मेल खाए ...
badp

10
@Paul: सौभाग्य से, यूनिकोड> 10 साल पुराना है ताकि आपत्ति का ध्यान रखा गया हो। और हालांकि अलग-अलग UTF के बीच कोई स्पष्ट विजेता नहीं है, यह एक मुद्दा नहीं है: एक होना चाहिए नहीं था। उन्हें अलग बताना सॉफ्टवेयर के लिए तुच्छ है।
कोनराड रूडोल्फ

1
@ कोनराड: मेरा मतलब है कि अब से 10 साल । कार्यक्रमों की एक उचित संख्या अभी भी यूनिकोड का समर्थन नहीं करती है। इसके अलावा, मैं आपके दावे से असहमत हूं - यह सामान्य रिवर्स रूटीन लिखने के लिए तुच्छ नहीं है जो सभी 3 utfs को संभालता है। एक स्पष्ट विजेता होने की जरूरत है। 3 अलग यूटीएफ का समर्थन करने में कोई मतलब नहीं है (आइए अब भी अन्य कोड पृष्ठों पर विचार नहीं करते हैं)।
पॉल नाथन

3
@Paul: आपको कितनी बार "जेनेरिक रिवर्स रूटीन" लिखने की ज़रूरत है? तीन UTF अलग-अलग उद्देश्यों की पूर्ति करते हैं, और मुझे नहीं लगता कि आप कभी भी समेकन की अपनी इच्छा प्राप्त करने जा रहे हैं।
डीन हार्डिंग

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

5

मैं कहूंगा कि यूनिकोड चर नामों का उपयोग दो कारणों से एक बुरा विचार है:

  1. वे टाइप करने के लिए PITA हैं।

  2. वे अक्सर अंग्रेजी अक्षरों के समान ही दिखते हैं। यही कारण है कि मैं गणित अंकन में ग्रीक अक्षरों को देखकर नफरत करता हूं। P से rho को बताने का प्रयास करें। यह आसान नहीं है।


6
निर्भर करता है कि आप उन्हें टाइप करने के लिए क्या उपयोग कर रहे हैं।
endolith

4

इस एक मामले में, एक जटिल गणित सूत्र, मैं कहूंगा कि इसके लिए जाना चाहिए।

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

कि कह रही है, अगर मैं कभी μ और σ दलदल में मानक कोड है कि आप मुझे विरासत को बनाए रखने की है, मैं होगा जहां आप लाइव पता लगाने के ...


3
  • प्रो: यह अच्छा लग रहा है
  • Con: यूनिकोड वर्ण और इसलिए संपूर्ण अर्थ टूल श्रृंखला में खो सकता है (संपादक, कोड फ़ॉर्मेटर, संस्करण नियंत्रण, पुराने संकलक)

आपके लिए जोखिम कितना बड़ा है? क्या जोखिम जोखिम को कम करता है?


2
उपकरण श्रृंखला? क्या उपकरण श्रृंखला?
badp

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

2

भविष्य में बहुत दूर नहीं होने के बावजूद, हम सभी टेक्स्ट एडिटर / आईडीई / वेब ब्राउज़र का उपयोग करेंगे, जो क्लासिकल ग्रीक वर्णों सहित संपादित पाठ लिखना आसान बनाते हैं, आदि (या शायद हम सभी ने इस "छिपे हुए" का उपयोग करना सीखा होगा। "हमारे द्वारा वर्तमान में उपयोग किए जाने वाले उपकरणों में कार्यक्षमता ...)

लेकिन जब तक ऐसा नहीं होता है, प्रोग्राम सोर्स कोड में गैर ASCII वर्ण कई प्रोग्रामर को संभालना मुश्किल होगा, और इसलिए यह एक बुरा विचार है यदि आप ऐसे एप्लिकेशन लिख रहे हैं जिन्हें किसी और द्वारा बनाए रखने की आवश्यकता हो सकती है।

(संयोग से कारण है कि आपके पास ग्रीक वर्ण हो सकते हैं, लेकिन पायथन पहचानकर्ताओं में वर्गमूल चिह्न सरल नहीं हैं। यूनानी वर्णों को यूनिकोड पत्र के रूप में वर्गीकृत किया गया है, लेकिन वर्गमूल चिह्न एक गैर-अक्षर है; देखें http://www.python.org ; / देव / पेप्स / पेप -3131 / )


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

हाँ, कम या ज्यादा जब हम DVORAK पर स्विच करेंगे। :(
बैड

1
@AndrejaKo लिनक्स में एक IME है जो LaTeX स्टाइल कमांड्स को स्वीकार करता है - अर्थात, आप टाइप करते हैं \muऔर इसे इंस्टेट करते हैं µ
badp

@badp बहुत बहुत धन्यवाद! मैं कोशिश करूँगा कि अगली बार मैं बूट करूँ!
आंद्रेजाको

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

2

आपने यह नहीं बताया कि आप किस भाषा / संकलक का उपयोग कर रहे हैं, लेकिन आमतौर पर चर नामों के लिए नियम यह है कि उन्हें वर्णमाला वर्ण या अंडरस्कोर से शुरू करना चाहिए, और केवल अल्फ़ान्यूमेरिक्स और अंडरस्कोर शामिल हैं। यूनिकोड Un को अल्फ़ान्यूमेरिक नहीं माना जाएगा, क्योंकि यह एक अक्षर के बजाय एक गणितीय प्रतीक है। हालाँकि However हो सकता है (क्योंकि यह ग्रीक वर्णमाला में है) और á को शायद अल्फ़ान्यूमेरिक माना जाएगा।


1

मैंने StackOverflow पर एक ही तरह का प्रश्न पोस्ट किया

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

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

लंबे वर्णनात्मक नामों का उपयोग करने का विकल्प व्यवहार्य नहीं है क्योंकि गणित में, यदि पहचानकर्ता कम नहीं है, तो सूत्र और भी जटिल लगेगा (आप लोगों को क्यों लगता है, XVIII सदी के आसपास, "+" द्वारा "प्लस" को बदलना शुरू कर दिया है) और "माइनस" द्वारा "-?"।

व्यक्तिगत रूप से, मैं कुछ सदस्यता और सुपरस्क्रिप्ट का भी उपयोग करूंगा (मैं इस पृष्ठ से उन्हें केवल कॉपी-पेस्ट करता हूं )। उदाहरण के लिए: (एक पहचानकर्ता के रूप में अजगर को p की अनुमति थी)

√ = math.sqrt #function alias
c² = c**2
σʷ² = σʷ**2
γ² = γ**2
σ′ʷ = √(σʷ² * (1 - (σʷ²/c²)*Wʷⁱⁿ(t, e)) + γ²)

जहाँ मैंने सुपरस्क्रिप्ट का उपयोग किया है क्योंकि यूनिकोड में कोई सबस्क्रिप्ट समान नहीं है। (दुर्भाग्य से, यूनिकोड सबस्क्रिप्ट कैरेक्टर सेट बहुत सीमित है। मुझे उम्मीद है कि एक दिन, यूनिकोड में सबस्क्रिप्टिंग को डायसरिटिक्स माना जाएगा, यानी सबस्क्रिप्ट के लिए एक चार का संयोजन, और सबस्क्रिप्ट किए गए पत्र के लिए एक और चार्ट)

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


0

क्या यह कोड सिर्फ आपके निजी प्रोजेक्ट के लिए है? यदि ऐसा है, तो पागल हो जाएं, जो भी आप चाहते हैं उसका उपयोग करें।

क्या यह कोड दूसरों के उपयोग के लिए है? यानी, और किसी प्रकार का ओपन सोर्स ऐप? यदि ऐसा है, तो आप केवल परेशानी के लिए पूछ रहे हैं क्योंकि विभिन्न प्रोग्रामर अलग-अलग संपादकों का उपयोग करते हैं, और आप निश्चित हैं कि सभी संपादक यूनिकोड का सही समर्थन करेंगे। जब स्रोत कोड फ़ाइल type'd / cat'd है, तो इसके अलावा सभी कमांड शेल इसे सही ढंग से नहीं दिखाएंगे, और यदि आप इसे html के भीतर प्रदर्शित करना चाहते हैं, तो आप मुद्दों पर चल सकते हैं।


0

व्यक्तिगत रूप से मैं इस संदर्भ में गणितज्ञों के लिए एक उपकरण के रूप में प्रोग्रामिंग भाषाओं पर विचार करने के लिए प्रेरित हूं, क्योंकि मैं वास्तव में गणित का उपयोग नहीं करता हूं जो मेरे जीवन में ऐसा कुछ भी दिखता है। : डी और यकीन है, क्यों नहीं ɛ या whatever या जो भी उपयोग करें - उस संदर्भ में, यह वास्तव में अधिक सुपाठ्य है।

(हालांकि, मुझे कहना होगा, मेरी प्राथमिकता सुपरस्क्रिप्ट संख्याओं को समर्थन करने की होगी, क्योंकि प्रत्यक्ष विधि कॉल, चर नाम नहीं। उदाहरण 2 2 = 2 ** 2 = 4, आदि)


-2

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

क्या बुराई है, चर σया sया sigmaया कॉल valueकर रहा है var1, क्योंकि इससे कोई जानकारी नहीं मिलती है।

यह मानते हुए कि आप अपना कोड अंग्रेजी में लिखते हैं (जैसा कि मेरा मानना ​​है कि आपको जहां से भी होना चाहिए), ASCII को आपके चर को सार्थक नाम देने के लिए पर्याप्त होना चाहिए, इसलिए यूनिकोड की कोई वास्तविक आवश्यकता नहीं है।


2
क्या होगा यदि उसने एक कागज़ / कॉपी पेस्ट किया और फिर एक वर्ण चर नामों के बावजूद उसे अपने स्रोत कोड का हिस्सा बना लिया?
ब्रायन

19
इन चर नामों में से बहुत से अर्थ डोमेन के परिचित लोगों के लिए मजबूत हैं। डोमेन से परिचित किसी के लिए, अंग्रेजी नाम सिग्मा या आरएचओ जैसे नामों से कम पठनीय हो सकते हैं ।
dsimcha

3
मुझे डर है कि कुछ ऐसा है जो rank_error_with_99_pct_confidenceइसके लिए बहुत लंबा है और वास्तव में सूत्रों को समझने में आसान नहीं होगा। AllegSkill / TrueSkill उन सिग्मा को बुलाता है, इसलिए मेरा मानना ​​है कि उनके पास जो डोमेन विशिष्ट नाम है, उसे बनाए रखना मेरे लिए पूरी तरह स्वीकार्य है।
badp

3
@ सबद: अच्छे नाम संक्षिप्त और वर्णनात्मक हैं; लेकिन इसका पूर्ण विवरणात्मक होना आवश्यक नहीं है। आपके सिग्मा के लिए, rank_errorप्रलेखन / टिप्पणी में कहीं भी 99 प्रतिशत विश्वास के बारे में अतिरिक्त विवरण का उपयोग करना और रखना पूरी तरह से अच्छा है।
रयान

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

-2

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

पहचानकर्ता में Using या ² का उपयोग करना - इतना नहीं।

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