La "verità" è un termine di programmazione legittimo?

11

SO ha alcune domande usando la parola "verità" per indicare il valore di verità di un'espressione, quando viene valutato come un booleano, indipendentemente dal suo tipo originale. È molto utile nelle lingue dinamiche.

Quindi la mia domanda è, è un termine reale, e in tal caso lo usavamo prima che Stephen Colbert lo rendesse popolare? O l'abbiamo appena adottato in seguito? In tal caso, qual è il termine corretto con la definizione che ho dato sopra?

    
posta Tesserex 29.10.2011 - 18:26
fonte

8 risposte

4

C'è un sacco di dibattito su truthiness .

Merriam-Webster lo definisce come:

  1. verità (sostantivo)
    1: "verità che viene dal budello, non dai libri" (Stephen Colbert, Comedy Central, "The Colbert Report", ottobre 2005)
    2: "la qualità di preferire concetti o fatti che si desidera essere veri, piuttosto che concetti o fatti noti come veri" (American Dialect Society, gennaio 2006)

Oxford Dizionari online lo definisce come:

noun
[mass noun] informal
the quality of seeming or being felt to be true, even if not necessarily true.

Origin:
early 19th century (in the sense 'truthfulness'): coined in the modern sense by the US humorist Stephen Colbert

È stato usato un po 'su Usenet prima di Stephen Colbert, ma di solito spiegato non appena usato, come" la qualità di affermare concetti o fatti che uno desidera o crede per essere vero, piuttosto che concetti o fatti conosciuti per essere veri ".

Torna alla programmazione. Indipendentemente dall'origine, questo moderno senso di "verità dall'intestino, anche se non vero" è chiaramente errato per la maggior parte del tempo quando si discute di logica booleana e tabelle di verità: questa dichiarazione di if è sicuramente vera, e quell'istruzione while è falso fino a (i > k) . Il mio istinto non ci entra dentro.

Se stai usando truthiness in programmazione, molto probabilmente stai usando il raro significato del 19 ° secolo di veridicità , e sarebbe sia più chiaro (e probabilmente più corretto) per utilizzare veridicità o semplicemente verità .

Ngram :

Naturalmente,l'inglesecambiamanmanochecambial'uso,ealcunepersonehannoiniziatoausareveritàpersignificareveritànellaprogrammazione.Tuttavia,consigliereicontrolasinceritàperevitarequalsiasiambiguitàdisignificato("verità assoluta reale" vs. "il mio istinto di verità, indipendentemente dai fatti").

    
risposta data 31.10.2011 - 11:25
fonte
9

È un termine noto e accettabile all'interno di determinate cerchie (ad esempio, i confronti booleani JavaScript). In quanto tale, è un termine "reale". In virtù dell'uso, diventa legittimo.

Tutti questi termini provengono da qualche parte - non popolano il mondo completamente formati e con significati consolidati (ad esempio - i bug del software non avevano il significato che hanno ora quando i computer elettronici hanno appena iniziato a esistere).

Che sia accettato accademicamente - è diverso. Per quanto ne so, non esiste un termine formale per questo significato fuzzy dei valori booleani ..

    
risposta data 29.10.2011 - 18:34
fonte
7

Considero la verità come un termine legittimo in uso sulla valutazione di JavaScript. Il libro di Douglas Crockford su JavaScript - "JavaScript the Good Parts" definisce i termini in cui JavaScript "se" ritiene vero di essere "verità". Allo stesso modo definisce i termini che JavaScript considera falso come "falsi". Usa anche il termine per evidenziare il modo in cui la valutazione '==' funziona in JavaScript (che è diverso dal modo in cui molti utenti JavaScript sembrano credere che funzioni).

Da Gli elementi dello stile JavaScript di Crockford

The == operator should not be used for comparing values with true because it does type coercion. If our intent is to determine if d.w.sv.checked is the boolean value true, then we must use the === operator. If we only care that a value is truthy (and not falsy) then it is better to not use an equality operator at all.

