“ ความจริง” เป็นคำที่ถูกต้องหรือไม่


11

ดังนั้นมีคำถามสองสามข้อที่ใช้คำว่า "ความจริง" เพื่อหมายถึงคุณค่าความจริงของการแสดงออกเมื่อประเมินว่าเป็นบูลีนโดยไม่คำนึงถึงประเภทดั้งเดิม มันมีประโยชน์มากในภาษาแบบไดนามิก

ดังนั้นคำถามของฉันคือคำนี้จริงหรือไม่และถ้าเป็นเช่นนั้นเราใช้ก่อนที่ Stephen Colbert จะทำให้มันเป็นที่นิยมหรือไม่? หรือว่าเราเพิ่งนำมาใช้หลังจากนั้น? ในกรณีนั้นคำที่ถูกต้องที่มีความหมายที่ฉันให้ไว้ข้างต้นคืออะไร


2
en.wikipedia.org/wiki/Truthinessสร้างสิ่งที่คุณต้องการ ; ->
Jeff Grigg

1
ฉันคิดว่ามันมักจะค่อนข้างดูถูก (โดย Stephen Colbert) เนื่องจากมีความเด็ดขาดมากขึ้นและมีโอกาสมากขึ้นสำหรับสิ่งที่ผิดเมื่อเทียบกับค่าจริง / เท็จ แต่มันก็ธรรมดาพอที่จะมีประโยชน์ที่จะได้คำหนึ่งและ "ความจริง" ทำให้เกิดความคิดที่ชัดเจน ดังนั้นฉันจะพิจารณาว่าถูกต้องตามกฎหมาย แต่ความชอบธรรมนั้นถูกกำหนดโดยการใช้งานที่ได้รับความนิยมเมื่อเวลาผ่านไปดังนั้น ณ จุดนี้จึงไม่มีคำตอบที่ชัดเจนหรือเชื่อถือได้สำหรับคำถามของคุณ
psr

คำตอบ:


4

มีจำนวนมากเป็นอภิปรายมากกว่าtruthiness

