Apakah "kebenaran" adalah istilah pemrograman yang sah?


11

SO memiliki beberapa pertanyaan menggunakan kata "kebenaran" yang berarti nilai kebenaran ekspresi, ketika dievaluasi sebagai boolean, terlepas dari jenis aslinya. Ini sangat berguna dalam bahasa dinamis.

Jadi pertanyaan saya adalah, apakah ini istilah yang nyata, dan jika demikian apakah kita menggunakannya sebelum Stephen Colbert membuatnya populer? Atau apakah kita baru saja mengadopsinya? Dalam hal itu, apa istilah yang benar dengan definisi yang saya berikan di atas?


2
en.wikipedia.org/wiki/Truthiness Jadikan sesuai keinginan Anda. ; ->
Jeff Grigg

1
Saya pikir itu biasanya berarti agak merendahkan (tentu saja oleh Stephen Colbert) karena ada lebih banyak kesewenang-wenangan dan lebih banyak kesempatan untuk sesuatu yang salah dibandingkan dengan nilai sebenarnya benar / salah. Tapi itu cukup umum bahwa itu membantu untuk memiliki kata untuk itu, dan "kebenaran" menyampaikan ide dengan cukup ringkas. Jadi saya akan menganggapnya sah, tetapi legitimasi ditentukan oleh penggunaan populer dari waktu ke waktu, jadi pada titik ini tidak ada jawaban pasti atau otoritatif untuk pertanyaan Anda.
psr

Jawaban:


4

Ada banyak perdebatan tentang kebenaran .

Merriam-Webster mendefinisikannya sebagai:

  1. truthiness (kata benda)
    1: "kebenaran yang berasal dari usus, bukan buku" (Stephen Colbert, Comedy Central "The Colbert Report," Oktober 2005)
    2: "kualitas konsep atau fakta yang dipilih seseorang yang ingin menjadi kenyataan, daripada konsep atau fakta yang diketahui benar "(American Dialect Society, Januari 2006)

Kamus Oxford Online mendefinisikannya sebagai:

kata benda
[ mass noun ] informal
kualitas tampak atau dirasakan benar, bahkan jika tidak harus benar.

Asal :
awal abad ke-19 (dalam arti 'kebenaran'): diciptakan dalam arti modern oleh humoris AS Stephen Colbert

Itu digunakan sedikit pada Usenet sebelum Stephen Colbert, tetapi biasanya dijelaskan segera setelah digunakan, seperti "kualitas menyatakan konsep atau fakta yang seseorang inginkan atau yakini benar, daripada konsep atau fakta yang diketahui benar".

Kembali ke pemrograman. Terlepas dari asalnya, pengertian modern "kebenaran dari usus ini, bahkan jika tidak benar" sebagian besar jelas tidak benar ketika membahas logika Boolean dan tabel kebenaran: ifpernyataan ini benar, dan whilepernyataan itu salah sampai (i > k). Perasaan saya tidak masuk ke dalamnya.

Jika Anda menggunakan kebenaran dalam pemrograman, kemungkinan besar Anda menggunakan makna kejujuran abad ke-19 yang langka , dan akan lebih jelas (dan bisa dibilang lebih benar) untuk menggunakan kebenaran atau hanya kebenaran .

Ngram :

Ngram

Tentu saja, bahasa Inggris berubah seiring perubahan penggunaan, dan beberapa orang sudah mulai menggunakan kebenaran untuk berarti kebenaran dalam pemrograman. Namun, saya akan menyarankan agar tidak jujur untuk menghindari ambiguitas makna ("kebenaran absolut nyata" vs "perasaan kebenaran saya, terlepas dari fakta").


2
Saya pribadi selalu menggunakan kata kebenaran, ketika saya membaca kebenaran, saya bahkan tidak menganggapnya sebagai kata nyata.
Ramhound

@Ramhound: Tidak ada yang namanya "bukan kata yang nyata". Jika sebuah kata dapat digunakan untuk komunikasi di antara manusia, itu adalah kata yang nyata.
JacquesB

@Hugo: Merriam-Webster tidak berwibawa dalam hal jargon teknis. Banyak kata yang memiliki arti berbeda dalam CS dari pada bahasa umum.
JacquesB

