“Doğruluk” meşru bir programlama terimi midir?


11

SO, orijinal türüne bakılmaksızın, bir boole olarak değerlendirildiğinde, bir ifadenin gerçek değeri anlamına gelen "doğruluk" kelimesini kullanan birkaç soruya sahiptir . Dinamik dillerde çok kullanışlıdır.

Benim sorum şu, bu gerçek bir terim mi ve eğer öyleyse Stephen Colbert popüler hale getirmeden önce mi kullanıyorduk? Yoksa daha sonra mı kabul ettik? Bu durumda, yukarıda verdiğim tanımla doğru terim nedir?


2
en.wikipedia.org/wiki/Truthiness İstediğinizi yapın. ; ->
Jeff Grigg

1
Bence bu aslında biraz acımasız (kasten Stephen Colbert tarafından) anlamına geliyor çünkü gerçek / yanlış değerlere kıyasla daha fazla keyfilik ve yanlışlık şansı daha fazla. Ama bir kelimeye sahip olmanın yararlı olacağı kadar yaygındır ve “doğruluk” fikri oldukça özlü bir şekilde ele alır. Bu yüzden meşru olduğunu düşünürdüm, ancak meşruiyet zaman içinde popüler kullanım tarafından belirlenir, bu nedenle sorunuzda kesin veya yetkili bir cevap yoktur.
psr

Yanıtlar:


4

Gerçeklik konusunda çok fazla tartışma var .

