"Veracidade" é um termo legítimo de programação?

11

O SO tem algumas perguntas usando a palavra "veracidade" para significar o valor verdadeiro de uma expressão, quando avaliada como booleana, independentemente do seu tipo original. É muito útil em linguagens dinâmicas.

Então, minha pergunta é: esse é um termo real e, se sim, usá-lo antes de Stephen Colbert torná-lo popular? Ou nós apenas adotamos depois? Nesse caso, qual é o termo correto com a definição que dei acima?

Tesserex
fonte
2
pt.wikipedia.org/wiki/Truthiness Faça disso o que você deseja. ; ->
Jeff Grigg
1
Eu acho que geralmente significa um pouco pejorativamente (certamente por Stephen Colbert), pois há mais arbitrariedade e mais chances de as coisas darem errado em comparação com valores realmente verdadeiros / falsos. Mas é bastante comum que seja útil ter uma palavra para isso, e "veracidade" transmite a ideia de maneira bastante concisa. Portanto, eu consideraria legítimo, mas a legitimidade é determinada pelo uso popular ao longo do tempo, portanto, neste momento, não há uma resposta definitiva ou autorizada para sua pergunta.
psr

Respostas:

4

Há muito debate sobre a veracidade .

Merriam-Webster define como:

  1. veracidade (substantivo)
    1: "verdade que vem do intestino, não dos livros" (Stephen Colbert, "The Colbert Report", da Comedy Central, outubro de 2005)
    2: "a qualidade de preferir conceitos ou fatos que se deseja que sejam verdadeiros, em vez de conceitos ou fatos conhecidos como verdadeiros "(American Dialect Society, janeiro de 2006)

O Oxford Dictionaries Online o define como:

substantivo
[ substantivo em massa ] informal
a qualidade de parecer ou ser sentida como verdadeira, mesmo que não necessariamente verdadeira.

Origem :
início do século XIX (no sentido 'veracidade'): cunhado no sentido moderno pelo humorista americano Stephen Colbert

Ele foi usado um pouco na Usenet antes de Stephen Colbert, mas geralmente explicado assim que usado, como "a qualidade de declarar conceitos ou fatos que se deseja ou acredita que sejam verdadeiros, em vez de conceitos ou fatos conhecidos como verdadeiros".

Voltar à programação. Independentemente da origem, esse senso moderno de "verdade do intestino, mesmo que não seja verdadeira" é claramente incorreto na maioria das vezes ao discutir a lógica booleana e as tabelas de verdade: essa ifafirmação é definitivamente verdadeira e whileaté falsa (i > k). Meu pressentimento não entra nele.

Se você está usando a veracidade na programação, provavelmente está usando o raro significado de veracidade do século XIX , e seria mais claro (e sem dúvida mais correto) usar a veracidade ou simplesmente a verdade .

Ngram :

Ngram

Obviamente, o inglês muda conforme o uso muda, e algumas pessoas começaram a usar a verdade para significar verdade na programação. No entanto, eu desaconselharia a veracidade para evitar qualquer ambiguidade de significado ("verdade absoluta real" versus "meu instinto de verdade, independentemente dos fatos").

Hugo
fonte
2
Pessoalmente, sempre usei a palavra veracidade, quando leio veracidade, nem a considero uma palavra real.
Ramhound 31/10/11
@ Ramhound: Não existe algo como "não é uma palavra real". Se uma palavra pode ser usada para comunicação entre humanos, é uma palavra real.
JacquesB
@ Hugo: Merriam-Webster não é autoritário quando se trata de jargão técnico. Muitas palavras têm um significado diferente no CS e no idioma comum.
JacquesB
@JacquesB A questão é se é "um termo real" e foi usada na computação antes ou depois da Colbert ter popularizado, então as definições dos dicionários padrão ajudam a lidar com isso.
Hugo
@ Hugo: Você está afirmando que o uso de um termo técnico é "claramente incorreto" devido à sua definição em um dicionário comum (não específico da TI). E sua sugestão de usar a palavra "verdade" perde o argumento inteiro do termo "veracidade", que é aplicado a valores não-booleanos.
JacquesB
9

É um termo conhecido e aceitável dentro de certos círculos (por exemplo, comparações booleanas de JavaScript). Como tal, é um termo "real". Em virtude de ser usado, torna-se legítimo.

Todos esses termos vêm de algum lugar - eles não surgem no mundo totalmente formado e com significados estabelecidos (por exemplo - erros de software não tinham o significado que têm agora quando os computadores eletrônicos começaram a existir).

Se é aceito academicamente - isso é uma questão diferente. Até onde eu sei, não existe um termo formal para esse significado nebuloso de valores booleanos.

Oded
fonte
@Downvoter - gostaria de comentar?
Oded
3
Na verdade, os termos "bug" como um problema foram usados ​​antes dos computadores modernos. Edison usou em uma carta de 1787. Era um termo comum para problemas de engenharia na época. A história de Grace Hopper como um pouco de ironia de que o bug que encontraram foi realmente um bug.
Jim C
@JimC - É justo, mas ainda assim, quando as pessoas dizem "insetos" hoje, não significam a mesma coisa que fizeram nos dias de Edison.
Oded
4
Edison escreveu em 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.Parece muito semelhante a erros de software modernos para mim.
Hugo
8

