"Verità" è un termine di programmazione legittimo?


11

SO ha alcune domande che usano la parola "verità" per indicare il valore di verità di un'espressione, quando valutata come booleana, indipendentemente dal suo tipo originale. È molto utile nei linguaggi dinamici.

Quindi la mia domanda è: è questo un vero termine, e se così fosse stato usato prima che Stephen Colbert lo rendesse popolare? O l'abbiamo semplicemente adottato in seguito? In tal caso, qual è il termine corretto con la definizione che ho dato sopra?


2
it.wikipedia.org/wiki/Truthiness Fai di ciò che desideri. ; ->
Jeff Grigg,

1
Penso che di solito significhi in qualche modo peggiorativamente (certamente da Stephen Colbert) poiché c'è più arbitrarietà e più possibilità di cose sbagliate rispetto ai valori reali / falsi. Ma è abbastanza comune che sia utile avere una parola per questo, e "la veridicità" rende l'idea abbastanza concisa. Quindi lo considero legittimo, ma la legittimità è determinata dall'uso popolare nel tempo, quindi a questo punto non esiste una risposta definitiva o autorevole alla tua domanda.
psr

Risposte:


4

C'è molto dibattito sulla verità .

Merriam-Webster lo definisce come:

  1. truthiness (sostantivo)
    1: "verità che viene dall'intestino, non dai libri" (Stephen Colbert, "The Colbert Report", ottobre 2005) della Comedy Central
    2: "la qualità di preferire concetti o fatti che uno vorrebbe essere vero, piuttosto che concetti o fatti noti per essere veri "(American Dialect Society, gennaio 2006)

Oxford Dictionaries Online lo definisce come:

sostantivo
[ nome di massa ] informale
la qualità dell'apparenza o dell'essere sentita vera, anche se non necessariamente vera.

Origine :
inizi del XIX secolo (nel senso di "verità"): coniato in senso moderno dall'umorista statunitense Stephen Colbert

È stato usato un po 'su Usenet prima di Stephen Colbert, ma di solito è stato spiegato non appena usato, come "la qualità di affermare concetti o fatti che uno desidera o ritiene essere veri, piuttosto che concetti o fatti noti 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 della logica booleana e delle tabelle di verità: questa ifaffermazione è decisamente vera e tale whileaffermazione è falsa fino a quando (i > k). Il mio istinto non ci arriva.

Se stai usando la verità nella programmazione, molto probabilmente stai usando il raro significato di verità del XIX secolo , e sarebbe sia più chiaro (e probabilmente più corretto) usare la verità o semplicemente la verità .

Ngram :

Ngram

Naturalmente, l'inglese cambia man mano che cambia l'uso e alcune persone hanno iniziato a usare la verità per dire verità nella programmazione. Tuttavia, vorrei sconsigliare la verità per evitare qualsiasi ambiguità di significato ("vera verità assoluta" vs. "il mio istinto di verità, indipendentemente dai fatti").


2
Personalmente ho sempre usato la parola verità, quando leggo verità, non la considero nemmeno una parola vera.
Ramhound,

@Ramhound: non esiste "non una vera parola". Se una parola può essere usata per la comunicazione tra gli umani, è una parola vera.
Jacques

@Hugo: Merriam-Webster non è autorevole quando si parla di gergo tecnico. Molte parole hanno un significato diverso in CS rispetto al linguaggio comune.
Jacques

@JacquesB La domanda è se si tratta di "un vero termine", ed è stato usato nell'informatica prima o dopo che Colbert l'ha resa popolare, quindi le definizioni dei dizionari standard aiutano a risolverli.
Hugo

@Hugo: Stai affermando che l'uso di un termine tecnico è "chiaramente errato" a causa della sua definizione in un dizionario comune (non specifico per l'IT). E il tuo suggerimento di usare la parola "verità" manca invece del punto intero del termine "verità", che viene applicato a valori non booleani.
JacquesB,

9

