Existe-t-il une terminologie pour «vrai» ing, «faux» ing et basculer un booléen? [fermé]

23

Disons que j'essaie de décrire mon code lors d'une réunion technique.

Tout d'abord, j'ai défini le booléen foobarsurtrue

et

Deuxièmement, j'ai défini le booléen foobarsurfalse

semble un peu verbeux. Si a foobarété basculé, je pourrais probablement dire:

Troisièmement, je bascule foobar

Par implication ici, vous savez que c'est un booléen. Je ne devrais donc pas pouvoir:

Quatrièmement, je Truthify foobar

et

Cinquièmement, je falsifie foobar

Lequel, par implication également, dira à mes auditeurs que nous avons affaire à une variable booléenne? Existe-t-il une terminologie appropriée pour cela? Merci.

Akiva
la source
16
"Je mets foobar sur vrai / faux" n'est pas si verbeux, et il est évident que c'est un bool. "Toggle" est assez clair pour les auditeurs, OMI.
Filip Milovanović
8
"Premièrement, j'ai défini le foobar booléen sur true et, deuxièmement, j'ai défini le foobar booléen sur false". N'auriez-vous pas pu simplement le définir faux en premier lieu? ;)
David Arno
2
J'ai toujours pensé que cela s'appelait flipping, mais apparemment c'est le terme pour bits , pas bools
e_i_pi
16
Je lirais falsifier comme équivalent à créer une contrefaçon et à ne pas définir la valeur sur false.
CodesInChaos
6
Êtes-vous sûr que vous êtes censé décrire votre code à un niveau aussi bas? Certes, si quelqu'un veut une description de si bas niveau, il suffit de lire le code. Je ne dis pas qu'il n'y a jamais de raison d'utiliser une telle terminologie, mais je m'attends à ce qu'elle soit rare.
Dukeling

Réponses:

52
  • Définition d' une valeur true est établit ce
  • La définir sur false, c'est la supprimer .
  • Changer la valeur actuelle, c'est la basculer .

Vous pouvez également utiliser "le définir sur vrai" et "le définir sur faux" , bien sûr.

user253751
la source
10
Je ne corrèle pas la définition d'une valeur à false comme la suppression. Effacer pour moi signifie: ni vrai ni faux.
Pieter B
49
@PieterB: Eh bien, cela dépend du contexte; si nous parlons d'un drapeau booléen, alors "définir" et "effacer" le drapeau est une terminologie assez courante.
Filip Milovanović
7
@ FilipMilovanović Dans le contexte des variables, définir une variable signifie assigner une valeur à ladite variable, dans le contexte de la variable booléenne, cette valeur peut être vraie ou fausse. Il serait étrange de dire: hé, définir une variable signifie lui attribuer une valeur ... sauf quand il s'agit d'une variable booléenne, alors en fait lorsque nous la définissons, nous voulons dire que nous assignons la valeur: "true"
Pieter B
6
@PieterB S'il peut être "ni vrai ni faux", ce n'est pas un booléen binaire (ce à quoi la plupart des gens pensent quand ils entendent le mot), mais une chose ternaire vrai / faux / indéterminé. Cela étant dit, la terminologie set / clear provient de drapeaux. Toutes les variables booléennes ne sont pas des indicateurs, donc la terminologie n'est pas appropriée pour de nombreux cas d'utilisation.
Cubic
7
@PieterB: Oui - il serait étrange de dire "définir la variable bool" et de s'attendre à ce que tout le monde comprenne "définir la valeur true"; mais s'il représente un drapeau, alors "mettre le drapeau" est quelque chose de communément utilisé et signifie mettre la valeur du bool représentant le drapeau à vrai (ou le bit représentant le drapeau à 1). (PS Mais la réponse d'Immibis n'en tient pas compte.)
Filip Milovanović
66

Si possible, plutôt que de vous concentrer sur la valeur booléenne, vous devriez essayer de décrire ce qu'elle représente. Quelques exemples:

  • un service? démarrer / arrêter au lieu de commencé = vrai / faux
  • un effet spécial dans un moteur de jeu? Allumé éteint
  • un signal électrique? définir / réinitialiser
  • ...