Merriam-Webster bunu şöyle tanımlar:

  1. doğruluk (isim)
    1: "kitaplardan değil, bağırsaktan gelen gerçek" (Stephen Colbert, Comedy Central'ın "The Colbert Report," Ekim 2005)
    2: "kişinin doğru olmasını istediği kavramları veya gerçekleri tercih etme kalitesi doğru olduğu bilinen kavramlar veya gerçekler "(American Dialect Society, Ocak 2006)

Oxford Dictionaries Online şu şekilde tanımlar:

isim
[ kitle isim ] gayri
görünüşteki veya gerçek olamayacak kadar hissediliyor kalitesi, hatta mutlaka doğru değilse.

Menşei :
19. yüzyılın başlarında ('doğruluk' anlamında): ABD mizahçısı Stephen Colbert tarafından modern anlamda üretilmiştir

Bu, Stephen Colbert'ten önce Usenet'te biraz kullanıldı , ancak genellikle " gerçek olduğu bilinen kavramlar veya gerçeklerden ziyade, bir kişinin istediği veya gerçek olduğuna inandığı kavramları veya gerçekleri belirtme kalitesi" gibi kullanılır .

Programlamaya geri dön. Kökenine bakılmaksızın, bu modern "bağırsaktan gelen doğruluk, doğru olmasa bile" çoğu zaman Boole mantığı ve doğruluk tablolarını tartışırken açıkça yanlıştır: bu ififade kesinlikle doğrudur ve bu whileifade kadar yanlıştır (i > k). Bağırsak hissim buna girmiyor.

Programlamada doğruluk kullanıyorsanız , büyük olasılıkla 19. yüzyılın doğruluk anlamını kullanıyorsunuz ve doğruluk veya basitçe gerçeği kullanmak daha açık (ve tartışmasız daha doğru) olacaktır .

Ngram :

Ngram

Elbette, kullanım değiştikçe İngilizce değişir ve bazı insanlar programlamada gerçeği ifade etmek için doğruluk kullanmaya başladılar . Bununla birlikte, anlam belirsizliğinden kaçınmak için gerçekliğe karşı tavsiyede bulunacağım ("gerçek mutlak gerçek" ile "gerçeklere bakılmaksızın bağırsak gerçeğim hissi").


2
Şahsen her zaman doğruluk kelimesini kullandım, doğruluk okuduğumda, bunu gerçek bir kelime olarak bile görmüyorum.
Ramhound

@Ramhound: "Gerçek bir kelime değil" diye bir şey yoktur. Bir kelime insanlar arasındaki iletişim için kullanılabilirse, gerçek bir kelimedir.
JacquesB

@Hugo: Merriam-Webster teknik jargon söz konusu olduğunda yetkili değildir. CS'de birçok kelimenin ortak dilde olduğundan farklı bir anlamı vardır.
JacquesB

@JacquesB Sorunun "gerçek bir terim" olup olmadığı ve Colbert'in popüler hale getirilmesinden önce veya sonra hesaplamada kullanılıp kullanılmadığı hakkında, bu nedenle standart sözlüklerden gelen tanımlar bunlarla başa çıkmanıza yardımcı oluyor.
Hugo

@Hugo: Teknik bir terimin, ortak (BT'ye özgü olmayan) bir sözlükteki tanımı nedeniyle "açıkça yanlış" olduğunu belirtiyorsunuz. Ve "doğruluk" kelimesini kullanma öneriniz, boolean olmayan değerlere uygulanan "doğruluk" teriminin bütün noktasını kaçırır.
JacquesB

9

Belirli çevrelerde bilinen ve kabul edilebilir bir terimdir (örneğin, JavaScript Boole karşılaştırmaları). Bu haliyle, "gerçek" bir terimdir. Kullanılması sayesinde meşru hale gelir.

Tüm bu terimler bir yerden geliyor - dünyaya tamamen oluşmuş ve yerleşik bir anlamlarla gelmiyorlar (örneğin, yazılım hataları, elektronik bilgisayarlar yeni başladığında şimdi sahip oldukları anlamına gelmiyordu).

Akademik olarak kabul edilip edilmediği - bu farklı bir konudur. Bildiğim kadarıyla, boole değerlerinin bu bulanık anlamı için resmi bir terim yoktur.


@Downvoter - yorum yapmak ister misiniz?
Oded

3
Aslında modern bilgisayarlardan önce problem olarak "hata" terimleri kullanılmıştır. Edison 1787'de bir mektupta kullandı. O zamanlar mühendislik problemleri için ortak terimlerdi. Grace Hopper'ın hikayesi, buldukları böceğin gerçekten bir böcek olduğu biraz ironi olarak.
Jim C

@JimC - Yeterince adil, ama yine de, insanlar bugün "böcek" dediğinde, Edison günlerinde yaptıklarıyla aynı anlama gelmiyorlar.
Oded

4
Edison 1878'de yazdı: 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.Bana modern yazılım hatalarına çok benziyor.
Hugo

8

Doğruyu JavaScript değerlendirmesinde meşru bir terim olarak görüyorum. Douglas Crockford'un JavaScript - 'İyi Parçalar JavaScript'i adlı kitabı,' gerçeği 'doğru olarak değerlendirirse JavaScript'in terimlerini tanımlar. Aynı şekilde, JavaScript'in yanlış olarak değerlendirdiği terimleri 'yanlış' olarak tanımlar. Bu terimi, '==' değerlendirmesinin JavaScript'te nasıl çalıştığını vurgulamak için de kullanır (bu, birçok JavaScript kullanıcısının işe yaradığına inanma biçiminden farklıdır).

Gönderen JavaScript Style Crockford The Elements

== işleci zorlama yazdığı için değerleri true ile karşılaştırmak için kullanılmamalıdır. Amacımız dwsv.checked'in boole değeri true olup olmadığını belirlemekse, === operatörünü kullanmalıyız. Sadece bir değerin doğru (ve değil) olmasını önemsersek, o zaman bir eşitlik operatörü kullanmamak daha iyidir.

Örneğin, zorlama türü nedeniyle. 1 == true doğru, ancak 1 === true yanlış. == işleci, yazım hatalarını gizleyebilir.

Bu bağlamda, terim hem meşru hem de yararlıdır.

Bu bağlamda doğru ve yanlışın başka bir örneği olarak, bu durumlar açıklayıcıdır.

'' == '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 ve Python da aynı şeyi yapar. []bir boole vb. olarak kullanıldığında false olarak değerlendirilir
Izkata

1
+1 Cevap bu olmalı. Sık sık kendimi çeşitli veri yapılarının "gerçeği" hakkında konuşurken buldum. Ya da daha sık, kendimi X'in fikirler gibidir burada "X falsy" diyerek bulmak 0, None, [], vb.

2

Doğruluk, Stephen Colbert onu kullanmadan çok önce bir kelimeydi. Yemin edebilirim ki bunu mantık / AI gazetelerinde ve bazı fizik gazetelerinde de gördüm, ancak Stephen Colbert'in şovundan önce gelen bir referans bulamıyorum.


Sorun şu ki, "Colbert" tanımı popüler hale geldi, eski çalışmalarda belirsiz referanslar bulmak çok daha zor olacak :-)
Dean Harding

2006'dan önce ACM veya IEEE'den hiçbir şey bulamadım .
Hugo

@DeanHarding Belirli bir tarihten önce kelimeleri aramanın yolları vardır, örneğin Google Kitaplar ve Usenet'te .
Hugo

2

Doğruluk , koşullu bir ifadede doğru olarak kabul edilen bir değerin özelliğine atıfta bulunduğu Clojure'da meşru ve iyi tanımlanmış bir terimdir.

Dolayısıyla, aşağıdaki koşullu işlev yalnızca value"doğruluk" ise çağrılır.

  (if value
    (some-conditional-function))

Tek doğru olmayan değerler falseve diğer nilher şey doğru olarak kabul edilir.

Bunun felsefi gerekçesinin nil"yok" anlamına gelebileceğine inanıyorum, bu nedenle koşullu ifade bir değerin varlığını test edebiliyor.

Diğer birçok dilde, koşullu bağlamda doğru olarak kabul edilecek benzer bir değer kavramı da vardır, bu nedenle sonuç olarak, evet, doğruluk bu şekilde kullanıldığında meşru bir programlama terimi olarak kabul edilmelidir.


1

"Doğruluk", yeni bir dili seçerken anladığımdan emin olduğum bir şeydir, çünkü hepsi farklı bir şekilde ilgilenir. Ana üssü olan Perl dilinde, "0" dizesi yanlış. Birçok dilde, içeriği olan ve bu nedenle doğru olan bir dizedir. Bazı dillerde "" boş dize yanlıştır ve bazılarında doğrudur.

Dil tasarımcılarının doğruluk hakkında yaptıkları seçimleri anlamak size düşünceleri hakkında çok şey anlatır ve sizi dilin kavramsal evrenine sokmaya başlar.

"Doğruluk" u hecelediğimiz veya başka bir terim kullansak da (Deve Kitabı'ndaki o bölümün başlığının "Gerçek Nedir?" Olduğunu düşünüyorum), programcılar "doğru ve yanlış" adı verilen mutlak şeyin değişken değerlerini kavradılar. Colbert gelmeden çok önce ve kamu söyleminde "gerçek" in bükülmesine dikkat çekti.


0

Size geri sormama izin verin: "gerçek terim" nedir?

İnsanların kullandığı herhangi bir kelime, birden fazla kişi tarafından kullanıldığında (az ya da çok) aynı şey anlamına gelir. Tüm diller sürekli gelişmektedir ve programcının dili de değişmektedir.

Örneğin, Ruby'de rspec test çerçevesi günümüzde xyz.should be_truthybunun yerine tercih ediyor xyz.should be_true. Veya xyz.should be_falseyyerine xyz.should be_false. Tabii ki, ikincisi yerine seçebilirlerdi xyz.should be_wrong. Ama etmediler, bu yüzden "yanlışlığın" bir terim olup olmadığını da sorabiliriz.

Şimdi öyle. Gibi. En azından bu terimleri kullanan topluluklarda. Avukatınıza veya doktorunuza sormayın. :)

"Genel halka sezgisel olarak Doğruluk'un ne olduğunu biliyor mu?" Diye sormak istiyorsan, cevap muhtemelen "hayır" dır.


1
(Neredeyse herkesin bildiği gibi), sadece hayali kısmı falseyse bir şey gerçektir .
Ben Voigt

-3

Kısmi veriler verildiğinde, bir boole ifadesinin doğru (matematiksel) şansını belirleyecek bir sistem yazdım. Yani X, X'in doğru olduğunu kesin olarak belirlemek için yeterli verimiz yoksa,% 73 gerçek olma şansı olduğunu belirleyebiliriz . "Doğruluk", X'e böyle bir yüzde inancını tanımlamak için tamamen geçerli bir yol olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.