È un termine noto e accettabile in alcuni ambienti (ad esempio confronti booleani di JavaScript). Come tale, è un termine "reale". In virtù dell'utilizzo diventa legittimo.

Tutti questi termini provengono da qualche parte - non compaiono nel mondo completamente formati e con significati stabiliti (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, è una questione diversa. Per quanto ne so, non esiste un termine formale per questo significato confuso di valori booleani.


@Downvoter - ti interessa commentare?
Oded,

3
In realtà i termini "bug" come problema venivano usati prima dei computer moderni. Edison usò in una lettera del 1787. All'epoca erano termini comuni per problemi di ingegneria. La storia di Grace Hopper è un po 'ironica del fatto che il bug che hanno trovato fosse davvero un bug.
Jim C

@JimC - Abbastanza giusto, ma ancora, quando le persone dicono "bug" oggi, non significano la stessa cosa che hanno fatto ai tempi di Edison.
Oded,

4
Edison scrisse nel 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.Mi sembra molto simile ai moderni bug del software.
Hugo,

8

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

Da The Elements of JavaScript Style di Crockford

L'operatore == non deve essere usato per confrontare i valori con true perché digita la coercizione. Se il nostro intento è determinare se dwsv.checked è il valore booleano vero, allora dobbiamo usare l'operatore ===. Se ci interessa solo che un valore sia veritiero (e non falso), allora è meglio non usare affatto un operatore di uguaglianza.

Ad esempio, a causa del tipo di coercizione., 1 == vero è vero, ma 1 === vero è falso. L'operatore == può nascondere errori di tipo.

In questo contesto il termine è sia legittimo che utile.

Come ulteriore illustrazione 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

+1 e Python fa la stessa cosa. []viene valutato come falso se usato come booleano, ecc.
Izkata,

1
+1 Questa dovrebbe essere la risposta. Mi sono spesso ritrovato a parlare della "veridicità" di varie strutture di dati. O più frequentemente, mi ritrovo a dire "X è falsy" dove X è come le idee 0, None, [], e così via.

2

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


Il problema è che ora che la definizione di "Colbert" è diventata popolare, sarà molto più difficile trovare riferimenti oscuri in lavori più vecchi :-)
Dean Harding,

Non ne ho trovato nessuno da ACM o IEEE prima del 2006.
Hugo,

@DeanHarding Esistono modi per cercare parole prima di una determinata data, ad esempio utilizzando Google Libri e in Usenet .
Hugo,

2

Verità è un termine legittimo e ben definito in Clojure, dove si riferisce 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 veritieri sono falsee nil, tutto il resto è considerato veritiero.

Credo che la giustificazione filosofica di ciò sia che si nilpuò intendere che "non esiste", quindi l'affermazione 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.


1

La "verità" è qualcosa che mi assicuro di capire quando sto imparando una nuova lingua, poiché tutti la affrontano in modo diverso. Nella mia prima lingua base 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 alcune è vera.

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

Sia che lo dicessimo "verità" o che usassimo qualche altro termine (penso che l'intestazione di quel capitolo del libro sui cammelli sia "What Is Truth?"), I programmatori avevano una presa su valori variabili della cosa assoluta chiamata "vero e falso" molto prima che Colbert arrivasse e indicasse la piegatura del "vero" nel discorso pubblico.


0

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

Qualsiasi parola che gli umani usano è "reale" quando usata da più persone che significano (più o meno) la stessa cosa. Tutte le lingue sono in continua evoluzione, così come la lingua del programmatore.

Ad esempio, in Ruby, il framework di test rspec oggi preferisce xyz.should be_truthyinvece di xyz.should be_true. O xyz.should be_falseyinvece di xyz.should be_false. Certo, invece di quest'ultimo avrebbero potuto scegliere xyz.should be_wrong. Ma non lo fecero, quindi possiamo anche chiedere se "falsità" è un termine.

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

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


1
Come (quasi) tutti sanno, qualcosa è reale se e solo se la sua parte immaginaria è falsa .
Ben Voigt,

-3

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.