De cette façon, vous parleriez en termes plus naturels. Et donc lors de votre réunion, au lieu de "véritéifier foobar puis falsifier", il vous suffirait de "démarrer foobar puis de l'arrêter" (si foobar est un service, en effet).

Lorsque vous avez vraiment besoin de parler d'une valeur booléenne, vous pouvez aller avec "set / reset", ou "set to true" et "set to false". "Toggle" sonne plutôt bien dans tous les contextes.

Et si vous travaillez dans une boutique booléenne (quoi que cela puisse signifier), vous avez probablement besoin de plus de mots que ce que le dictionnaire a à offrir. Dans ce cas, la vérité et la falsification ne sont que des éléments de votre microspeak .


la source
16
Je dois être d'accord ... booléen est l'implémentation qui modélise ce dont vous parlez VRAIMENT ... alors parlez-en plutôt!
Maybe_Factor
2
Je n'aime pas parler de la définition d'un booléen pour le rendre vrai. Parce que la façon dont je travaille avec les variables, elles commencent non initialisées, ce qui signifie que vous ne pouvez pas encore les utiliser et l'acte de définir une variable (vrai ou faux) est l'initialisation. Si définir signifie toujours vrai, cela créerait de la confusion.
Pieter B
1
De plus, cette utilisation de la terminologie se traduit également en code; Il est souvent - pas toujours bien sûr - préférable d'utiliser une énumération à deux valeurs au lieu du type booléen intégré; signal = HighVoltageou signal = Activeest à mon humble avis beaucoup plus clair que signal = true.
Cubic
Notez qu'une propriété / variable booléenne correctement nommée révélera toujours immédiatement le nom que vous devez utiliser pour les valeurs. Pensez isStarted, isActive, isCaseSensitive, mockConnection, ... @PieterB: Je suis partiellement d' accord avec vous. "Définir le booléen" ne signifie pas intrinsèquement le mettre à true. Cependant, "Définir l' isActiveindicateur" peut raisonnablement être interprété comme signifiant le mettre à true.
Flater
1
@Cubic: Je ne suis pas d'accord. Outre l'expansion future, une énumération binaire semble inutile. signal = truen'est en effet pas clair, mais si vous allez l'utiliser, signal = Activevous pourriez aussi bien l'utiliser isSignalActive = true. Notez que cela s'applique principalement aux descripteurs qui sont clairement des compléments mutuellement exclusifs et exacts. Actif / Inactif correspond à la facture. HighVoltage ne le fait pas, car "pas de haute tension" pourrait par exemple signifier "basse tension", ou cela pourrait signifier "basse ou moyenne tension". Dans ce dernier cas, l'argument booléen ne s'applique évidemment pas. Dans le premier cas, c'est le cas.
Flater
2

J'aime "set" / "clear", mais attention à l'ambiguïté dans votre phrasé. Comme le souligne Filip , «définir la variable booléenne» pourrait signifier écrire une valeur dans la variable. Mais "mettre le drapeau" est plus clair.


Terminologie associée: transformer un entier 0 / non nul en une valeur 0/1 est appelé "booleanizing" .

Si vous utilisez réellement la valeur 0/1 comme entier (au lieu de comme vrai / faux bool), vous voudrez peut-être utiliser ce mot. Sinon, cela n'apparaîtra probablement que si vous parlez du coût des opérations que le compilateur doit effectuer. (Ou si vous vectorisez manuellement avec un SIMD, comparez pour produire des bits à zéro / tout-en-un dans chaque élément vectoriel).

En C et C ++, a boolpeut implicitement se reconvertir en entier sous la forme 0 ou 1, et sur les implémentations normales boolest stocké comme une valeur d'un octet qui est soit 0 ou 1 (et pas n'importe quelle valeur non nulle). Le permet efficace a && b, mais dans la pratique de nombreux compilateurs C ont manqué d'optimisations .


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

Cette fonction se compile en plusieurs instructions (sans inclure les ret) sur la plupart des architectures. (MIPS étant une exception intéressante, ayant des instructions de comparaison dans le registre au lieu d'un registre d'indicateur / code de condition séparé). sur l'explorateur du compilateur Godbolt pour x86-64, MIPS et ARM thumb , nous pouvons voir que la version x86-64 est:

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

