क्या "सच" आईएनजी, "गलत" आईएनजी और बूलियन टॉगल करने के लिए शब्दावली है? [बन्द है]


23

कहते हैं कि मैं एक तकनीकी बैठक में अपने कोड का वर्णन करने की कोशिश कर रहा हूं।

सबसे पहले, मैंने बूलियन foobarको सेट कियाtrue

तथा

दूसरा, मैंने बूलियन foobarको सेट कियाfalse

थोड़ा सा बुरा लगता है। अगर foobarमुझे टोका गया, तो मैं शायद कह सकता हूं,

तीसरा, मैं टॉगल करता हूं foobar

यहाँ निहितार्थ के माध्यम से, आप इसके बूलियन को जानते हैं। तो मैं करने में सक्षम होना चाहिए:

चौथा, मैं Truthify foobar

तथा

पाँचवाँ, मैं फ़ॉसीवर फ़ॉस्बोर

जो निहितार्थ के माध्यम से भी होगा, मेरे श्रोताओं को बताएगा कि हम एक बूलियन चर के साथ काम कर रहे हैं? क्या इसके लिए उचित शब्दावली है? धन्यवाद।


16
"मैंने सच / झूठ के लिए फोबार सेट किया है" यह चिंताजनक नहीं है, और यह स्पष्ट है कि यह एक बूल है। "टॉगल" श्रोताओं, आईएमओ के लिए बिल्कुल स्पष्ट है।
फ़िलिप मिलोवानोविक

8
"सबसे पहले, मैं बूलियन फोब्बर को सही पर सेट करता हूं और दूसरा, मैं बूलियन फोब्बर को झूठे में सेट करता हूं"। क्या आप इसे पहली जगह में झूठ नहीं बोल सकते थे? ;)
डेविड अरनो

2
मुझे हमेशा लगा कि इसे फ़्लिपिंग कहा जाता है, लेकिन जाहिर है कि बिट्स के लिए यह शब्द है , बूल नहीं
e_i_pi

16
मैं पढ़ा था कपट एक जालसाजी बनाने और नहीं गलत पर मान सेट करने के लिए बराबर के रूप में।
कोडइन्चोस

6
क्या आप वाकई इतने निचले स्तर पर अपने कोड का वर्णन करने की उम्मीद कर रहे हैं? निश्चित रूप से अगर कोई इस तरह के निम्न स्तर का विवरण चाहता है, तो वे सिर्फ कोड पढ़ेंगे। मैं यह नहीं कह रहा हूं कि इस तरह की शब्दावली का उपयोग करने का कोई कारण नहीं है, लेकिन मुझे उम्मीद है कि यह दुर्लभ होगा।
डुकलिंग

जवाबों:


52
  • मान को सही पर सेट करना इसे सेट कर रहा है
  • इसे असत्य पर सेट करना स्पष्ट है।
  • वर्तमान मूल्य को बदलना यह toggling है।

आप निश्चित रूप से "इसे सही पर सेट करना" और "इसे झूठी पर सेट करना" भी उपयोग कर सकते हैं ।


10
मैं इसे क्लीयर करने के लिए किसी मान को झूठा स्थापित करने से संबंधित नहीं हूं। मेरे लिए समाशोधन का अर्थ है: न तो सच और न ही असत्य।
पीटर बी

49
@ पीटर: ठीक है, यह संदर्भ पर निर्भर करता है; यदि हम एक बूलियन ध्वज के बारे में बात कर रहे हैं, तो "सेटिंग" और "समाशोधन" ध्वज एक काफी सामान्य शब्दावली है।
फिलिप मिलोवानोविक

7
@ FilipMilovanović वेरिएबल्स के संदर्भ में, वैरिएबल सेट करने का मतलब उक्त वेरिएबल के मान को निर्दिष्ट करना है, बूलियन वैरिएबल के संदर्भ में यह मान सही या गलत हो सकता है। यह कहना अजीब होगा: हे, एक चर सेट करने का मतलब है कि इसके लिए एक मूल्य निर्दिष्ट करना ... जब यह एक बूलियन चर है, तब वास्तव में जब हम इसे सेट करते हैं, तो हमारा मतलब है कि हम मूल्य निर्धारित करते हैं: "सच"
पीटर बी

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

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

66

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

  • एक सेवा? शुरू / सही / गलत के बजाय शुरू / रोकें
  • एक खेल इंजन में एक विशेष प्रभाव? चालू बंद
  • एक विद्युत संकेत? सेट / रीसेट
  • ...

इस तरह आप अधिक प्राकृतिक शब्दों में बात करेंगे। और इस प्रकार आपकी बैठक में, "फ़ॉबर्स को सच करने के बजाय फिर इसे फ़ॉसीलाइज़ करना" के बजाय आप "फ़ॉबोर शुरू करें, फिर इसे रोकें" (यदि फ़ॉबोर एक सेवा है, तो वास्तव में)।

