Ist „Wahrhaftigkeit“ ein legitimer Programmierbegriff?


11

SO hat einige Fragen, bei denen das Wort "Wahrhaftigkeit" den Wahrheitswert eines Ausdrucks bedeutet, wenn er als Boolescher Wert bewertet wird, unabhängig von seinem ursprünglichen Typ. Es ist sehr nützlich in dynamischen Sprachen.

Meine Frage ist also, ist dies ein realer Begriff, und wenn ja, haben wir ihn verwendet, bevor Stephen Colbert ihn populär gemacht hat? Oder haben wir es einfach später übernommen? Was ist in diesem Fall der richtige Begriff mit der Definition, die ich oben gegeben habe?


2
en.wikipedia.org/wiki/Truthiness Mach daraus, was du willst. ; ->
Jeff Grigg

1
Ich denke, es ist normalerweise etwas abwertend gemeint (sicherlich von Stephen Colbert), da es mehr Willkür und mehr Chancen gibt, dass Dinge falsch sind als tatsächlich wahre / falsche Werte. Aber es ist häufig genug, dass es hilfreich ist, ein Wort dafür zu haben, und "Wahrhaftigkeit" vermittelt die Idee ziemlich präzise. Ich würde es also als legitim betrachten, aber die Legitimität wird durch die Verwendung im Laufe der Zeit bestimmt, sodass es zu diesem Zeitpunkt keine endgültige oder maßgebliche Antwort auf Ihre Frage gibt.
Psr

Antworten:


4

Es gibt viele Debatten über die Wahrhaftigkeit .

Merriam-Webster definiert es als:

  1. Wahrhaftigkeit (Substantiv)
    1: "Wahrheit, die aus dem Bauch kommt, nicht aus Büchern" (Stephen Colbert, "The Colbert Report" von Comedy Central, Oktober 2005)
    2: "Die Qualität, Konzepte oder Fakten zu bevorzugen, die man wahr sein möchte, anstatt Konzepte oder Fakten, von denen bekannt ist, dass sie wahr sind "(American Dialect Society, Januar 2006)

Oxford Dictionaries Online definiert es als:

Substantiv
[ Massennomen ] informell
die Qualität des Scheinens oder des Wahrsehens als wahr, auch wenn dies nicht unbedingt wahr ist.

Herkunft :
frühes 19. Jahrhundert (im Sinne von „Wahrhaftigkeit“): im modernen Sinne vom US-Humoristen Stephen Colbert geprägt

Es wurde ein wenig auf verwendet Usenet vor Stephen Colbert, aber in der Regel erklärt, sobald verwendet, wie „die Qualität der besagt , Konzepte oder Tatsachen eine Wunsch oder glaubt , um wahr zu sein, eher als Konzepte oder Tatsachen bekannt um wahr zu sein“.

Zurück zur Programmierung. Unabhängig von der Herkunft ist dieses moderne Gefühl von "Wahrheit aus dem Bauch heraus, auch wenn es nicht wahr ist" die meiste Zeit eindeutig falsch, wenn es um boolesche Logik und Wahrheitstabellen geht: Diese ifAussage ist definitiv wahr, und diese whileAussage ist bis dahin falsch (i > k). Mein Bauchgefühl kommt nicht hinein.

Wenn Sie mit Truthiness in der Programmierung, höchstwahrscheinlich verwenden Sie die seltene 19. Jahrhundert von Bedeutung Wahrhaftigkeit , und es wäre sowohl klarer (und wohl mehr richtig) zu verwenden , Wahrhaftigkeit oder einfach die Wahrheit .

Ngram :

Ngram

Natürlich ändert sich Englisch als Nutzungsänderungen, und einige Leute haben begonnen zu verwenden , Truthiness auf mittlere Wahrheit in der Programmierung. Allerdings würde ich abraten Truthiness jede Zweideutigkeit von Bedeutung zu vermeiden ( „real absolute Wahrheit“ vs. „mein Bauchgefühl der Wahrheit, unabhängig von den Fakten“).


2
Ich persönlich habe das Wort Wahrhaftigkeit immer verwendet. Wenn ich Wahrhaftigkeit lese, halte ich es nicht einmal für ein echtes Wort.
Ramhound

@ Ramhound: Es gibt kein "kein richtiges Wort". Wenn ein Wort für die Kommunikation zwischen Menschen verwendet werden kann, ist es ein echtes Wort.
JacquesB

@Hugo: Merriam-Webster ist nicht maßgeblich, wenn es um Fachjargon geht. Viele Wörter haben in CS eine andere Bedeutung als in der Umgangssprache.
JacquesB