For example, because of type coercion., 1 == true is true, but 1 === true is false. The == operator can hide type errors.

In questo contesto il termine è sia legittimo che utile.

Come ulteriore esempio di vero e falso in questo contesto, questi casi sono illustrativi.

'' == '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
    
risposta data 31.10.2011 - 11:59
fonte
2

La verità è stata una parola molto tempo prima che Stephen Colbert la usasse. Potrei giurare di averlo visto in documenti di logica / AI e anche in alcuni documenti di fisica, ma non riesco a trovare un riferimento a uno che precede lo spettacolo di Stephen Colbert.

    
risposta data 29.10.2011 - 19:59
fonte
2

Truthiness è un termine legittimo e ben definito in Clojure, in cui fa riferimento alla proprietà di un valore considerato vero in un'istruzione condizionale.

Quindi la funzione condizionale di seguito verrà chiamata solo se value è "verità"

  (if value
    (some-conditional-function))

Gli unici valori non attendibili sono false e nil , tutto il resto è considerato vero.

Credo che la giustificazione filosofica per questo sia che nil può essere interpretata come "non esiste", quindi l'istruzione condizionale è in grado di verificare l'esistenza di un valore.

Molte altre lingue hanno anche un concetto simile di valori che saranno considerati veri in un contesto condizionale, quindi in conclusione direi che sì, la verità dovrebbe essere considerata un termine di programmazione legittimo quando viene usata in questo modo.

    
risposta data 01.02.2012 - 06:15
fonte
1

"La verità" è qualcosa che mi assicuro di capire quando sto prendendo in mano una nuova lingua, poiché tutti la trattano in modo diverso. Nella mia lingua madre di Perl, la stringa "0" è falsa. In molte lingue, questa è una stringa che ha contenuto ed è quindi vera. In alcune lingue la stringa vuota "" è falsa e in alcuni è vera.

Comprendere le scelte che i designer del linguaggio hanno fatto sulla verità ti dice molto sul loro modo di pensare e inizia a immergerti nell'universo concettuale della lingua.

Se lo abbiamo scritto "verità" o usato un altro termine (penso che l'intestazione per quel capitolo nel Libro dei cammelli sia "Cos'è la verità?"), i programmatori avevano una presa sui vari valori della cosa assoluta chiamata "vero" e falso "molto prima che Colbert arrivasse e indicasse la flessione del" vero "nel discorso pubblico.

    
risposta data 31.10.2011 - 13:15
fonte
0

Lascia che ti chieda: cos'è un "vero termine"?

Qualsiasi parola usata dagli umani è "reale" quando viene utilizzata da più persone che indicano la (più o meno) stessa cosa. Tutte le lingue sono in continua evoluzione, così come il linguaggio del programmatore.

Ad esempio, in Ruby, il framework di test rspec al giorno d'oggi preferisce xyz.should be_truthy invece di xyz.should be_true . O xyz.should be_falsey invece di xyz.should be_false . Ovviamente, al posto di quest'ultimo, avrebbero potuto selezionare xyz.should be_wrong . Ma loro no, quindi possiamo anche chiedere se "falso" è un termine.

Ora lo è. Tipo. Almeno nelle comunità che usano questi termini. Non chiedere al tuo avvocato o dottore. :)

Se hai intenzione di chiedere "il pubblico generale sa intuitivamente cos'è la Verità", allora la risposta è probabilmente "no".

    
risposta data 10.03.2016 - 18:51
fonte
-3

Ho scritto un sistema che determinerebbe la possibilità (matematica) di un'istruzione booleana vera, dati dati parziali. Cioè potremmo determinare che c'era una probabilità del 73% di X di essere vero, se non avessimo ancora dati sufficienti per stabilire con fermezza che X fosse vero. "Verità" sarebbe un modo perfettamente valido per descrivere tale credenza percentuale in X.

    
risposta data 31.10.2011 - 13:05
fonte

Leggi altre domande sui tag