Чи існує термінологія для "істинного", "помилкового" та змінення булевого? [зачинено]


23

Скажімо, я намагаюся описати свій код на технічній нараді.

По- перше, я встановив булево foobarдоtrue

і

По- друге, я встановив булево foobarдоfalse

здається трохи багатослівним. Якби не foobarбуло, я, певно, можу сказати:

По-третє, я перемикаю foobar

Завдяки цьому, ви знаєте, що це буле. Тож я не можу:

По-четверте, я Truthify foobar

і

В- п'яте, я Підробка Foobar

Що також через імплікацію скаже моїм слухачам, що ми маємо справу з булевою змінною? Чи є для цього належна термінологія? Спасибі.


16
"Я встановив foobar на істинне / хибне" - це не так, і це очевидно, що це бул. "Toggle" слухачам досить зрозумілий, IMO.
Філіп Мілованович

8
"По-перше, я встановив булевий фобар до істинного і, по-друге, я встановив булевий фобар у хибний". Чи не могли ви вперше встановити помилкове значення? ;)
Девід Арно

2
Я завжди думав, що це називається гортанням, але, мабуть , це термін для бітів , а не bools
e_i_pi

16
Я прочитав би фальсифікат як еквівалент створення підробки і не встановив значення false.
CodesInChaos

6
Ви впевнені, що очікуєте, що опишете свій код на такому низькому рівні? Звичайно, якщо хтось хоче такий низький рівень опису, він просто прочитає код. Я не кажу, що ніколи не існує причин використовувати таку термінологію, але я б очікував, що це буде рідкістю.
Герцогство

Відповіді:


52
  • Встановити значення true - це встановити його
  • Якщо встановити значення false, це очистити його.
  • Змінення поточного значення перемикає його.

Ви , звичайно, також можете використовувати "встановлення на істинне" та "встановлення на помилкове" .


10
Я не співвідношую встановлення значення з false як очищення його. Очищення для мене означає: ні правдиве, ні хибне.
Пітер Б

49
@PieterB: Ну, це залежить від контексту; якщо ми говоримо про булевий прапор, то "встановлення" та "очищення" прапора є досить поширеною термінологією.
Філіп Мілованович

7
@ FilipMilovanović У контексті змінних встановлення змінної означає присвоєння значення зазначеній змінній, у контексті булевої змінної це значення може бути істинним або хибним. Було б дивно сказати: ей, встановлення змінної означає присвоєння їй значення ... за винятком випадків, коли це булева змінна, а насправді, коли ми її встановлюємо, ми маємо на увазі, що ми присвоюємо значення: "true"
Pieter B

6
@ PieterB Якщо це не може бути "ні правдою, ні хибністю", то це не бінарний булевий (про що більшість людей думає, коли вони чують слово), а потрійне дійсне / хибне / невизначене. Як сказано, набір / чітка термінологія походить від прапорів. Не всі булеві змінні є прапорами, тому термінологія не підходить для багатьох випадків використання.
Кубік

7
@PieterB: Yeas - дивно було б сказати "встановити змінну bool" і очікувати, що всі зрозуміють, що це означає "встановити його на істинне"; але якщо він представляє прапор, то "встановити прапор" є чимось загальновживаним і означає встановити значення bool, що представляє прапор, істинним (або біт, що представляє прапор до 1). (PS Але відповідь іммібіса це не враховує.)
Філіп Мілованович

66

Якщо це взагалі можливо, а не зосереджуватися на булевому значенні, вам слід спробувати описати, що це означає. Деякі приклади:

  • послуга? start / stop замість start = true / false
  • особливий ефект в ігровому двигуні? увімкнено вимкнено
  • електричний сигнал? встановити / скинути
  • ...

Таким чином ви б поговорили в більш природній формі. І, таким чином, у вашій зустрічі, замість того, щоб "обробляти фоабар, а потім фальсифікувати його", ви просто "запустили б фобар та зупинили його" (якщо foobar - це справді послуга).

Коли вам дійсно потрібно поговорити про булеве значення, ви можете перейти з "встановити / скинути", або "встановити на істинне" і "встановити на помилкове". "Toggle" звучить досить приємно у будь-якому контексті.

А якщо ви працюєте в булевій крамниці (що б це не означало), то вам, мабуть, потрібно більше слів, ніж те, що може запропонувати словник. У цьому випадку truthify та фальсифікація - просто частина вашої мікровимови .


16
Погодьтеся ... булева реалізація, яка моделює те, про що ви дійсно говорите ... так що говоріть про це замість цього!
Можливо_Фактор

2
Мені не подобається говорити про встановлення булевого типу, як про те, щоб це було правдою. Через те, що я працюю зі змінними, вони починають неініціалізовані, тобто в основному ви їх ще не можете використовувати, а акт встановлення змінної (істинна чи помилкова) є ініціалізацією. Якщо налаштування завжди означає справжнє, то це може викликати плутанину.
Пітер Б

1
Крім того, це використання термінології означає також код; Часто - не завжди звичайно - краще використовувати перерахунок двох значень замість вбудованого булевого типу; signal = HighVoltageабо signal = ActiveІМХО набагато зрозуміліше, ніж signal = true.
Кубік

Зауважте, що правильно названа булева властивість / змінна завжди негайно виявить ім'я, яке ви повинні використовувати для значень. Подумайте isStarted, isActive, isCaseSensitive, mockConnection, ... @PieterB: Я частково згоден з вами. "Встановити булевий" не означає, що це встановить значення true. Однак "Встановити isActiveпрапор" може бути інтерпретовано так, що він означає встановлення істини.
Flater