@JacquesB Die Frage ist, ob es sich um einen "echten Begriff" handelt und ob er in der Datenverarbeitung vor oder nach der Popularisierung durch Colbert verwendet wurde. Daher helfen Definitionen aus Standardwörterbüchern, mit diesen umzugehen.
Hugo

@Hugo: Sie geben an, dass die Verwendung eines Fachbegriffs aufgrund seiner Definition in einem gemeinsamen (nicht IT-spezifischen) Wörterbuch "eindeutig falsch" ist. Und Ihr Vorschlag, stattdessen das Wort "Wahrheit" zu verwenden, geht am eigentlichen Punkt des Begriffs "Wahrhaftigkeit" vorbei, der auf nicht-boolesche Werte angewendet wird.
JacquesB

9

Dieser Begriff ist in bestimmten Kreisen bekannt und akzeptabel (z. B. boolesche JavaScript-Vergleiche). Als solches ist es ein "echter" Begriff. Durch die Verwendung wird es legitim.

Alle diese Begriffe kommen von irgendwoher - sie tauchen nicht vollständig und mit einer etablierten Bedeutung in der Welt auf (zum Beispiel hatten Softwarefehler nicht die Bedeutung, die sie jetzt hatten, als elektronische Computer gerade erst existierten).

Ob es akademisch akzeptiert wird - das ist eine andere Sache. Soweit ich weiß, gibt es keinen formalen Begriff für diese unscharfe Bedeutung von Booleschen Werten.


@Downvoter - Möchten Sie einen Kommentar abgeben?
Oded

3
Eigentlich wurden die Begriffe "Bug" als Problem vor modernen Computern verwendet. Edison verwendete in einem Brief 1787. Damals waren es übliche Begriffe für technische Probleme. Die Grace Hopper-Geschichte als ein bisschen Ironie, dass der Fehler, den sie fanden, wirklich ein Fehler war.
Jim C

@JimC - Fair genug, aber wenn die Leute heute "Bug" sagen, meinen sie nicht dasselbe wie in den Tagen von Edison.
Oded

4
Edison schrieb 1878: It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that 'Bugs' — as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached.Klingt für mich sehr ähnlich zu modernen Softwarefehlern.
Hugo

8

Ich betrachte Wahrheit als einen legitimen Begriff, der bei der JavaScript-Evaluierung verwendet wird. Douglas Crockfords Buch über JavaScript - 'JavaScript the Good Parts' definiert die Begriffe, die JavaScript 'if' als wahr als 'wahr' bewertet. Ebenso definiert er die Begriffe, die JavaScript als falsch auswertet, als "falsch". Er verwendet den Begriff auch, um die Funktionsweise der '==' - Auswertung in JavaScript hervorzuheben (was sich von der Art und Weise unterscheidet, wie viele JavaScript-Benutzer zu glauben scheinen, dass dies funktioniert).

Aus Crockfords The Elements of JavaScript Style

Der Operator == sollte nicht zum Vergleichen von Werten mit true verwendet werden, da er Zwang gibt. Wenn wir feststellen möchten, ob dwsv.checked der boolesche Wert true ist, müssen wir den Operator === verwenden. Wenn es uns nur wichtig ist, dass ein Wert wahr (und nicht falsch) ist, ist es besser, überhaupt keinen Gleichheitsoperator zu verwenden.

Zum Beispiel ist 1 == wahr aufgrund von Typenzwang wahr, aber 1 === wahr ist falsch. Der Operator == kann Typfehler ausblenden.

In diesem Zusammenhang ist der Begriff sowohl legitim als auch nützlich.

Zur weiteren Veranschaulichung von wahr und falsch in diesem Zusammenhang sind diese Fälle veranschaulichend.

'' == '0' // false    
0 == '' // true
0 == '0' // true

false == 'false' // false
false == '0' // true

false == undefined // false
false == null // false
null == undefined // true

' \t\r\n ' == 0 // true

+1 und Python macht das Gleiche. []wird als falsch bewertet, wenn es als Boolescher
Wert

1
+1 Dies sollte die Antwort sein. Ich habe oft selbst über die "Wahrhaftigkeit" verschiedener Datenstrukturen gesprochen. Oder häufiger, finde ich mich sagen : „X ist falsy“ , wobei X Ideen wie ist 0, None, [], und so weiter.

2

Wahrhaftigkeit war ein Wort, lange bevor Stephen Colbert es benutzt hat. Ich könnte schwören, dass ich es in Logik- / KI-Papieren und auch in einigen Physik-Papieren gesehen habe, aber ich kann anscheinend keinen Hinweis auf einen finden, der vor Stephen Colberts Show liegt.