जब आपको वास्तव में बूलियन मूल्य के बारे में बात करने की आवश्यकता होती है, तो आप "सेट / रीसेट", या "सेट टू ट्रू" और "सेट टू झूठ" के साथ जा सकते हैं। "टॉगल" सभी संदर्भों में काफी अच्छा लगता है।

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


16
सहमत होना है ... बूलियन कार्यान्वयन है जो मॉडल आप के बारे में वास्तव में बात कर रहे हैं ... तो इसके बजाय इसके बारे में बात करें!
है_फैक्टर

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

1
इसके अलावा, शब्दावली का यह उपयोग कोड के रूप में भी अनुवाद करता है; यह अक्सर होता है - हमेशा निश्चित रूप से नहीं - अंतर्निहित बूलियन प्रकार के बजाय एक दो मूल्य का उपयोग करने के लिए बेहतर; signal = HighVoltageया signal = ActiveIMHO की तुलना में बहुत स्पष्ट है signal = true
घन

ध्यान दें कि बूलियन प्रॉपर्टी / वैरिएबल का नाम हमेशा वैल्यू के लिए आपके द्वारा उपयोग किए जाने वाले नाम को तुरंत प्रकट करेगा। सोचो की isStarted, isActive, isCaseSensitive, mockConnection, ... @PieterB: मैं आंशिक रूप से आपसे सहमत हूँ। "बूलियन सेट करें" का अर्थ स्वाभाविक रूप से यह सच करने के लिए सेट नहीं है। हालांकि, " isActiveध्वज को सेट करें " को यथोचित रूप से व्याख्या किया जा सकता है ताकि इसे सही करने के लिए सेट किया जा सके।
'12

1
@ जुबली: मैं असहमत हूं। भविष्य का विस्तार एक तरफ, एक बाइनरी एनम अनावश्यक लगता है। signal = trueवास्तव में स्पष्ट नहीं है, लेकिन यदि आप उपयोग करने जा रहे हैं signal = Activeतो आप भी उपयोग कर सकते हैं isSignalActive = true। ध्यान दें कि यह मुख्य रूप से उन विवरणों पर लागू होता है जो स्पष्ट रूप से परस्पर अनन्य और सटीक पूरक हैं। सक्रिय / निष्क्रिय बिल को फिट करता है। हाईवोल्टेज नहीं करता है, क्योंकि "उच्च वोल्टेज नहीं" उदाहरण के लिए "कम वोल्टेज" हो सकता है, या इसका मतलब "कम या मध्यम वोल्टेज" हो सकता है। उत्तरार्द्ध मामले में, बूलियन तर्क स्पष्ट रूप से लागू नहीं होता है। पूर्व में, यह करता है।
Flater

2

मुझे "सेट" / "स्पष्ट" पसंद है, लेकिन अपने वाक्यांशों में अस्पष्टता से सावधान रहें। जैसा कि फ़िलिप बताते हैं , "सेट द बूल वेरिएबल" का अर्थ वैरिएबल के लिए कुछ मान लिखने के लिए लिया जा सकता है। लेकिन "झंडा स्थापित करना" अधिक स्पष्ट है।


संबंधित शब्दावली: 0 / गैर-शून्य पूर्णांक को 0/1 मान में बदलना "बूलियनाइजिंग" कहलाता है

यदि आप वास्तव में एक पूर्णांक के रूप में 0/1 मान का उपयोग करते हैं (एक सही / गलत के रूप में bool), तो आप उस शब्द का उपयोग करना चाह सकते हैं। अन्यथा यह केवल तभी सामने आएगा जब आप संचालकों के प्रदर्शन की लागत के बारे में बात कर रहे हों। (या यदि आप मैन्युअल रूप से एक SIMD के साथ वेक्टरिंग कर रहे हैं, तो प्रत्येक वेक्टर तत्व में सभी-शून्य / ऑल-वन बिट्स का उत्पादन करने की तुलना करें)।

C और C ++ में, कोई boolभी स्पष्ट रूप से एक पूर्णांक में 0 या 1 के रूप में बदल सकता है, और सामान्य कार्यान्वयन पर boolएक-बाइट मान के रूप में संग्रहीत किया जाता है जो कि 0 या 1 है (न कि किसी भी गैर-शून्य मान)। कुशल अनुमति देता है a && b, लेकिन व्यवहार में कई सी संकलकों ने अनुकूलन खो दिया है


bool booleanize(int a) { return a; }   // C++

यह फ़ंक्शन retअधिकांश आर्किटेक्चर पर कई निर्देशों (शामिल नहीं ) के लिए संकलित करता है । (एमआइपी एक दिलचस्प अपवाद होने के नाते, एक अलग ध्वज / शर्त-कोड रजिस्टर के बजाय तुलना-में-रजिस्टर निर्देशों का होना)। x86-64, MIPS और ARM थंब के लिए गॉडबॉल्ट कंपाइलर एक्सप्लोरर पर, हम x86-6 संस्करण देख सकते हैं:

    test    edi, edi    # set flags according to   a & a
    setne   al
    ret                 # return value in AL, the low byte of RAX

