¿Existe terminología para "verdadero", "falso" y alternar un booleano? [cerrado]

23

Digamos que estoy tratando de describir mi código en una reunión técnica.

Primero, configuro el booleano foobarentrue

y

En segundo lugar, configuré el booleano foobarenfalse

Parece un poco prolijo. Si foobarse activara, probablemente podría decir:

Tercero, alternar foobar

Por implicación aquí, sabes que es un booleano. Entonces no debería ser capaz de:

Cuarto, yo verifico foobar

y

Quinto, falsifico foobar

¿Qué también, por implicación, les dirá a mis oyentes que estamos tratando con una variable booleana? ¿Existe una terminología adecuada para esto? Gracias.

Akiva
fuente
16
"Establecer foobar en verdadero / falso" no es tan prolijo, y es obvio que es un bool. "Toggle" es bastante claro para los oyentes, en mi opinión.
Filip Milovanović
8
"Primero, configuré el foobar booleano en verdadero y, en segundo lugar, configuré el foobar booleano en falso". ¿No podrías haberlo establecido falso en primer lugar? ;)
David Arno
2
Siempre pensé que se llamaba flipping, pero aparentemente ese es el término para bits , no bools
e_i_pi
16
Leí falsificar como equivalente a crear una falsificación y no establecer el valor en falso.
CodesInChaos
66
¿Estás seguro de que debes describir tu código en un nivel tan bajo? Seguramente, si alguien quiere una descripción de tan bajo nivel, simplemente leería el código. No digo que nunca haya una razón para usar esa terminología, pero esperaría que fuera rara.
Dukeling

Respuestas:

52
  • Establecer un valor de verdad está estableciendo que
  • Establecerlo en falso es borrarlo .
  • Cambiar el valor actual es alternarlo .

También puede usar "configurarlo en verdadero" y "configurarlo en falso" , por supuesto.

usuario253751
fuente
10
No correlaciono establecer un valor en falso como borrarlo. Despejar para mí significa: ni verdadero ni falso.
Pieter B
49
@PieterB: Bueno, depende del contexto; si estamos hablando de una bandera booleana, entonces "configurar" y "borrar" la bandera es una terminología bastante común.
Filip Milovanović
77
@ FilipMilovanović En el contexto de las variables, establecer una variable significa asignar un valor a dicha variable, en el contexto de la variable booleana este valor puede ser verdadero o falso. Sería extraño decir: oye, establecer una variable significa asignarle un valor ... excepto cuando es una variable booleana y, en realidad, cuando la configuramos, queremos decir que asignamos el valor: "verdadero"
Pieter B
66
@PieterB Si puede ser "ni verdadero ni falso", entonces no es un booleano binario (que es lo que la mayoría de la gente piensa cuando escuchan la palabra), sino una cosa ternaria verdadera / falsa / indeterminada. Dicho esto, la terminología set / clear proviene de banderas. No todas las variables booleanas son banderas, por lo que la terminología es inapropiada para muchos casos de uso.
Cubic
77
@PieterB: Sí, sería extraño decir "establecer la variable bool" y esperar que todos entiendan que significa "establecerlo en verdadero"; pero si representa una bandera, entonces "establecer la bandera" es algo que se usa comúnmente y significa establecer el valor de bool que representa la bandera en verdadero (o el bit que representa la bandera en 1). (PD Pero la respuesta de immibis no tiene eso en cuenta.)
Filip Milovanović
66

Si es posible, en lugar de centrarse en el valor booleano, debe intentar describir lo que representa. Algunos ejemplos:

  • ¿un servicio? iniciar / detener en lugar de iniciado = verdadero / falso
  • ¿Un efecto especial en un motor de juego? encendido apagado
  • una señal electrica? establecer / restablecer
  • ...

De esta manera hablarías en términos más naturales. Y así, en su reunión, en lugar de "verificar el foobar y luego falsificarlo" simplemente "comenzaría a foobar y luego lo detendría" (si foobar es un servicio, de hecho).

Cuando realmente necesita hablar sobre un valor booleano, puede ir con "set / reset" o "set to true" y "set to false". "Toggle" suena bastante bien en todos los contextos.

Y si trabajas en una tienda booleana (lo que sea que eso pueda significar), entonces probablemente necesites más palabras de las que el diccionario tiene para ofrecer. En ese caso, truthify y falsify son simplemente partes de su microspeak .


fuente
16
Tengo que estar de acuerdo ... boolean es la implementación que modela de lo que REALMENTE estás hablando ... ¡así que habla de eso!
Maybe_Factor
2
No me gusta hablar de establecer un valor booleano para hacerlo realidad. Debido a que la forma en que trabajo con variables comienzan sin inicializarse, lo que significa que básicamente no puede usarlas todavía y el acto de establecer una variable (verdadero o falso) es la inicialización. Para establecer siempre significa verdadero, causaría confusión.
Pieter B
1
Además, este uso de terminología se traduce también en código; A menudo, no siempre, por supuesto, es mejor usar una enumeración de dos valores en lugar del tipo booleano incorporado; signal = HighVoltageo signal = Activees en mi humilde opinión mucho más claro que signal = true.
Cubic
Tenga en cuenta que una propiedad / variable booleana con un nombre apropiado siempre revelará de inmediato el nombre que debe usar para los valores. Piense isStarted, isActive, isCaseSensitive, mockConnection, ... @PieterB: Estoy parcialmente de acuerdo con usted. "Establecer lo booleano" no significa inherentemente establecerlo en verdadero. Sin embargo, "Establecer el isActiveindicador" se puede interpretar razonablemente como que significa establecerlo en verdadero.
Flater
1
@Cubic: no estoy de acuerdo. Dejando de lado la futura expansión, una enumeración binaria parece innecesaria. signal = truede hecho no está claro, pero si lo vas a usar signal = Active, también podrías usarlo isSignalActive = true. Tenga en cuenta que esto se aplica principalmente a los descriptores que son claramente mutuamente excluyentes y complementos exactos. Activo / Inactivo se ajusta a la factura. HighVoltage no lo hace, ya que "no alto voltaje" podría significar, por ejemplo, "bajo voltaje", o podría significar "bajo o medio voltaje". En el último caso, el argumento booleano obviamente no se aplica. En el primero, lo hace.
Flater
2

