SO는 "진실성"이라는 단어를 사용하여 원래 유형에 관계없이 부울로 평가 될 때 표현의 진실 가치를 의미하는 꽤 많은 질문이 있습니다. 동적 언어에서 매우 유용합니다.
제 질문은 이것이 실제 용어입니까, 그렇다면 Stephen Colbert가 그것을 대중적으로 만들기 전에 그것을 사용 했습니까? 아니면 나중에 방금 채택 했습니까? 이 경우 위에 정의한 용어가 올바른 용어는 무엇입니까?
SO는 "진실성"이라는 단어를 사용하여 원래 유형에 관계없이 부울로 평가 될 때 표현의 진실 가치를 의미하는 꽤 많은 질문이 있습니다. 동적 언어에서 매우 유용합니다.
제 질문은 이것이 실제 용어입니까, 그렇다면 Stephen Colbert가 그것을 대중적으로 만들기 전에 그것을 사용 했습니까? 아니면 나중에 방금 채택 했습니까? 이 경우 위에 정의한 용어가 올바른 용어는 무엇입니까?
답변:
Merriam-Webster 는 다음과 같이 정의합니다.
Oxford Dictionaries Online 은 다음과 같이 정의합니다.
명사
[ 대명사 ] 는 반드시 사실 일 필요는 없지만 사실 인 것처럼 보이거나 느껴지는 것의 품질을 비공식적으로
나타냅니다.기원 :
19 세기 초 ( '진실성'의 의미에서) : 미국의 유머 학자 스티븐 콜버트 (Stephen Colbert)
그것은에 조금 사용 된 유즈넷 스티븐 콜버트 이전에,하지만 일반적으로 같은 즉시 사용 설명 "개념이나 사실 한 진술의 품질 소원 이나 생각 보다는 개념이나 사실보다, 사실로 알려져있는 사실로".
프로그래밍으로 돌아갑니다. 원점에 관계없이 부울 논리 및 진리표를 논의 할 때 "현장에서 진실"이라는 현대의 감각은 대부분 부정확합니다.이 if
진술은 확실히 사실이며 그 while
진술은까지 거짓 (i > k)
입니다. 내 직감이 들어오지 않습니다.
당신이 사용하는 경우 truthiness을 프로그래밍, 가장 가능성이 당신의 의미 드문 19 세기를 사용하고 진실성 , 그리고 모두 명확하게 (그리고 틀림없이 더 정확한)를 사용하는 것이 진실성 하거나 진실을 .
N 그램 :
물론, 사용이 변경됨에 따라 영어가 변경되고, 일부 사람들은 프로그래밍에서 진실 을 의미 하기 위해 진실성 을 사용하기 시작했습니다 . 그러나 나는 진실성 에 반대 하여 의미의 모호함 ( "실제 절대적 진실"대 "사실에 관계없이 나의 진실한 느낌")을 피할 것을 권고 한다.
특정 서클 내에서 알려져 있고 허용되는 용어입니다 (예 : 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 평가에 사용되는 합법적 인 용어로 간주합니다. JavaScript에 대한 Douglas Crockford의 저서- 'JavaScript the Good Parts'는 JavaScript 'if'가 '실제'로 평가되는 용어를 정의합니다. 마찬가지로 그는 JavaScript가 거짓으로 평가하는 용어를 '거짓'으로 정의합니다. 또한이 용어를 사용하여 '=='평가가 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
[]
부울 등으로 사용될 때 거짓으로 평가됩니다.
Stephen Colbert가 그것을 사용하기 오래 전에 진실은 한 마디였습니다. 나는 논리 / AI 논문과 일부 물리 논문에서도 그것을 보았지만 스티븐 콜버트의 쇼 이전의 논문에 대한 언급을 찾지 못하는 것을 맹세 할 수있다.
진실 은 Clojure에서 합법적이고 잘 정의 된 용어로, 조건문에서 참으로 간주되는 값의 속성을 나타냅니다.
따라서 아래의 조건부 함수 value
는 "truthy"인 경우에만 호출됩니다.
(if value
(some-conditional-function))
유일한 비 truthy 값은 다음 false
과 nil
, 다른 모든 것이 truthy 간주됩니다.
나는 이것에 대한 철학적 정당성이 nil
"존재하지 않음"을 의미 할 수 있다고 믿기 때문에 조건문은 가치의 존재를 테스트 할 수있다.
다른 많은 언어들도 조건부 문맥에서 참으로 간주 될 유사한 개념의 값을 가지고 있으므로 결론적으로 나는 진실성이 이런 식으로 사용될 때 합법적 인 프로그래밍 용어로 간주되어야한다고 주장 할 것이다.
"진실성"은 내가 다른 언어를 다룰 때 새 언어를 선택할 때 이해할 수있는 것입니다. 내 홈 기반 언어 인 Perl에서 문자열 "0"은 false입니다. 많은 언어에서, 그것은 내용을 가진 문자열이므로 사실입니다. 일부 언어에서는 빈 문자열 ""이 false이고 일부 언어가 true입니다.
언어 디자이너가 진실성에 대해 선택한 내용을 이해하면 자신의 생각에 대해 많은 것을 알 수 있으며 언어의 개념적 세계에 빠져 들기 시작합니다.
우리가 그것을 "진실성"이라고 쓰든 다른 용어를 사용하든 (Camel Book에서 그 장의 헤더는 "진실이란 무엇인가?") 프로그래머들은 "참과 거짓"이라는 절대적인 가치의 다양한 가치를 파악하고있었습니다. 콜버트가 와서 공개 담론에서 "참"의 구부러짐을 지적하기 훨씬 전에.
"실제"란 무엇입니까?
인간이 사용하는 모든 단어는 여러 사람이 사용할 때 "실제"이며 동일한 것을 의미합니다. 모든 언어는 끊임없이 발전하고 있으며 프로그래머의 언어도 마찬가지입니다.
예를 들어, Ruby에서 오늘날 rspec 테스트 프레임 워크는을 선호 xyz.should be_truthy
합니다 xyz.should be_true
. 또는 xyz.should be_falsey
대신 xyz.should be_false
. 물론, 후자 대신에 그들은 선택할 수있었습니다 xyz.should be_wrong
. 그러나 그들은 그렇게하지 않았기 때문에 "거짓"이 용어인지 물어볼 수도 있습니다.
지금이야. 종류 해제. 최소한이 용어를 사용하는 커뮤니티에서. 변호사 나 의사에게 문의하지 마십시오. :)
"일반 대중이 진실성을 무엇인지 직관적으로 알고 있습니까?"라는 질문을한다면 대답은 "아니오"일 것입니다.