@ JacquesB Pertanyaannya tentang apakah itu "istilah nyata", dan apakah itu digunakan dalam komputasi sebelum atau setelah Colbert mempopulerkannya, sehingga definisi dari kamus standar membantu mengatasinya.
Hugo

@Hugo: Anda menyatakan bahwa penggunaan istilah teknis "jelas salah" karena definisi dalam kamus umum (bukan khusus IT). Dan saran Anda untuk menggunakan kata "kebenaran" bukannya melewatkan seluruh inti dari istilah "kebenaran", yang diterapkan pada nilai-nilai non-boolean.
JacquesB

9

Ini adalah istilah yang dikenal dan dapat diterima di kalangan tertentu (misalnya perbandingan JavaScript Boolean). Dengan demikian, ini adalah istilah "nyata". Karena digunakan itu menjadi sah.

Semua istilah seperti itu datang dari suatu tempat - mereka tidak muncul ke dunia sepenuhnya terbentuk dan dengan makna yang mapan (misalnya - bug perangkat lunak tidak memiliki arti yang mereka miliki sekarang ketika komputer elektronik baru mulai ada).

Apakah itu diterima secara akademis - itu masalah lain. Sejauh yang saya tahu tidak ada istilah formal untuk makna fuzzy dari nilai boolean ini.


@Downvoter - peduli mengomentari?
Oded

3
Sebenarnya istilah "bug" sebagai masalah digunakan sebelum komputer modern. Edison digunakan dalam surat 1787. Itu adalah istilah umum untuk masalah teknik saat itu. Kisah Grace Hopper sebagai sedikit ironi bahwa bug yang mereka temukan benar-benar bug.
Jim C

@JimC - Cukup adil, tapi tetap saja, ketika orang mengatakan "bug" hari ini, mereka tidak bermaksud hal yang sama seperti yang mereka lakukan di zaman Edison.
Oded

4
Edison menulis pada tahun 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.Kedengarannya sangat mirip dengan bug perangkat lunak modern bagi saya.
Hugo

8

Saya menganggap kebenaran sebagai istilah yang sah untuk digunakan dalam evaluasi JavaScript. Buku Douglas Crockford tentang JavaScript - 'JavaScript Bagian yang Baik' mendefinisikan istilah yang dievaluasi oleh JavaScript 'jika' benar sebagai 'benar'. Sama halnya ia mendefinisikan istilah yang dievaluasi oleh JavaScript menjadi false sebagai 'falsy'. Dia juga menggunakan istilah ini untuk menyoroti cara evaluasi '==' bekerja di JavaScript (yang berbeda dengan cara yang tampaknya diyakini oleh banyak pengguna JavaScript).

Dari The Elements of JavaScript Style karya Crockford

Operator == tidak boleh digunakan untuk membandingkan nilai dengan true karena itu memang tipe paksaan. Jika maksud kami adalah untuk menentukan apakah dwsv.checked adalah nilai boolean benar, maka kita harus menggunakan operator ===. Jika kita hanya peduli bahwa suatu nilai itu benar (dan bukan palsu) maka lebih baik untuk tidak menggunakan operator kesetaraan sama sekali.

Misalnya, karena tipe paksaan., 1 == true adalah true, tetapi 1 === true salah. Operator == dapat menyembunyikan kesalahan tipe.

Dalam konteks ini istilah ini sah dan bermanfaat.

Sebagai ilustrasi lebih lanjut tentang benar dan salah dalam konteks ini, kasus-kasus ini bersifat ilustratif.

'' == '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, dan Python melakukan hal yang sama. []dievaluasi salah ketika digunakan sebagai boolean, dll.
Izkata

1
+1 Ini harus menjadi jawabannya. Saya sering menemukan diri saya berbicara tentang "kebenaran" dari berbagai struktur data. Atau lebih sering, saya menemukan diri saya mengatakan "X adalah falsy" di mana X adalah ide seperti 0, None, [], dan sebagainya.

2

Kebenaran telah menjadi kata lama sebelum Stephen Colbert menggunakannya. Aku bersumpah aku pernah melihatnya di makalah logika / AI, dan di beberapa makalah fisika juga, tapi sepertinya tidak bisa menemukan referensi ke yang mendahului acara Stephen Colbert.