Merriam-Websterกำหนดเป็น:


  1. ความจริง(คำนาม) 1: "ความจริงที่มาจากอุทรไม่ใช่หนังสือ" (Stephen Colbert, Comedy Central's "The Colbert Report," October 2005)
    2: "คุณภาพของแนวคิดหรือข้อเท็จจริงที่ต้องการจะเป็นจริงมากกว่า แนวคิดหรือข้อเท็จจริงที่ทราบว่าเป็นจริง "(American Dialect Society, มกราคม 2549)

Oxford Dictionaries Onlineนิยามว่าเป็น:

คำนาม
[ คำนามจำนวนมาก ] ไม่
เป็นทางการถึงคุณภาพของการดูหรือรู้สึกว่าเป็นจริงแม้ว่าจะไม่จำเป็นก็ตาม

ที่มา :
ต้นศตวรรษที่ 19 (ในความหมาย 'ความจริง'): ประกาศเกียรติคุณในความรู้สึกที่ทันสมัยโดยนักแสดงตลก US Stephen Colbert

มันเคยใช้กับUsenetนิดหน่อยก่อนสตีเฟ่นฌ็อง แต่มักจะอธิบายทันทีที่ใช้เช่น "คุณภาพของแนวคิดหรือข้อเท็จจริงที่ระบุความปรารถนาหรือเชื่อว่าเป็นจริงมากกว่าแนวคิดหรือข้อเท็จจริงที่เป็นจริง"

กลับไปที่การเขียนโปรแกรม โดยไม่คำนึงถึงแหล่งที่มานี้รู้สึกที่ทันสมัยของ "ความจริงจากลำไส้แม้ว่าไม่เป็นความจริง" ไม่ถูกต้องอย่างชัดเจนมากที่สุดของเวลาเมื่อพูดถึงตรรกะบูลีนและความจริงตาราง: นี้ifคำสั่งเป็นความจริงแน่นอนและที่คำสั่งเป็นเท็จจนwhile (i > k)ความรู้สึกของฉันไม่ได้เกิดขึ้น

หากคุณกำลังใช้truthinessในการเขียนโปรแกรมส่วนใหญ่มีแนวโน้มที่คุณกำลังใช้ศตวรรษที่ 19 ที่หายากความหมายของความเป็นจริงและมันจะเป็นได้ทั้งที่ชัดเจน (และเนื้อหาที่ถูกต้องมากกว่า) เพื่อการใช้งานจริงหรือเพียงแค่ความจริง

Ngram :

Ngram

แน่นอนว่าภาษาอังกฤษมีการเปลี่ยนแปลงการเปลี่ยนแปลงการใช้งานและบางคนได้เริ่มต้นที่จะใช้truthinessจะหมายถึงความจริงในการเขียนโปรแกรม แต่ผมจะให้คำแนะนำกับtruthinessเพื่อหลีกเลี่ยงความคลุมเครือของความหมายใด ๆ ( "ความจริงจริงแน่นอน" กับ "ความรู้สึกลำไส้ของฉันของความเป็นจริงโดยไม่คำนึงถึงข้อเท็จจริง")


2
โดยส่วนตัวแล้วฉันมักจะใช้คำว่าความจริงเมื่อฉันอ่านความจริงฉันไม่ได้คิดว่ามันเป็นคำที่แท้จริง
Ramhound

@ แรมฮาวด์: ไม่มีสิ่งเช่น "ไม่ใช่คำพูดจริง" หากสามารถใช้คำเพื่อการสื่อสารระหว่างมนุษย์มันเป็นคำที่แท้จริง
JacquesB

@Hugo: Merriam-Webster ไม่ได้มีอำนาจเมื่อพูดถึงศัพท์แสงทางเทคนิค คำจำนวนมากมีความหมายที่แตกต่างใน CS มากกว่าในภาษาทั่วไป
JacquesB

@JacquesB คำถามเกี่ยวกับว่ามันเป็น "คำจริง" หรือไม่และใช้ในการคำนวณก่อนหรือหลัง Colbert ทำให้เป็นที่นิยมของมันดังนั้นคำจำกัดความจากพจนานุกรมมาตรฐานช่วยจัดการกับสิ่งเหล่านี้
Hugo

@Hugo: คุณกำลังระบุว่าการใช้คำศัพท์ทางเทคนิคคือ "ไม่ถูกต้องชัดเจน" เนื่องจากคำจำกัดความในพจนานุกรมทั่วไป (ไม่ใช่เฉพาะ IT) และข้อเสนอแนะของคุณที่จะใช้คำว่า "ความจริง" แทนที่จะคิดถึงจุดทั้งหมดของคำว่า "ความจริง" ซึ่งใช้กับค่าที่ไม่ใช่บูลีน
JacquesB

9

เป็นคำที่รู้จักและยอมรับได้ในแวดวงบางอย่าง (เช่นการเปรียบเทียบแบบบูลีน JavaScript) เช่นนี้มันเป็นคำว่า "ของจริง" โดยอาศัยอำนาจในการใช้มันจะกลายเป็นถูกต้องตามกฎหมาย

คำศัพท์เหล่านี้มาจากที่ไหนสักแห่ง - พวกเขาไม่ได้ปรากฏตัวในโลกที่เกิดขึ้นอย่างสมบูรณ์และมีความหมายที่จัดตั้งขึ้น (เช่น - ข้อผิดพลาดซอฟต์แวร์ไม่ได้มีความหมายว่าพวกเขามีตอนนี้เมื่อคอมพิวเตอร์อิเล็กทรอนิกส์เพิ่งเริ่มมีอยู่)

ไม่ว่าจะเป็นที่ยอมรับทางวิชาการ - นั่นเป็นเรื่องที่แตกต่าง เท่าที่ฉันรู้ไม่มีคำที่เป็นทางการสำหรับความหมายคลุมเครือของค่าบูลีน ..


@Downvoter - สนใจที่จะแสดงความคิดเห็น?
Oded

3
จริงๆแล้วคำว่า "บั๊ก" นั้นเป็นปัญหาถูกนำมาใช้กับคอมพิวเตอร์สมัยใหม่ Edison ใช้ในจดหมาย 1787 มันเป็นคำทั่วไปสำหรับปัญหาทางวิศวกรรมย้อนหลัง เรื่องราวของ Grace Hopper เป็นเรื่องประชดที่พวกเขาพบว่าเป็นข้อผิดพลาดจริงๆ
Jim C

@JimC - ยุติธรรมเพียงพอ แต่ถึงอย่างนั้นเมื่อผู้คนพูดว่า "บั๊ก" วันนี้พวกเขาไม่ได้มีความหมายเหมือนกับที่เคยทำในสมัยของเอดิสัน
Oded

4
Edison เขียนเมื่อปี 2421: 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.ฟังดูคล้ายกับบั๊กซอฟต์แวร์สมัยใหม่สำหรับฉัน
Hugo

8

ฉันถือว่าความจริงเป็นคำที่ถูกต้องตามกฎหมายในการใช้งานมากกว่าการประเมินผล JavaScript หนังสือของ Douglas Crockford บน JavaScript - 'JavaScript the Good Parts' กำหนดเงื่อนไขที่ JavaScript 'ถ้า' ประเมินว่าเป็นความจริงว่าเป็น 'ความจริง' เขากำหนดเงื่อนไขที่ JavaScript ประเมินว่าเป็นเท็จเป็น 'falsy' อย่างเท่าเทียมกัน นอกจากนี้เขายังใช้คำศัพท์เพื่อเน้นวิธีการประเมินผล '==' ใน JavaScript (ซึ่งแตกต่างจากวิธีที่ผู้ใช้ JavaScript ดูเหมือนจะเชื่อว่าใช้งานได้)

จากองค์ประกอบของสไตล์ JavaScript ของ Crockford

ไม่ควรใช้โอเปอเรเตอร์ == สำหรับการเปรียบเทียบค่ากับจริงเพราะเป็นประเภทการข่มขู่ หากเจตนาของเราคือการพิจารณาว่า dwsv.checked เป็นค่าบูลีนจริงหรือไม่นั้นเราจะต้องใช้ตัวดำเนินการ === ถ้าเราเพียงแคร์ว่าคุณค่านั้นเป็นความจริง (และไม่เป็นเท็จ) ดังนั้นจึงเป็นการดีกว่าที่จะไม่ใช้ตัวดำเนินการความเท่าเทียมกันเลย

ตัวอย่างเช่นเนื่องจากชนิดของการข่มขู่. 1 == จริงเป็นจริง แต่ 1 === จริงเป็นเท็จ ผู้ประกอบการ == สามารถซ่อนข้อผิดพลาดประเภท

ในบริบทนี้คำว่าถูกต้องและมีประโยชน์

ในฐานะที่เป็นตัวอย่างเพิ่มเติมของความจริงและเท็จในบริบทนี้กรณีเหล่านี้เป็นตัวอย่าง

'' == '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

+1 และ Python ทำสิ่งเดียวกัน []ได้รับการประเมินเป็นเท็จเมื่อใช้เป็นแบบบูล ฯลฯ
Izkata

1
+1 นี่คือคำตอบ ฉันมักจะพบว่าตัวเองพูดถึง "ความจริง" ของโครงสร้างข้อมูลต่างๆ หรือบ่อยครั้งมากขึ้นฉันพบตัวเองว่า "X คือ falsy" ที่ X คือความคิดชอบ0, None, []และอื่น ๆ

2

ความจริงเป็นคำที่ใช้กันมานานก่อนที่สตีเฟ่นฌ็องจะใช้มัน ฉันสาบานได้ว่าฉันได้เห็นมันในแบบลอจิก / AI และในเอกสารฟิสิกส์บางอย่างเช่นกัน แต่ดูเหมือนจะไม่สามารถอ้างอิงถึงสิ่งที่มาก่อนการแสดงของ Stephen Colbert


ปัญหาคือตอนนี้คำจำกัดความของ "ฌ็องเบิร์ต" ได้กลายเป็นที่นิยมมันจะเป็นเรื่องยากมากที่จะหาการอ้างอิงที่คลุมเครือในผลงานที่เก่ากว่า :-)
Dean Harding

