it-swarm.com.de

Gibt es eine Terminologie für "wahr", "falsch" und das Umschalten eines Booleschen Wertes?

Nehmen wir an, ich versuche, meinen Code in einem technischen Meeting zu beschreiben.

Zuerst setze ich den Booleschen Wert foobar auf true

und

Zweitens setze ich den Booleschen Wert foobar auf false

scheint ein bisschen wortreich. Wenn foobar umgeschaltet wurde, könnte ich wahrscheinlich sagen,

Drittens, ich mschaltenfoobar

Durch die Implikation hier wissen Sie, dass es ein Boolescher Wert ist. Also sollte ich nicht in der Lage sein:

Viertens Truthify foobar

und

Fünftens Fälschen foobar

Was wird meinen Zuhörern auch implizit sagen, dass es sich um eine boolesche Variable handelt? Gibt es dafür die richtige Terminologie? Vielen Dank.

26
Akiva
  • Das Setzen eines Wertes auf true ist Einstellung it
  • Das Setzen auf false ist Löschen it.
  • Das Ändern des aktuellen Werts ist mschalten it.

Sie können natürlich auch "auf true setzen" und "auf false setzen" verwenden.

53
user253751

Wenn möglich, sollten Sie versuchen, zu beschreiben, was er darstellt, anstatt sich auf den booleschen Wert zu konzentrieren. Einige Beispiele:

  • ein Dienst? Start/Stopp statt gestartet = wahr/falsch
  • ein Spezialeffekt in einer Game Engine? an aus
  • ein elektrisches Signal? setzen/zurücksetzen
  • ...

Auf diese Weise würden Sie natürlicher sprechen. Und so würden Sie in Ihrem Meeting statt "Foobar wahrnehmen und dann fälschen" einfach "Foobar starten und dann stoppen" (wenn Foobar tatsächlich ein Dienst ist).

Wenn Sie wirklich über einen booleschen Wert sprechen müssen, können Sie mit "set/reset" oder "set to true" und "set to false" fortfahren. "Toggle" klingt in allen Kontexten ganz nett.

Und wenn Sie in einem booleschen Geschäft arbeiten (was auch immer das bedeuten könnte), brauchen Sie wahrscheinlich mehr Wörter als das, was das Wörterbuch zu bieten hat. In diesem Fall sind Truthify und Falsify einfach Teile Ihres Microspeak .

66
user44761

Ich mag "set"/"clear", aber achten Sie auf Mehrdeutigkeiten in Ihrer Formulierung. Als Filip weist darauf hin könnte "set the bool variable" so verstanden werden, dass ein Wert in die Variable geschrieben wird. Aber "Setzen der Flagge" ist klarer.


Verwandte Terminologie: Das Umwandeln einer 0/Nicht-Null-Ganzzahl in einen 0/1-Wert wird als "booleanizing" bezeichnet.

Wenn Sie den 0/1-Wert tatsächlich als Ganzzahl verwenden (anstelle von true/false bool), möchten Sie möglicherweise dieses Wort verwenden. Andernfalls wird es wahrscheinlich nur angezeigt, wenn Sie über die Kosten der Operationen sprechen, die der Compiler ausführen muss. (Oder wenn Sie manuell mit einer SIMD vektorisieren, vergleichen Sie, um in jedem Vektorelement All-Zero/All-One-Bits zu erzeugen.).

In C und C++ kann ein bool implizit wieder in eine Ganzzahl als 0 oder 1 konvertiert werden, und bei normalen Implementierungen wird bool als Ein-Byte-Wert gespeichert, der entweder 0 oder 1 ist (nicht) nur ein beliebiger Wert ungleich Null). Das ermöglicht effizientes a && b, aber in der Praxis haben viele C-Compiler Optimierungen verpasst .


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

Diese Funktion wird auf den meisten Architekturen zu mehreren Anweisungen kompiliert (ohne ret). (MIPS ist eine interessante Ausnahme, da es Anweisungen zum Vergleichen in ein Register anstelle eines separaten Flag-/Bedingungscoderegisters gibt.) im Godbolt-Compiler-Explorer für x86-64, MIPS und ARM thumb sehen wir, dass die x86-64-Version wie folgt lautet:

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

Tut mir leid, dieses Beispiel dafür, was Booleanisierung ist, ist ein wenig groß/nicht thematisch!

2
Peter Cordes

Ich denke, "setze Foobar auf true" und "setze Foobar auf false" sind unkompliziert und prägnant. Ich glaube nicht, dass es einzelne Wörter für diese Sätze gibt, und wenn Sie sowohl technisch als auch präzise sein müssen, ist es manchmal besser, bereit zu sein, ein wenig wortreich zu sein, als das Risiko einzugehen, Ihr Publikum zu verwirren.

0
Kevin