क्षमा करें कि किस बूलियनिंग को थोड़ा बड़ा / ऑफ-टॉपिक मिला है!


0

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


-1

"सेटिंग" एक चर के लिए एक मूल्य निर्दिष्ट करने के कार्य का वर्णन करने का सही तरीका है। यदि आप इसके बारे में पांडित्य प्राप्त करना चाहते हैं, तो आप इसे "असाइनमेंट" कह सकते हैं, लेकिन "सेट" बहुत प्रचलित है। वास्तव में, यह काम करने के लिए setFoobar()(और getFoobar()) विधियों को लिखने के लिए मुहावरेदार जावा है । C # इसे getऔर setसंपत्ति परिभाषाओं के साथ एक कदम आगे ले जाता है ।

निहितार्थ के माध्यम से "सच्चाई" और "मिथ्याकरण" का उपयोग करने के बारे में आपके दूसरे बिंदु के संबंध में, मेरे श्रोताओं को बताएं कि हम एक बूलियन चर के साथ काम कर रहे हैं ", आप पहले से ही अपने श्रोताओं को बूलियन कह रहे हैं जब आप कहते हैं:"

मैंने सेट Foobarकियाtrue


1
बूलियन गुणों को लौटाने वाले तरीकों के लिए जावा में 'मानक' वास्तव में हैisFoobar()
जिमीजैम

-1

Assert या Retract का उपयोग भी किया जा सकता है, जब प्रायः प्रोलॉग में सरल चर के बजाय प्रस्तावों के बारे में बात करते हैं। आमतौर पर बूलियन मूल्यों (सेट / स्पष्ट ध्वज या बिट, सक्षम / अक्षम डिवाइस या मोड, assert / पीछे हटने का प्रस्ताव, शायद अधिक) के लिए एक से अधिक सामान्य शब्द होने के बजाय, बूलियन का प्रतिनिधित्व करने के आधार पर अलग-अलग शब्द हैं।


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

@ क्रिस मैं नहीं जानता कि आप क्या सोचते हैं कि प्रोग्राम को प्रोलोग करने वाले लोग प्रोग्रामर नहीं हैं, लेकिन यह 1972 में प्रोलॉग में इस्तेमाल किया गया था, इसलिए यह सी मैक्रो है जिसने मौजूदा अर्थ को बदल दिया है।
पीट किर्कम

-1

से एक बूलियन के मूल्य को बदलने के trueलिए false, या इसके विपरीत को नकारना कहा जाता है ।

एक बूलियन का मान निर्धारित करने के लिए बूलियन falseको गलत बताया जाता है । अगर आप "सत्य" कहेंगे तो मैं आपको समझूंगा, हालांकि, यह सही नहीं है। मुझे यकीन नहीं है कि क्रिया कुछ बनाने के लिए है true, इसलिए यह सही हो सकता है।

इससे पहले कि आप "सचाई" विली-निली का उपयोग करना शुरू करें, मैं बेहतर उत्तर के साथ किसी का इंतजार करूंगा।


1
यहाँ समस्या यह है कि आप शब्दों को नकारने , गलत तरीके से इस्तेमाल कर सकते हैं , लेकिन मैं क्रमशः टॉगल और रीसेट / स्पष्ट उपयोग करूँगा । वास्तव में इस सवाल को पढ़ने तक, मैं कभी भी झूठ नहीं बोलूंगा । शायद मैं अभी बूढ़ा हो रहा हूँ और मैं इस साल के ट्रेंडी शब्दों के साथ डेट नहीं कर रहा हूँ :)
डेविड अर्नो

7
'गलत' का अंग्रेजी भाषा में एक अर्थ है जो वास्तव में बूलियन चर के लिए आपके उपयोग के साथ संरेखित नहीं करता है; यदि आपने मुझे बताया कि आप अपने चर को "गलत" बता रहे हैं तो मैं समझ सकता हूं कि आप क्या कहना चाह रहे हैं, लेकिन मैं सबसे पहले आपको बताऊंगा कि जैसा कि आप मुझे बताना चाहते हैं कि आप उन मूल्यों के बारे में झूठ बोल रहे हैं।
घन

1
आईएमओ "मिथ्याकरण" के विपरीत अंग्रेजी में "मुखर" होगा, लेकिन वह ("जोर") एक प्रोग्रामर को गलत प्रभाव देता है।
क्रिसडब्ल्यू

-3

एक बूलियन एक SPST (सिंगल पोल, सिंगल थ्रो) इलेक्ट्रिकल स्विच के बराबर है: एक इसे चालू या बंद करता है


2
" doneचर चालू करें " या " errorचर बंद हो गया है" दोनों ध्वनि थोड़ी दूर, कम से कम मेरे लिए। अन्य उत्तरों द्वारा सुझाए गए विकल्प अधिक प्रचलित हैं - " doneचर / बूल / झंडे को सही पर सेट करें ", या " errorध्वज को साफ़ किया गया है।"
सेबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.