因此,有很多问题使用“真实性”一词来表示表达式的真值,无论其原始类型如何,当将其评估为布尔值时。在动态语言中非常有用。
所以我的问题是,这是一个真实的术语吗?如果这样的话,我们是否在斯蒂芬·科尔伯特(Stephen Colbert)流行之前使用它?还是我们后来才采用它?在这种情况下,我上面给出的定义的正确术语是什么?
因此,有很多问题使用“真实性”一词来表示表达式的真值,无论其原始类型如何,当将其评估为布尔值时。在动态语言中非常有用。
所以我的问题是,这是一个真实的术语吗?如果这样的话,我们是否在斯蒂芬·科尔伯特(Stephen Colbert)流行之前使用它?还是我们后来才采用它?在这种情况下,我上面给出的定义的正确术语是什么?
Answers:
Merriam-Webster将其定义为:
牛津在线词典将其定义为:
名词
[ mass noun ] 非正式
的,看起来或被感知为真实的质量,即使不一定是真实的。起源:
19世纪初(在“真实”的意义上):由美国幽默家斯蒂芬·科尔伯特(Stephen Colbert)在现代意义上创造
它在斯蒂芬·科尔伯特(Stephen Colbert)之前曾在Usenet上使用过一点,但通常在使用后立即加以解释,例如“陈述一个希望或相信是真实的概念或事实的质量,而不是已知的真实概念或事实”。
回到编程。无论起源如何,这种现代意义上的“即使在事实都不成立的情况下,也都来自真相”在大多数时候讨论布尔逻辑和真值表时显然是不正确的:该if
语句绝对是正确的,而while
直到为止该语句都是错误的(i > k)
。我没有直觉。
如果您在使用感实性编程,很有可能你正在使用的19世纪罕见的意思真实性,这将是双方更清晰的(而且可能更正确)使用真实或只是真相。
当然,英语变化的使用变化,有的人已经开始使用感实性是指真理的节目。但是,我建议不要使用真实性,以避免任何含糊的含义(“真实的绝对真实”与“我的内心对真实的感觉,无论事实如何”)。
这个术语在某些圈子内是已知的并且可以接受的(例如JavaScript布尔比较)。因此,这是一个“真实”术语。通过使用它变得合法。
所有这些术语都来自某个地方-它们并没有完全融入世界并具有确定的含义(例如-当电子计算机刚刚开始存在时,软件错误就没有现在的含义)。
无论是学术上接受的-都是另一回事。据我所知,布尔值的模糊含义尚无正式术语。
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.
对我来说,听起来很像现代软件错误。
我认为真理是JavaScript评估中使用的合法术语。道格拉斯·克罗克福德(Douglas Crockford)关于JavaScript的书-“ JavaScript的优良部分”定义了JavaScript“如果”评估为“真实”的术语。同样,他将JavaScript评估为false的术语定义为“ falsy”。他还使用该术语来强调'=='评估在JavaScript中的工作方式(这与许多JavaScript用户似乎认为它起作用的方式不同)。
==运算符不应用于将值与true进行比较,因为它确实会强制转换。如果我们的目的是确定dwsv.checked是否为布尔值true,则必须使用===运算符。如果我们只关心值是真实的(而不是虚假的),那么最好根本不使用相等运算符。
例如,由于类型为强制,1 == true为true,但是1 === true为false。==运算符可以隐藏类型错误。
在这种情况下,该术语既合法又有用。
作为在此上下文中对是非的进一步说明,这些情况是说明性的。
'' == '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
[]
作为一个布尔等使用时被评估为假
当我选择一种新语言时,我确保我能理解“真实性”,因为他们对语言的处理方式有所不同。在我的Perl家庭基础第一语言中,字符串“ 0”为false。在许多语言中,这是一个具有内容的字符串,因此是正确的。在某些语言中,空字符串“”为false,在某些情况下为true。
理解语言设计师对真实性所做的选择,可以使您对他们的想法有很多了解,并开始将您带入语言的概念领域。
无论我们将其拼写为“真实性”还是使用其他术语(我认为骆驼书中该章的标题为“ What Is Truth?”),程序员都可以掌握各种绝对值的真实性,即“真与假”。早在科尔伯特(Colbert)出现并指出公共话语中“真实”的弯曲之前。
让我再问一遍:什么是“真实术语”?
当多个人使用(或多或少)相同的事物时,人类使用的任何单词都是“真实的”。所有语言都在不断发展,程序员的语言也在不断发展。
例如,在Ruby中,如今的rspec测试框架更喜欢使用xyz.should be_truthy
而不是xyz.should be_true
。或者xyz.should be_falsey
代替xyz.should be_false
。当然,他们本来可以选择后者而不是后者xyz.should be_wrong
。但是他们没有,所以我们也可以问“假”是否是一个术语。
现在它是。好吧 至少在使用这些术语的社区中。不要问你的律师或医生。:)
如果您要问“普通民众凭直觉知道真相是什么”,那么答案可能是“否”。