Me gusta "set" / "clear", pero tenga cuidado con la ambigüedad en su fraseo. Como señala Filip , "establecer la variable bool" podría significar escribir algún valor en la variable. Pero "poner la bandera" es más claro.


Terminología relacionada: convertir un entero 0 / distinto de cero en un valor 0/1 se denomina "booleanizing" .

Si realmente usa el valor 0/1 como un entero (en lugar de un verdadero / falso bool), es posible que desee usar esa palabra. De lo contrario, probablemente solo aparecerá si está hablando del costo de las operaciones que el compilador debe realizar. (O si está vectorizando manualmente con un SIMD, compare para producir bits todo cero / todo uno en cada elemento vectorial).

En C y C ++, a boolpuede implícitamente volver a convertirse en un entero como 0 o 1, y en implementaciones normales boolse almacena como un valor de un byte que es 0 o 1 (no cualquier valor distinto de cero). Esto permite la eficiencia a && b, pero en la práctica muchos compiladores de C han perdido las optimizaciones .


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

Esa función se compila con múltiples instrucciones (sin incluir ret) en la mayoría de las arquitecturas. (MIPS es una excepción interesante, ya que tiene instrucciones de comparar en registro en lugar de un registro de código de condición / indicador separado). en el explorador del compilador Godbolt para x86-64, MIPS y Thumb ARM , podemos ver que la versión x86-64 es:

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

Lo siento, este ejemplo de qué booleanizar es un poco grande / fuera de tema.

Peter Cordes
fuente
0

Creo que "establecer Foobaren verdadero" y "establecer Foobaren falso" son sencillos y concisos. No creo que haya palabras individuales para esas frases, y cuando necesitas ser técnico y preciso, a veces es mejor estar dispuesto a ser un poco prolijo que arriesgarte a confundir a tu audiencia.

Kevin - Restablece a Monica
fuente
-1

"Configuración" es la forma correcta de describir el acto de asignar un valor a una variable. Si desea ser pedante al respecto, podría llamarlo "asignación", pero "conjunto" es muy frecuente. De hecho, es idiomático Java escribir setFoobar()(y getFoobar()) métodos para realizar la asignación. C # lleva un paso más lejos con gety setdefiniciones de propiedades.

Con respecto a su segundo punto sobre el uso de "verdad" y "falsificación" a "por implicación, dígale a mis oyentes que estamos tratando con una variable booleana", ya les está diciendo a los oyentes que la variable es booleana cuando dice:

Me puse Foobaratrue

Harrison Paine
fuente
1
El 'estándar' en Java para los métodos que devuelven propiedades booleanas es en realidadisFoobar()
JimmyJames
-1

Afirmar oTambién se puede usar Retract , más a menudo cuando se habla de proposiciones en lugar de variables simples, por ejemplo en Prolog. Por lo general, hay diferentes términos que dependen de lo que representa el booleano, en lugar de un término general para todos los idiomas que tienen valores booleanos (establecer / borrar bandera o bit, habilitar / deshabilitar dispositivo o modo, afirmar / retraer propuesta, probablemente más).

Pete Kirkham
fuente
Estoy de acuerdo con afirmar , excepto que para un programador eso ya significa algo diferente (por ejemplo, lanzar una excepción si la expresión ya no es verdadera).
ChrisW
@ChrisW No sé qué crees que son las personas que programan Prolog si no son programadores, pero se utilizó en Prolog en 1972, por lo que es la macro C la que cambió el significado existente.
Pete Kirkham
-1

Para cambiar el valor de un booleano de true a false, o viceversa, se llama negación .

Para establecer el valor de un booleano falsese dice como falsifica el booleano. Te entendería si dijeras "verdad", sin embargo, esto no suena bien. No estoy seguro de cuál es el verbo para hacer algo true, por lo que podría ser correcto.

Esperaría a que alguien con una mejor respuesta llegue antes de que comiences a usar "verdad" de cualquier manera.

Sir Wumpus IV
fuente
1
El problema aquí es que puede usar los términos negar , falsificar , pero yo usaría alternar y restablecer / borrar respectivamente. De hecho, hasta que leí esta pregunta, nunca me topé con falsificación . Tal vez solo me estoy haciendo viejo y no estoy al día con los términos de moda de este año :)
David Arno
77
'falsificar' tiene un significado en el idioma inglés que realmente no se alinea con su uso para las variables booleanas; Si me dijeras que estás "falsificando" tus variables, podría entender lo que estás tratando de decir, pero primero lo analizaría mientras intentas decirme que estás mintiendo sobre los valores que tienen.
Cubic
1
En mi opinión, lo opuesto a "falsificar" sería "afirmar", en inglés, pero eso ("afirmar") da la impresión equivocada a un programador.
ChrisW
-3

Un booleano es un equivalente de un SPST (unipolar, solo tiro) interruptor eléctrico: uno lo convierte en o fuera .

Nicholas Carey
fuente
2
"Activar la donevariable" o "La errorvariable está desactivada" ambos suenan un poco apagados, al menos para mí. Las alternativas sugeridas por otras respuestas parecen ser más frecuentes: "Establezca la donevariable / bool / flag [en verdadero]" o "La errorbandera se borra".
Sebi