ฉันไม่สามารถหาใด ๆ จากพลอากาศเอกหรือIEEEก่อนปี 2006
ฮิวโก้

@DeanHarding มีวิธีการของการค้นหาคำก่อนวันที่กำหนดเช่นใช้เป็นGoogle หนังสือและในUsenet
Hugo

2

ความจริงเป็นคำที่ถูกต้องตามกฎหมายและกำหนดไว้อย่างดีใน Clojure ซึ่งมันหมายถึงทรัพย์สินของมูลค่าการพิจารณาความจริงในคำสั่งตามเงื่อนไข

ดังนั้นฟังก์ชั่นตามเงื่อนไขด้านล่างนี้จะถูกเรียกvalueก็ต่อเมื่อเป็น "ความจริง"

  (if value
    (some-conditional-function))

ค่าที่ไม่เป็นความจริงเพียงอย่างเดียวคือfalseและnilทุกสิ่งอื่นถือว่าเป็นความจริง

ฉันเชื่อว่าเหตุผลเชิงปรัชญาสำหรับสิ่งนี้คือnilสามารถนำมาใช้เพื่อหมายถึง "ไม่มีตัวตน" ดังนั้นคำสั่งตามเงื่อนไขสามารถทดสอบการมีอยู่ของค่า

ภาษาอื่น ๆ อีกหลายคนมีแนวคิดที่คล้ายกันของค่านิยมที่จะถือว่าเป็นจริงในบริบทที่มีเงื่อนไขดังนั้นโดยสรุปแล้วฉันจะยืนยันว่าใช่ความจริงควรได้รับการพิจารณาว่าเป็นคำที่ถูกต้องตามกฎหมายเมื่อใช้ในลักษณะนี้