1
@Cubic: Я не згоден. Подальше розширення убік, бінарний перелік здається непотрібним. signal = trueнасправді не зрозуміло, але якщо ви збираєтесь використовувати, signal = Activeто ви можете також використовувати isSignalActive = true. Зауважимо, що це стосується переважно дескрипторів, які явно взаємовиключні та точні доповнення. Активний / неактивний підходить до рахунку. HighVoltage не робить, оскільки "невисока напруга" може означати, наприклад, "низька напруга", або це може означати "низька або середня напруга". В останньому випадку булевий аргумент, очевидно, не застосовується. У першому це роблять.
Flater

2

Мені подобається "встановити" / "зрозуміло", але будьте уважні до двозначності у вашому формулюванні. Як зазначає Філіп , "встановити змінну bool" можна вважати записом певної величини до змінної. Але «встановлення прапора» більш зрозуміле.


Пов'язана термінологія: перетворення 0 / ненульового цілого числа у значення 0/1 називається "булеанізуючим" .

Якщо ви фактично використовуєте значення 0/1 як ціле число (замість як істинне / хибне bool), ви можете використовувати це слово. Інакше він з’явиться, лише якщо ви говорите про вартість операцій, які повинен виконати компілятор. (Або якщо ви векторизуєте вручну за допомогою SIMD порівняння, щоб отримати всі нулі / всі-один біт у кожному векторному елементі).

У C і C ++ a boolможе неявно перетворюватися назад у ціле число як 0 або 1, а в звичайних реалізаціях boolзберігається як однобайтове значення, яке дорівнює 0 або 1 (а не будь-яке ненульове значення). Це дозволяє ефективно a && b, але на практиці багато компіляторів С пропустили оптимізацію .


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

Ця функція компілюється в декілька інструкцій (не включаючи ret) для більшості архітектур. (MIPS є цікавим винятком, маючи інструкції порівняння-реєстру замість окремого регістра прапор / код-код). на досліднику компілятора Godbolt для x86-64, MIPS і ARM ми бачимо, що версія x86-64:

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

Вибачте за цей приклад того, що booleaising має трохи великий / поза темою!


0

Я думаю, що "встановити Foobarна істину" і "встановити Foobarна помилкове" є прямими і лаконічними. Я не вірю, що для цих фраз є окремі слова, і коли вам потрібно бути і технічними, і точними, іноді краще бути готовим бути трохи розмовним, ніж ризикувати заплутати свою аудиторію.


-1

"Установка" - це правильний спосіб описати акт присвоєння значення змінній. Якщо ви хотіли отримати педантичність щодо цього, ви можете назвати це "завданням", але "набір" дуже поширений. Насправді, ідіоматична Java писати setFoobar()getFoobar()) методи для виконання завдання. C # робить крок далі з getі setвизначення власності.

Що стосується вашого другого пункту про використання "truthify" та "falsify" to "через імплікацію, скажіть моїм слухачам, що ми маємо справу з булевою змінною", ви вже говорите своїм слухачам, що змінна є Boolean, коли ви говорите:

Я налаштований Foobarнаtrue


1
"Стандарт" у Java для методів, що повертають isFoobar()
булі

-1

Assert або Retract також можна використовувати, найчастіше, коли йдеться про пропозиції, а не про прості змінні, наприклад, у Prolog. Зазвичай існують різні терміни залежно від того, що представляє булевий, а не один загальний термін для всіх мов, що мають булеві значення (встановити / очистити прапор чи біт, включити / відключити пристрій чи режим, затвердити / відкликати пропозицію, ймовірно, більше).


Я погоджуюся з твердженням , за винятком того, що програмісту, що вже означає щось інше (наприклад, викидання виключення, якщо вираз уже не відповідає дійсності).
ChrisW

@ChrisW Я не знаю, як ви вважаєте, що люди, які програмують Prolog, це не програмісти, але він був використаний у Prolog у 1972 році, тому саме макрос C змінив існуюче значення.
Піт Кіркхем

-1

Для зміни булевого значення з trueна falseабо навпаки називається запереченням .

Встановити значення булевого значення в falseназивається фальсифікацією булевого значення. Я б вас зрозумів, якби ви сказали "truthify", однак, це не здається правильно. Я не впевнений, що таке дієслово для створення чогось true, тому це могло бути правильним.

Я б зачекав, коли хтось із кращою відповіддю завітає до того, як ви почнете користуватися "truthify" willy-nilly.


1
Проблема тут полягає в тому, що ви можете використовувати терміни, що заперечують , фальсифікують , але я б використовував перемикання та скидання / очищення відповідно. Насправді до прочитання цього питання я ніколи не натрапляв на фальсифікацію . Можливо, я просто старію, і я не в курсі модних умов цього року :)
Девід Арно

7
"фальсифікувати" має значення англійської мови, яке насправді не відповідає вашому використанню булевих змінних; Якби ти сказав мені, що ти "фальсифікуєш" свої змінні, я міг би зрозуміти, що ти намагаєшся сказати, але я спершу розберу це, коли ти намагаєшся сказати мені, що ти брешеш про значення, які вони мають.
Кубік

1
IMO навпаки "фальсифікувати" було б "стверджувати", англійською мовою, але це ("затвердити") справляє неправильне враження програміста.
ChrisW

-3

Логічне є еквівалентом SPST (однополюсний, одного кидка) електричний вимикач: один повертає його на або геть .


2
"Увімкніть doneзмінну" або " errorЗмінна вимкнена" обидва звуки трохи вимкнені, принаймні для мене. Альтернативи, запропоновані іншими відповідями, здаються більш поширеними - "Встановити doneзмінну / bool / flag [на істинну]" або " errorПрапор очищено".
Себі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.