¿Es "veracidad" un término de programación legítimo?

11

SO tiene bastantes preguntas utilizando la palabra "veracidad" para significar el valor de verdad de una expresión, cuando se evalúa como booleana, independientemente de su tipo original. Es muy útil en lenguajes dinámicos.

Entonces mi pregunta es, ¿es este un término real, y si es así, lo usamos antes de que Stephen Colbert lo hiciera popular? ¿O simplemente lo adoptamos después? En ese caso, ¿cuál es el término correcto con la definición que di anteriormente?

Tesserex
fuente
2
en.wikipedia.org/wiki/Truthiness Haz de él lo que desees. ; ->
Jeff Grigg
1
Creo que generalmente significa algo peyorativo (ciertamente por Stephen Colbert) ya que hay más arbitrariedad y más posibilidades de que las cosas salgan mal en comparación con los valores verdaderos / falsos. Pero es bastante común que sea útil tener una palabra para eso, y "veracidad" hace que la idea se transmita de manera bastante concisa. Por lo tanto, lo consideraría legítimo, pero la legitimidad está determinada por el uso popular a lo largo del tiempo, por lo que en este momento no hay una respuesta definitiva o autorizada a su pregunta.
psr

Respuestas:

4

Hay mucho debate sobre la veracidad .

Merriam-Webster lo define como:


  1. verdad (sustantivo) 1: "verdad que viene del intestino, no libros" (Stephen Colbert, "The Colbert Report" de Comedy Central, octubre de 2005)
    2: "la calidad de preferir conceptos o hechos que uno desea ser verdad, en lugar de conceptos o hechos que se sabe que son verdaderos "(American Dialect Society, enero de 2006)

Oxford Dictionaries Online lo define como:

sustantivo
[ sustantivo masivo ] informal
la cualidad de parecer o sentirse verdadero, incluso si no es necesariamente cierto.

Origen :
principios del siglo XIX (en el sentido de "veracidad"): acuñado en el sentido moderno por el humorista estadounidense Stephen Colbert

Se usó un poco en Usenet antes de Stephen Colbert, pero generalmente se explicaba tan pronto como se usaba, como "la calidad de expresar conceptos o hechos que uno desea o cree que son ciertos, en lugar de conceptos o hechos que se sabe que son verdaderos".

De vuelta a la programación. Independientemente del origen, este sentido moderno de "verdad desde el intestino, incluso si no es verdadero" es claramente incorrecto la mayor parte del tiempo cuando se discute la lógica booleana y las tablas de verdad: esta ifafirmación es definitivamente cierta, y esa whileafirmación es falsa hasta (i > k). Mi instinto no entra en eso.

Si está utilizando la veracidad en la programación, lo más probable es que esté usando el raro significado de veracidad del siglo XIX , y sería más claro (y posiblemente más correcto) usar la veracidad o simplemente la verdad .

Ngram :

Ngram

Por supuesto, el inglés cambia a medida que cambia el uso, y algunas personas han comenzado a usar la veracidad para significar la verdad en la programación. Sin embargo, desaconsejaría la veracidad para evitar cualquier ambigüedad de significado ("verdad absoluta real" frente a "mi instinto de verdad, independientemente de los hechos").

Hugo
fuente
2
Personalmente, siempre he usado la palabra veracidad, cuando leo la verdad, ni siquiera la considero una palabra real.
Ramhound
@Ramhound: No existe tal cosa como "no es una palabra real". Si una palabra se puede utilizar para la comunicación entre humanos, es una palabra real.
JacquesB
@Hugo: Merriam-Webster no tiene autoridad cuando se trata de jerga técnica. Muchas palabras tienen un significado diferente en CS que en lenguaje común.
JacquesB
@JacquesB La pregunta es si es "un término real" y si se usó en la informática antes o después de que Colbert lo popularizara, por lo que las definiciones de los diccionarios estándar ayudan a resolverlos.
Hugo
@Hugo: Usted está afirmando que el uso de un término técnico es "claramente incorrecto" debido a su definición en un diccionario común (no específico de TI). Y su sugerencia de usar la palabra "verdad" en su lugar pierde el punto completo del término "veracidad", que se aplica a los valores no booleanos.
JacquesB
9

Es un término conocido y aceptable dentro de ciertos círculos (por ejemplo, comparaciones booleanas de JavaScript). Como tal, es un término "real". En virtud de ser utilizado se convierte en legítimo.

Todos estos términos provienen de algún lugar: no aparecen en el mundo completamente formados y con un significado establecido (por ejemplo, los errores de software no tenían el significado que tenían ahora cuando las computadoras electrónicas comenzaron a existir).

Si es aceptado académicamente, ese es un asunto diferente. Hasta donde sé, no existe un término formal para este significado difuso de los valores booleanos.

Oded
fuente
@Downvoter: ¿quieres comentar?
Finalizado el
3
En realidad, los términos "error" como problema se usaban antes que las computadoras modernas. Edison lo usó en una carta de 1787. Era un término común para problemas de ingeniería en aquel entonces. La historia de Grace Hopper como un poco de ironía de que el error que encontraron fue realmente un error.
Jim C
@ JimC - Muy bien, pero aún así, cuando la gente dice "error" hoy, no significan lo mismo que en los días de Edison.
Finalizado el
44
Edison escribió en 1878: A 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.mí me suena muy similar a los errores de software modernos.
Hugo
8