Masalahnya adalah, sekarang definisi "Colbert" telah menjadi populer, akan jauh lebih sulit untuk menemukan referensi yang tidak jelas dalam karya yang lebih tua :-)
Dean Harding

Saya tidak dapat menemukan apapun dari ACM atau IEEE sebelum 2006.
Hugo

@DeanHarding Ada cara mencari kata sebelum tanggal yang ditentukan, misalnya menggunakan Google Books dan di Usenet .
Hugo

2

Kebenaran adalah istilah yang sah dan didefinisikan dengan baik di Clojure, di mana itu merujuk pada properti dari nilai yang dianggap benar dalam pernyataan bersyarat.

Jadi fungsi kondisional di bawah ini hanya akan dipanggil jika value"benar"

  (if value
    (some-conditional-function))

Satu-satunya nilai yang tidak benar adalah falsedan nil, semua yang lain dianggap benar.

Saya percaya pembenaran filosofis untuk ini adalah bahwa nildapat diartikan sebagai "tidak ada", sehingga pernyataan bersyarat dapat menguji keberadaan suatu nilai.

Banyak bahasa lain juga memiliki konsep nilai yang mirip yang akan dianggap benar dalam konteks kondisional, jadi sebagai kesimpulan saya berpendapat bahwa ya, kebenaran harus dianggap sebagai istilah pemrograman yang sah ketika digunakan dengan cara ini.


1

"Kebenaran" adalah sesuatu yang saya pastikan saya mengerti ketika saya mengambil bahasa baru, karena mereka semua mengatasinya secara berbeda. Dalam bahasa pertama home-base saya di Perl, string "0" salah. Dalam banyak bahasa, itu adalah string yang memiliki konten dan karenanya benar. Dalam beberapa bahasa string kosong "" salah, dan dalam beberapa bahasa itu benar.

Memahami pilihan yang dibuat oleh perancang bahasa tentang kebenaran memberitahu Anda banyak hal tentang pemikiran mereka, dan mulai mencelupkan Anda ke dalam dunia konseptual bahasa.

Apakah kita mengeja itu "kebenaran" atau menggunakan istilah lain (saya pikir tajuk untuk bab dalam Buku Unta adalah "Apa itu Kebenaran?"), Programmer memiliki pegangan pada berbagai nilai dari hal absolut yang disebut "benar dan salah" jauh sebelum Colbert datang dan menunjukkan sikap "benar" dalam wacana publik.


0

Izinkan saya bertanya kembali: apa itu istilah "nyata"?

Setiap kata yang digunakan manusia adalah "nyata" ketika digunakan oleh banyak orang yang berarti (kurang lebih) hal yang sama. Semua bahasa terus berkembang, demikian pula bahasa pemrogram.

Misalnya, di Ruby, kerangka pengujian rspec saat ini lebih suka xyz.should be_truthydaripada xyz.should be_true. Atau xyz.should be_falseybukannya xyz.should be_false. Tentu saja, bukannya yang terakhir yang bisa mereka pilih xyz.should be_wrong. Tapi mereka tidak, jadi kita juga bisa bertanya apakah "kepalsuan" adalah sebuah istilah.

Sekarang sudah. Kind off. Setidaknya di komunitas yang menggunakan istilah ini. Jangan tanya pengacara atau dokter Anda. :)

Jika Anda bermaksud bertanya "apakah masyarakat umum secara intuitif tahu apa itu Kebenaran", maka jawabannya mungkin "tidak".


1
Seperti (hampir) semua orang tahu, sesuatu itu nyata jika dan hanya jika bagian imajinernya adalah palsu .
Ben Voigt

-3

Saya telah menulis sebuah sistem yang akan menentukan peluang (matematis) pernyataan boolean benar, mengingat sebagian data. Yaitu kita dapat menentukan bahwa ada peluang 73% untuk Xmenjadi kenyataan, jika kita belum memiliki data yang cukup untuk memastikan bahwa X itu benar. "Kebenaran" akan menjadi cara yang benar-benar valid untuk menggambarkan persentase kepercayaan pada X.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.