Das Problem ist, dass es jetzt, da die "Colbert" -Definition populär geworden ist, viel schwieriger sein wird, obskure Referenzen in älteren Werken zu finden :-)
Dean Harding

Ich konnte vor 2006 keine von ACM oder IEEE finden .
Hugo

@DeanHarding Es gibt Möglichkeiten, vor einem bestimmten Datum nach Wörtern zu suchen, z. B. mithilfe von Google Books und im Usenet .
Hugo

2

Wahrhaftigkeit ist ein legitimer und genau definierter Begriff in Clojure, der sich auf die Eigenschaft eines Wertes bezieht, der in einer bedingten Aussage als wahr angesehen wird.

Die folgende bedingte Funktion wird also nur aufgerufen, wenn sie value"wahr" ist.

  (if value
    (some-conditional-function))

Die einzigen nicht wahrheitsgemäßen Werte sind falseund nil, alles andere wird als wahrheitsgemäß angesehen.

Ich glaube, die philosophische Rechtfertigung dafür ist, dass nil"nicht existiert" verstanden werden kann, so dass die bedingte Aussage in der Lage ist, die Existenz eines Wertes zu testen.

Viele andere Sprachen haben ebenfalls ein ähnliches Wertekonzept, das in einem bedingten Kontext als wahr angesehen wird. Abschließend würde ich argumentieren, dass Wahrhaftigkeit als legitimer Programmierbegriff angesehen werden sollte, wenn sie auf diese Weise verwendet wird.


1

"Wahrhaftigkeit" ist etwas, das ich verstehe, wenn ich eine neue Sprache aufgreife, da sie alle unterschiedlich damit umgehen. In meiner Muttersprache Perl ist die Zeichenfolge "0" falsch. In vielen Sprachen ist dies eine Zeichenfolge, die Inhalt hat und daher wahr ist. In einigen Sprachen ist die leere Zeichenfolge "" falsch und in einigen ist sie wahr.

Das Verständnis der Entscheidungen, die die Sprachdesigner in Bezug auf Wahrhaftigkeit getroffen haben, sagt viel über ihr Denken aus und beginnt, Sie in das konzeptuelle Universum der Sprache einzutauchen.

Unabhängig davon, ob wir es "Wahrhaftigkeit" buchstabierten oder einen anderen Begriff verwendeten (ich denke, die Überschrift für dieses Kapitel im Kamelbuch lautet "Was ist Wahrheit?"), Hatten Programmierer unterschiedliche Werte der absoluten Sache namens "wahr und falsch" im Griff. lange bevor Colbert kam und auf die Verbiegung von "wahr" im öffentlichen Diskurs hinwies.


0

Lassen Sie mich zurück fragen: Was ist ein "richtiger Begriff"?

Jedes Wort, das Menschen verwenden, ist "echt", wenn es von mehreren Personen verwendet wird, was (mehr oder weniger) dasselbe bedeutet. Alle Sprachen entwickeln sich ständig weiter, ebenso die Sprache des Programmierers.

In Ruby beispielsweise wird heutzutage das rspec-Testframework xyz.should be_truthyanstelle von bevorzugt xyz.should be_true. Oder xyz.should be_falseystatt xyz.should be_false. Anstelle von letzterem hätten sie natürlich wählen können xyz.should be_wrong. Aber sie haben es nicht getan, also können wir auch fragen, ob "Falschheit" ein Begriff ist.

Jetzt ist es. Art aus. Zumindest in den Gemeinden, die diese Begriffe verwenden. Fragen Sie nicht Ihren Anwalt oder Arzt. :) :)

Wenn Sie fragen sollen: "Weiß die breite Öffentlichkeit intuitiv, was Wahrhaftigkeit ist?", Lautet die Antwort wahrscheinlich "Nein".


1
Wie (fast) jeder weiß, ist etwas genau dann real, wenn sein Imaginärteil falsch ist .
Ben Voigt

-3

Ich habe ein System geschrieben, das die (mathematische) Wahrscheinlichkeit bestimmt, dass eine boolesche Aussage bei Teildaten wahr ist. Das heißt, wir könnten feststellen, dass die Wahrscheinlichkeit X, wahr zu sein, bei 73% liegt, wenn wir noch nicht genügend Daten haben, um fest zu bestätigen, dass X wahr ist. "Wahrhaftigkeit" wäre ein absolut gültiger Weg, um einen solchen prozentualen Glauben an X zu beschreiben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.