Désolé, cet exemple de ce qu'est la booléenisation est devenu un peu grand / hors sujet!

Peter Cordes
la source
0

Je pense que "mis Foobarà vrai" et "mis Foobarà faux" sont simples et succincts. Je ne crois pas qu'il y ait des mots individuels pour ces phrases, et lorsque vous devez être à la fois technique et précis, il vaut parfois mieux être prêt à être un peu verbeux que de risquer de confondre votre public.

Kevin - Rétablir Monica
la source
-1

"Réglage" est la bonne façon de décrire l'acte d'assigner une valeur à une variable. Si vous vouliez devenir pédant à ce sujet, vous pourriez l'appeler "affectation", mais "set" est très répandu. En fait, c'est Java idiomatique d'écrire setFoobar()(et getFoobar()) des méthodes pour effectuer l'affectation. C # va plus loin avec les définitions de propriétés getet set.

En ce qui concerne votre deuxième point sur l'utilisation de "vérité" et "falsification" pour "par implication, dites à mes auditeurs que nous avons affaire à une variable booléenne", vous dites déjà à vos auditeurs que la variable est booléenne lorsque vous dites:

Je me suis mis Foobaràtrue

Harrison Paine
la source
1
Le «standard» en Java pour les méthodes qui renvoient des propriétés booléennes est en faitisFoobar()
JimmyJames
-1

Assertion ou Retract peuvent également être utilisés, le plus souvent quand on parle de propositions plutôt que des variables simples, par exemple dans Prolog. Habituellement, il existe différents termes en fonction de ce que le booléen représente, plutôt qu'un terme général pour toutes les langues ayant des valeurs booléennes (définir / effacer l'indicateur ou le bit, activer / désactiver le périphérique ou le mode, affirmer / retirer la proposition, probablement plus).

Pete Kirkham
la source
Je serais d'accord avec assert , sauf que pour un programmeur qui signifie déjà autre chose (par exemple, lever une exception si l'expression n'est pas déjà vraie).
ChrisW
@ChrisW Je ne sais pas ce que vous pensez que les gens qui programment Prolog sont sinon des programmeurs, mais il a été utilisé dans Prolog en 1972, c'est donc la macro C qui a changé le sens existant.
Pete Kirkham
-1

Pour changer la valeur d'un booléen de trueen false, ou vice-versa, on appelle négation .

Définir la valeur d'un booléen sur falseest dit comme falsifier le booléen. Je vous comprendrais si vous disiez "vérité", cependant, cela ne semble pas juste. Je ne sais pas quel est le verbe pour faire quelque chose true, donc ça pourrait être juste.

J'attendrais que quelqu'un avec une meilleure réponse vienne avant de commencer à utiliser "vérité" bon gré mal gré.

Sir Wumpus IV
la source
1
Le problème ici est que vous pouvez utiliser les termes négation , falsification , mais j'utiliserais respectivement basculer et réinitialiser / effacer . En fait, jusqu'à la lecture de cette question, je n'ai jamais rencontré de falsification . Peut-être que je vieillis juste et que je ne suis pas à jour avec les termes à la mode de cette année :)
David Arno
7
'falsify' a une signification dans la langue anglaise qui ne correspond pas vraiment à votre utilisation pour les variables booléennes; Si vous me disiez que vous "falsifiez" vos variables, je pourrais comprendre ce que vous essayez de dire, mais je vais d'abord analyser cela en essayant de me dire que vous mentez sur les valeurs qu'elles ont.
Cubic
1
L'OMI l'opposé de "falsifier" serait "affirmer", en anglais, mais cela ("affirmer") donne une mauvaise impression à un programmeur.
ChrisW
-3

Un booléen est un équivalent d'un SPST (pôle unique, un jet simple) commutateur électrique: un tour elle sur ou hors .

Nicholas Carey
la source
2
"Activer la donevariable" ou "La errorvariable est désactivée" sonnent tous les deux un peu, du moins pour moi. Les alternatives suggérées par d'autres réponses semblent plus courantes - «Définissez la donevariable / bool / flag [sur true]» ou «Le errordrapeau est effacé».
Sebi