SO ma sporo pytań, używając słowa „prawdomówność”, co oznacza wartość prawdy wyrażenia, gdy jest oceniana jako wartość logiczna, niezależnie od jej pierwotnego typu. Jest to bardzo przydatne w dynamicznych językach.
Więc moje pytanie brzmi: czy to prawdziwy termin, a jeśli tak, to czy użyliśmy go, zanim Stephen Colbert go spopularyzował? Czy po prostu przyjęliśmy to później? W takim przypadku jaki jest poprawny termin z podaną powyżej definicją?
terminology
Tesserex
źródło
źródło
Odpowiedzi:
Toczy się wiele dyskusji na temat prawdomówności .
Merriam-Webster definiuje to jako:
1: „prawda, która pochodzi z jelit, a nie książek” (Stephen Colbert, „The Colbert Report” Comedy Central, „październik 2005 r.)
2:„ jakość preferowania pojęć lub faktów, które chcieliby być prawdziwe, a nie koncepcje lub fakty znane jako prawdziwe ”(American Dialect Society, styczeń 2006)
Oxford Dictionaries Online definiuje to jako:
Użyto go trochę w Usenecie przed Stephenem Colbertem, ale zwykle wyjaśnia się go zaraz po jego użyciu, na przykład „jakości stwierdzania pojęć lub faktów, które pragniemy lub uważa się za prawdziwe, a nie pojęć lub faktów uznanych za prawdziwe”.
Powrót do programowania. Bez względu na pochodzenie to współczesne poczucie „prawdy z jelit, nawet jeśli nie jest prawdziwe” jest wyraźnie niepoprawne przez większość czasu podczas omawiania logiki logicznej i tabel prawdy: to
if
stwierdzenie jest z pewnością prawdziwe, a towhile
stwierdzenie jest fałszywe do czasu(i > k)
. Moje przeczucie nie wchodzi w to.Jeśli używasz prawdy w programowaniu, najprawdopodobniej używasz rzadkiego dziewiętnastowiecznego znaczenia prawdomówności , i byłoby bardziej jasne (i prawdopodobnie bardziej poprawne) użycie prawdy lub po prostu prawdy .
Ngram :
Oczywiście, angielski zmienia się jak zmiany użytkowania, a niektórzy ludzie zaczęli używać truthiness oznaczać prawdy w programowaniu. Chciałbym jednak odradzam truthiness aby uniknąć wszelkich niejasności znaczeń ( „prawdziwy absolutną prawdę” vs. „moje przeczucie prawdy, niezależnie od faktów”).
źródło
Jest to termin znany i akceptowany w niektórych kręgach (na przykład porównania boolowskie JavaScript). Jako taki jest to termin „prawdziwy”. Dzięki wykorzystaniu staje się uzasadniony.
Wszystkie takie terminy pochodzą skądś - nie pojawiają się w świecie w pełni uformowanym i o ustalonym znaczeniu (na przykład - błędy oprogramowania nie miały znaczenia, jakie miały teraz, gdy komputery elektroniczne dopiero zaczęły istnieć).
Czy jest to akceptowane naukowo - to inna sprawa. O ile mi wiadomo, nie ma formalnego terminu na to rozmyte znaczenie wartości boolowskich.
źródło
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.
Brzmi dla mnie bardzo podobnie do współczesnych błędów oprogramowania.Uważam prawdę za uzasadniony termin używany w porównaniu z oceną JavaScript. Książka Douglasa Crockforda o języku JavaScript - „JavaScript the Good Parts” definiuje terminy, które JavaScript „jeśli” uznaje za prawdziwe jako „prawdziwe”. Podobnie definiuje warunki, które JavaScript ocenia jako fałszywe, jako „fałsz”. Używa tego terminu, aby podkreślić sposób, w jaki ocena „==” działa w JavaScript (co różni się od sposobu, w jaki wielu użytkowników JavaScript uważa, że to działa).
Z Crockford's The Elements of JavaScript Style
W tym kontekście termin jest zarówno uzasadniony, jak i użyteczny.
Jako dalszą ilustrację prawdy i fałszu w tym kontekście przypadki te mają charakter ilustracyjny.
źródło
[]
jest oceniane na fałsz, gdy jest używane jako wartość logiczna itp.0
,None
,[]
i tak dalej.Prawda była słowem na długo przed użyciem go przez Stephena Colberta. Mógłbym przysiąc, że widziałem to w artykułach z logiki / sztucznej inteligencji, a także w niektórych artykułach z fizyki, ale nie mogę znaleźć odniesienia do takiego, który poprzedza przedstawienie Stephena Colberta.
źródło
Prawda jest słusznym i dobrze zdefiniowanym terminem w Clojure, gdzie odnosi się do właściwości wartości uważanej za prawdziwą w stwierdzeniu warunkowym.
Tak więc funkcja warunkowa poniżej zostanie wywołana tylko wtedy, gdy
value
jest „prawdziwa”Jedynymi nieprawdziwymi wartościami są
false
inil
wszystko inne jest uważane za prawdziwe.Uważam, że filozoficzne uzasadnienie tego jest takie, że
nil
można powiedzieć, że „nie istnieje”, więc stwierdzenie warunkowe jest w stanie sprawdzić istnienie wartości.Wiele innych języków ma również podobną koncepcję wartości, które będą uważane za prawdziwe w kontekście warunkowym, więc podsumowując, twierdzę, że tak, prawdziwość powinna być uważana za uzasadniony termin programowania, gdy jest używana w ten sposób.
źródło
„Prawdę” to coś, co rozumiem, gdy rozumiem, kiedy wybieram nowy język, ponieważ wszyscy traktują to inaczej. W moim pierwszym ojczystym języku Perl ciąg „0” jest fałszywy. W wielu językach jest to ciąg znaków, który ma treść i dlatego jest prawdziwy. W niektórych językach pusty ciąg „” jest fałszywy, a w niektórych jest prawdziwy.
Zrozumienie wyborów dokonanych przez projektantów języka w zakresie prawdomówności wiele mówi o ich myśleniu i zaczyna zanurzać się w konceptualny wszechświat języka.
Niezależnie od tego, czy przeliterowaliśmy to jako „prawdę”, czy też użyliśmy innego terminu (myślę, że nagłówek tego rozdziału w Księdze wielbłądów brzmi „Czym jest prawda?”), Programiści trzymali się różnych wartości absolutnej rzeczy zwanej „prawdą i fałszem” na długo przed tym, jak pojawił się Colbert i wskazał na zginanie „prawdy” w dyskursie publicznym.
źródło
Pozwól, że cię zapytam: co to jest „prawdziwy termin”?
Każde słowo używane przez ludzi jest „prawdziwe”, gdy używane jest przez wiele osób, co oznacza (mniej więcej) to samo. Wszystkie języki stale się zmieniają, podobnie jak język programisty.
Na przykład w języku Ruby obecnie preferowana jest platforma testowania rspec
xyz.should be_truthy
zamiastxyz.should be_true
. Lubxyz.should be_falsey
zamiastxyz.should be_false
. Oczywiście zamiast tego drugiego mogli wybraćxyz.should be_wrong
. Ale nie zrobili tego, więc możemy również zapytać, czy „fałsz” jest terminem.Teraz jest. Tak jakby. Przynajmniej w społecznościach, które używają tych terminów. Nie pytaj swojego prawnika lub lekarza. :)
Jeśli masz zapytać „czy opinia publiczna intuicyjnie wie, czym jest Prawda”, odpowiedź brzmi prawdopodobnie „nie”.
źródło
Napisałem system, który określałby (matematyczną) szansę na prawdziwość instrukcji boolowskiej, biorąc pod uwagę częściowe dane. Tzn. Moglibyśmy ustalić, że istniała 73% szansa na
X
prawdziwość, gdybyśmy nie mieli wystarczających danych, aby jednoznacznie ustalić, że X jest prawdą. „Prawda” byłaby całkowicie poprawnym sposobem opisania takiego procentowego przekonania w X.źródło