1

"ความจริง" เป็นสิ่งที่ฉันแน่ใจว่าฉันเข้าใจเมื่อฉันเลือกภาษาใหม่เนื่องจากพวกเขาทั้งหมดจัดการกับมันแตกต่างกัน ในภาษาแรกของ Perl ที่บ้านของฉันสตริง "0" เป็นเท็จ ในหลายภาษานั่นคือสตริงที่มีเนื้อหาและเป็นจริง ในบางภาษาสตริงว่าง "" เป็นเท็จและในบางภาษาเป็นจริง

การทำความเข้าใจกับตัวเลือกที่นักออกแบบภาษาทำขึ้นเกี่ยวกับความจริงจะบอกคุณมากมายเกี่ยวกับความคิดของพวกเขาและเริ่มซึมซับคุณเข้าสู่จักรวาลแห่งความคิดของภาษา

ไม่ว่าเราจะสะกดคำว่า "ความจริง" หรือใช้คำอื่น (ฉันคิดว่าส่วนหัวสำหรับบทนั้นในหนังสืออูฐคือ "ความจริงคืออะไร?") โปรแกรมเมอร์มีความเข้าใจในคุณค่าที่แตกต่างของสิ่งที่เรียกว่า "จริงและเท็จ" นานก่อนที่ฌ็องเข้ามาและชี้ให้เห็นถึงการโค้งงอของ "ความจริง" ในวาทกรรมสาธารณะ


0

ผมขอถามคุณกลับมาว่า "คำจริง" คืออะไร

คำที่มนุษย์ใช้คือ "ของจริง" เมื่อใช้โดยหลายคนหมายถึงสิ่งเดียวกัน (มากหรือน้อย) ทุกภาษาพัฒนาอย่างต่อเนื่องและเป็นภาษาของโปรแกรมเมอร์

ยกตัวอย่างเช่นในทับทิมกรอบการทดสอบ rspec ปัจจุบันชอบแทนxyz.should be_truthy xyz.should be_trueหรือแทนxyz.should be_falsey แน่นอนแทนหลังพวกเขาจะได้รับเลือกxyz.should be_false xyz.should be_wrongแต่พวกเขาไม่ได้ดังนั้นเราจึงสามารถถามได้ว่า "ความผิดพลาด" เป็นคำหรือไม่

ตอนนี้มันเป็น ปิด อย่างน้อยในชุมชนที่ใช้คำเหล่านี้ อย่าถามทนายหรือแพทย์ของคุณ :)

หากคุณตั้งใจจะถามว่า "ประชาชนทั่วไปรู้หรือไม่ว่าสัจธรรมคืออะไร" คำตอบก็น่าจะเป็น "ไม่"


1
ในฐานะที่เป็น (เกือบ) ทุกคนรู้สิ่งที่เป็นจริงและถ้าหากส่วนจินตภาพของมันคือ falsey
Ben Voigt

-3

ฉันได้เขียนระบบที่จะกำหนดโอกาส (ทางคณิตศาสตร์) ของคำสั่งบูลีนว่าเป็นจริงโดยให้ข้อมูลบางส่วน นั่นคือเราสามารถระบุได้ว่ามีโอกาส 73% ที่จะXเป็นจริงถ้าเรายังไม่มีข้อมูลเพียงพอที่จะพิสูจน์ว่า X เป็นจริง "ความจริง" จะเป็นวิธีที่ถูกต้องสมบูรณ์ในการอธิบายเปอร์เซ็นต์ความเชื่อใน X

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.