Considero verdade como um termo legítimo em uso na avaliação do JavaScript. O livro de Douglas Crockford sobre JavaScript - 'JavaScript the Good Parts' define os termos que o JavaScript 'se' avalia como verdadeiro como 'verdadeiro'. Igualmente, ele define os termos que o JavaScript avalia como falso como 'falso'. Ele também usa o termo para destacar a maneira como a avaliação '==' funciona em JavaScript (que é diferente da maneira que muitos usuários de JavaScript parecem acreditar que funciona).

De Os Elementos do Estilo JavaScript de Crockford

O operador == não deve ser usado para comparar valores com true, porque digita coerção. Se nossa intenção é determinar se dwsv.checked é o valor booleano true, devemos usar o operador ===. Se apenas nos importamos que um valor seja verdadeiro (e não falso), é melhor não usar um operador de igualdade.

Por exemplo, devido à coerção do tipo., 1 == true é true, mas 1 === true é false. O operador == pode ocultar erros de tipo.

Nesse contexto, o termo é legítimo e útil.

Como uma ilustração adicional de verdadeiro e falso neste contexto, esses casos são 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
fonte
+1 e Python faz a mesma coisa. []é avaliada a falso quando usado como um booleano, etc
Izkata
1
+1 Essa deve ser a resposta. Eu sempre me encontrei falando sobre a "veracidade" de várias estruturas de dados. Ou mais frequentemente, eu encontro-me dizer "X é Falsas", onde X é ideias como 0, None, []e assim por diante.
2

Veracidade tem sido uma palavra muito antes de Stephen Colbert usá-la. Eu poderia jurar que já vi isso em artigos de lógica / IA e também em alguns artigos de física, mas não consigo encontrar uma referência a uma que anteceda o programa de Stephen Colbert.

blueberryfields
fonte
O problema é que, agora que a definição "Colbert" tornou-se popular, que vai ser muito mais difícil de encontrar referências obscuras em obras mais antigas :-)
Dean Harding
Eu não poderia encontrar qualquer da ACM ou IEEE antes de 2006.
Hugo
@DeanHarding Existem maneiras de pesquisar palavras antes de uma determinada data, por exemplo, usando o Google Livros e a Usenet .
31411 Hugo
2

Veracidade é um termo legítimo e bem definido em Clojure, em que se refere à propriedade de um valor que é considerado verdadeiro em uma declaração condicional.

Portanto, a função condicional abaixo só será chamada se valuefor "verdadeira"

  (if value
    (some-conditional-function))

Os únicos valores não verdadeiros são falsee nil, todo o resto é considerado verdade.

Acredito que a justificativa filosófica para isso é que nilpode ser entendida como "não existe", de modo que a declaração condicional é capaz de testar a existência de um valor.

Muitas outras linguagens também têm um conceito semelhante de valores que serão considerados verdadeiros em um contexto condicional; portanto, em conclusão, eu argumentaria que sim, a veracidade deve ser considerada como um termo de programação legítimo quando usado dessa maneira.

Mikera
fonte
1

"Verdade" é algo que eu entendo quando estou aprendendo um novo idioma, pois todos lidam com ele de maneira diferente. No meu primeiro idioma base do Perl, a string "0" é falsa. Em muitos idiomas, essa é uma sequência que possui conteúdo e, portanto, é verdadeira. Em alguns idiomas, a string vazia "" é falsa e, em alguns, é verdadeira.

Compreender as escolhas que os designers de linguagem fizeram sobre a verdade diz muito sobre o pensamento deles e começa a mergulhar no universo conceitual da linguagem.

Quer o tenhamos escrito como "veracidade" ou usado outro termo (acho que o cabeçalho desse capítulo no Camel Book é "O que é a verdade?"), Os programadores se preocuparam com os valores variáveis ​​do absoluto chamado "verdadeiro e falso". muito antes de Colbert aparecer e apontar a inclinação do "verdadeiro" no discurso público.

Dan Ray
fonte
0

Deixe-me perguntar: o que é um "termo real"?

Qualquer palavra que os humanos usem é "real" quando usada por várias pessoas, significando a (mais ou menos) a mesma coisa. Todos os idiomas estão em constante evolução, assim como o idioma do programador.

Por exemplo, em Ruby, a estrutura de teste rspec atualmente prefere em xyz.should be_truthyvez de xyz.should be_true. Ou em xyz.should be_falseyvez de xyz.should be_false. Claro, em vez do último, eles poderiam ter escolhido xyz.should be_wrong. Mas eles não o fizeram, então também podemos perguntar se "falsidade" é um termo.

Agora é Meio que. Pelo menos nas comunidades que usam esses termos. Não pergunte ao seu advogado ou médico. :)

Se você pretende perguntar "o público em geral sabe intuitivamente o que é a Verdade", a resposta provavelmente é "não".

AnoE
fonte
1
Como (quase) todo mundo sabe, algo é real se, e somente se, sua parte imaginária for falsa .
Ben Voigt
-3

Eu escrevi um sistema que determinaria a chance (matemática) de uma declaração booleana ser verdadeira, dados dados parciais. Ou seja, poderíamos determinar que havia 73% de chance de Xser verdade, se ainda não tivéssemos dados suficientes para estabelecer firmemente que X era verdade. "Verdade" seria uma maneira perfeitamente válida de descrever essa crença percentual em X.

MSalters
fonte