Considero verdad como un término legítimo en uso sobre la evaluación de JavaScript. El libro de Douglas Crockford sobre JavaScript: 'JavaScript the Good Parts' define los términos que JavaScript 'si' evalúa como verdaderos para ser 'veraces'. Igualmente, define los términos que JavaScript evalúa como falsos como 'falsos'. También usa el término para resaltar la forma en que funciona la evaluación '==' en JavaScript (que es diferente a la forma en que muchos usuarios de JavaScript parecen creer que funciona).

De los elementos del estilo JavaScript de Crockford

El operador == no debe usarse para comparar valores con verdadero porque escribe coerción. Si nuestra intención es determinar si dwsv.checked es el valor booleano verdadero, entonces debemos usar el operador ===. Si solo nos importa que un valor sea verdadero (y no falso), entonces es mejor no usar un operador de igualdad en absoluto.

Por ejemplo, debido al tipo de coerción., 1 == verdadero es verdadero, pero 1 === verdadero es falso. El operador == puede ocultar errores de tipo.

En este contexto, el término es legítimo y útil.

Como otra ilustración de lo verdadero y lo falso en este contexto, estos casos son ilustrativos.

'' == '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
AlexC
fuente
+1, y Python hace lo mismo. []se evalúa a falso cuando se utiliza como un valor booleano, etc.
Izkata
1
+1 Esta debería ser la respuesta. A menudo me he encontrado hablando de la "veracidad" de varias estructuras de datos. O con mayor frecuencia, me encuentro diciendo "X es Falsy", donde X es como las ideas 0, None, [], y así sucesivamente.
2

La verdad ha sido una palabra mucho antes de que Stephen Colbert la haya usado. Podría jurar que lo he visto en documentos de lógica / IA, y también en algunos documentos de física, pero parece que no puedo encontrar una referencia a uno que sea anterior al programa de Stephen Colbert.

blueberryfields
fuente
El problema es que, ahora que la definición de "Colbert" se ha hecho popular, será mucho más difícil encontrar referencias oscuras en trabajos más antiguos :-)
Dean Harding
No pude encontrar ninguno de ACM o IEEE antes de 2006.
Hugo
@DeanHarding Hay formas de buscar palabras antes de una fecha determinada, por ejemplo, usando Google Books y en Usenet .
Hugo
2

Verdad es un término legítimo y bien definido en Clojure, donde se refiere a la propiedad de un valor que se considera verdadero en una declaración condicional.

Entonces, la función condicional a continuación solo se llamará si valuees "verdadera"

  (if value
    (some-conditional-function))

Los únicos valores no verídicos son falsey niltodo lo demás se considera veraz.

Creo que la justificación filosófica para esto es que nilse puede tomar como que significa "no existe", por lo que la declaración condicional puede probar la existencia de un valor.

Muchos otros lenguajes también tienen un concepto similar de valores que se considerarán verdaderos en un contexto condicional, por lo que en conclusión diría que sí, la veracidad debería considerarse como un término de programación legítimo cuando se usa de esta manera.

mikera
fuente
1

La "verdad" es algo que me aseguro de entender cuando estoy aprendiendo un nuevo idioma, ya que todos lo tratan de manera diferente. En mi primer idioma base de Perl, la cadena "0" es falsa. En muchos idiomas, esa es una cadena que tiene contenido y, por lo tanto, es verdadera. En algunos idiomas, la cadena vacía "" es falsa, y en algunos es verdadera.

Comprender las elecciones que los diseñadores de lenguaje tomaron sobre la veracidad le dice mucho sobre su pensamiento y comienza a sumergirlo en el universo conceptual del lenguaje.

Si lo deletreamos "veracidad" o si usamos algún otro término (creo que el encabezado de ese capítulo en el Libro Camel es "¿Qué es la verdad?"), Los programadores tenían un control sobre los valores variables de lo absoluto llamado "verdadero y falso" mucho antes de que Colbert apareciera y señalara la inclinación de "verdadero" en el discurso público.

Dan Ray
fuente
0

Déjame preguntarte: ¿qué es un "término real"?

Cualquier palabra que los humanos usen es "real" cuando la usan varias personas que significan (más o menos) lo mismo. Todos los lenguajes evolucionan constantemente, y también el lenguaje del programador.

Por ejemplo, en Ruby, el marco de prueba rspec hoy xyz.should be_truthyen día prefiere en lugar de xyz.should be_true. O en xyz.should be_falseylugar de xyz.should be_false. Por supuesto, en lugar de este último, podrían haber elegido xyz.should be_wrong. Pero no lo hicieron, así que también podemos preguntarnos si "falsedad" es un término.

Ahora es. Rematar Al menos en las comunidades que usan estos términos. No le pregunte a su abogado o médico. :)

Si tiene la intención de preguntar "¿el público en general sabe intuitivamente qué es la Verdad", entonces la respuesta es probablemente "no".

AnoE
fuente
1
Como (casi) todos saben, algo es real si y solo si su parte imaginaria es falsey .
Ben Voigt
-3

He escrito un sistema que determinaría la posibilidad (matemática) de que una declaración booleana sea verdadera, dados los datos parciales. Es decir, podríamos determinar que había un 73% de posibilidades de Xser cierto, si aún no contáramos con datos suficientes para establecer firmemente que X era cierto. "Verdad" sería una forma perfectamente válida de describir tal porcentaje de creencia en X.

MSalters
fuente