SOには、「真偽」という言葉を使用して、元の型に関係なく、ブール値として評価される式の真理値を意味する質問がかなりあります。動的言語では非常に便利です。
私の質問は、これは本当の用語ですか、もしそうなら、スティーブン・コルバートがそれを普及させる前にそれを使用していましたか?それとも、後でそれを採用しただけですか?その場合、上記で定義した正しい用語は何ですか?
SOには、「真偽」という言葉を使用して、元の型に関係なく、ブール値として評価される式の真理値を意味する質問がかなりあります。動的言語では非常に便利です。
私の質問は、これは本当の用語ですか、もしそうなら、スティーブン・コルバートがそれを普及させる前にそれを使用していましたか?それとも、後でそれを採用しただけですか?その場合、上記で定義した正しい用語は何ですか?
回答:
たくさんのあります議論オーバーtruthinessが。
Merriam-Websterは次のように定義しています:
Oxford Dictionaries Onlineはそれを次のように定義しています:
noun
[ mass noun ] 必ずしも真実であるとは限らないが、見た目または真実であると感じられることの質を非公式に
する。起源:
19世紀初頭(ある意味「真実」):米国のユーモア作家、スティーブンコルバートによって現代の意味で造られた
それは上の少し使用されたUsenetのスティーブン・コルベールに先立っを、通常のような、とすぐに使用されるように説明した「概念や事実1つの明記の品質願いをかと考えているという概念や事実よりも、真であることが知られている真であると」。
プログラミングに戻ります。起源に関係なく、ブール論理と真理値表を議論するとき、この「現代からの真実」は、ほとんどの場合、明らかに間違っています。このif
陳述は間違いなく真であり、そのwhile
陳述はまで(i > k)
です。私の腸の感覚はそれに入らない。
あなたが使用している場合truthinessをプログラミングで、最も可能性の高いあなたは、の意味珍しい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の評価で使用されている正当な用語として真理を考えています。ダグラス・クロックフォードのJavaScriptに関する本-「JavaScript the Good Parts」は、JavaScriptの「if」が「真」であると評価する用語を定義しています。同様に、JavaScriptがfalseと評価する用語を「偽」と定義しています。また、この用語を使用して、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
[]
ブール値として使用された場合などにfalseと評価されます
真実性は、スティーブン・コルバートがそれを使用するずっと前から言葉でした。ロジック/ AIの論文や一部の物理の論文でも見たことがあると断言できましたが、スティーブンコルバートのショーよりも前のものへの言及は見当たりません。
真実性は、Clojureで正当かつ明確に定義された用語であり、条件付きステートメントで真と見なされる値のプロパティを指します。
したがって、以下の条件関数value
は、「真」の場合にのみ呼び出されます
(if value
(some-conditional-function))
唯一の非真実の値はとでfalse
ありnil
、他のすべては真実と見なされます。
これに対する哲学的正当性は、nil
「存在しない」ことを意味すると考えられるため、条件文は値の存在をテストできると信じています。
他の多くの言語にも、条件付きコンテキストで真と見なされる類似した値の概念があります。したがって、結論として、このように使用される場合、真理は正当なプログラミング用語と見なされるべきだと主張します。
「真実」とは、新しい言語を取り上げるときに理解していることを確認するものです。私のホームベースのPerlの第一言語では、文字列「0」は偽です。多くの言語では、これはコンテンツを含む文字列であり、したがって真です。一部の言語では、空の文字列 ""はfalseであり、一部の言語ではtrueです。
言語設計者が真実性について行った選択を理解することで、自分の考えについて多くのことを知ることができ、言語の概念的な世界にあなたを浸し始めます。
「真実」と綴るか、他の用語(キャメルブックのその章のヘッダーは「真実」と思います)を使用するかどうかにかかわらず、プログラマーは「真と偽」と呼ばれる絶対的なもののさまざまな値を把握していましたコルバートがやって来て、公の言説における「真実」の曲げを指摘するずっと前に。
もう一度お聞きします。「本当の用語」とは何ですか?
(多かれ少なかれ)同じことを意味する複数の人が使用する場合、人間が使用する単語はすべて「本物」です。すべての言語は常に進化しており、プログラマーの言語も進化しています。
たとえば、Rubyでは、rspecテストフレームワークは現在ではxyz.should be_truthy
なくを好んでいxyz.should be_true
ます。またはのxyz.should be_falsey
代わりにxyz.should be_false
。もちろん、後者の代わりに彼らは選んだかもしれませんxyz.should be_wrong
。しかし、彼らはそうしなかったので、「偽り」が用語かどうかを尋ねることもできます。
今です。やめて 少なくともこれらの用語を使用するコミュニティでは。弁護士や医師に尋ねないでください。:)
「一般大衆が真実とは何かを直観的に知っているのか」と尋ねるつもりなら、答えはおそらく「いいえ」でしょう。