Является ли «правдивость» законным термином программирования?

11

У SO довольно много вопросов, использующих слово «истинность» для обозначения значения истинности выражения, когда оно оценивается как логическое значение, независимо от его первоначального типа. Это очень полезно в динамических языках.

Итак, мой вопрос, является ли это реальным термином, и если да, то использовали ли мы его до того, как Стивен Колберт сделал его популярным? Или мы просто приняли это позже? В таком случае, каков правильный термин с определением, которое я дал выше?

Tesserex
источник
2
en.wikipedia.org/wiki/Truthiness Делайте из этого то, что вы хотите. ; ->
Джефф Григг
1
Я думаю, что это обычно подразумевается несколько уничижительно (конечно, Стивеном Колбертом), так как существует больше произвольности и больше шансов на то, что что-то не так, по сравнению с истинными / ложными значениями. Но достаточно распространено, что полезно иметь слово для этого, и «правдивость» излагает идею довольно кратко. Поэтому я бы посчитал это законным, но легитимность определяется популярностью со временем, поэтому на данный момент нет однозначного или авторитетного ответа на ваш вопрос.
PSR

Ответы:

4

Есть много споров по поводу правдивости .

Merriam-Webster определяет это как:

  1. правдивость (существительное)
    1: «правда, которая исходит из кишки, а не из книг» (Стивен Колберт, Comedy Central, «The Colbert Report», октябрь 2005 г.)
    2: «качество предпочтения понятий или фактов, которые каждый желает быть правдой, а не концепции или факты, известные как истинные "(American Dialect Society, январь 2006 г.)

Оксфордские словари онлайн определяют это как:

существительное
[ массовое существительное ] неформальное
качество кажущегося или ощущаемого как истинного, даже если не обязательно истинного.

Происхождение :
начало 19-го века (в смысле «правдивость»): придумано в современном смысле американским юмористом Стивеном Колбертом

Это использовалось немного в Usenet до Стивена Колберта, но обычно объяснялось, как только использовалось, например, «качество формулирования понятий или фактов, которые каждый желает или считает верными, а не понятий или фактов, которые известны как истинные».

Вернуться к программированию. Независимо от происхождения, это современное чувство «истины изнутри, даже если и не истинно» в большинстве случаев явно неверно при обсуждении булевой логики и таблиц правды: это ifутверждение определенно верно, и это whileутверждение ложно до тех пор, пока (i > k). Мое внутреннее чувство не входит в это.

Если вы используете правдивость в программировании, скорее всего, вы используете редкий смысл правдивости 19-го века , и было бы яснее (и, возможно, более правильно) использовать правдивость или просто правду .

Нграм :

Ngram

Конечно, английский меняется по мере использования, и некоторые люди начали использовать правду, чтобы означать правду в программировании. Однако я бы посоветовал против правдивости избегать любой двусмысленности смысла («настоящая абсолютная истина» против «моего интуитивного чувства истины, независимо от фактов»).

Хьюго
источник
2
Лично я всегда использовал слово правдивость, когда я читаю правдивость, я даже не считаю его настоящим словом.
Ramhound
@ Ramhound: нет такой вещи, как "ненастоящее слово". Если слово может быть использовано для общения между людьми, это настоящее слово.
JacquesB
@Hugo: Merriam-Webster не авторитетен, если говорить о техническом жаргоне. Многие слова имеют другое значение в CS, чем в общем языке.
JacquesB
@JacquesB Вопрос в том, является ли это «реальным термином» и использовался ли он в вычислениях до или после его популяризации Колбертом, поэтому определения из стандартных словарей помогают разобраться с этим.
Hugo
@Hugo: Вы утверждаете, что использование технического термина «явно неверно» из-за его определения в общем (не специфичном для ИТ) словаре. И ваше предложение использовать слово «истина» вместо этого пропускает весь смысл термина «правдивость», который применяется к небулевым значениям.
JacquesB
9

Этот термин известен и приемлем в определенных кругах (например, логические сравнения JavaScript). Как таковой, это «настоящий» термин. Благодаря использованию он становится законным.

Все такие термины происходят откуда-то - они не попадают в мир полностью сформированный и с устоявшимися значениями (например, ошибки в программном обеспечении не имели того значения, которое они имеют сейчас, когда электронные компьютеры только начали существовать).

Будь это академически принято - это другой вопрос. Насколько я знаю, нет никакого формального термина для этого нечеткого значения булевых значений ..

Одед
источник
@Downvoter - хотите прокомментировать?
Отредактировано
3
На самом деле термин «ошибка» как проблема использовался еще до современных компьютеров. Эдисон использовал в письме 1787 года. Это были общие термины для инженерных проблем тогда. История с Грейс Хоппер, ирония в том, что найденная ими ошибка действительно была ошибкой.
Джим С
@JimC - Достаточно справедливо, но, тем не менее, когда люди говорят «ошибка» сегодня, они не имеют в виду то же самое, что и во времена Эдисона.
Отредактировано
4
Эдисон написал в 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.Звучит очень похоже на ошибки в современном программном обеспечении.
Хьюго
8

Я считаю истину законным термином, используемым для оценки JavaScript. Книга Дугласа Крокфорда о JavaScript - «JavaScript - хорошие части» определяет термины, которые JavaScript «если» оценивает как истинные, чтобы быть «правдивыми». Точно так же он определяет термины, которые JavaScript оценивает как ложные, как «ложь». Он также использует этот термин, чтобы подчеркнуть то, как оценка '==' работает в JavaScript (что отличается от того, как многие пользователи 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
AlexC
источник
+1, и Python делает то же самое. []оценивается как ложное при использовании в качестве логического значения и т. д.
Изката
1
+1 Это должен быть ответ. Я часто ловил себя на том, что говорю о «правдивости» различных структур данных. Или чаще, я считаю себя говорю «Х falsy» , где Х представляет собой идеи , как 0, None, []и так далее.
2

Истина была словом задолго до того, как Стивен Кольбер использовал его. Я мог бы поклясться, что видел это в работах по логике / ИИ, а также в некоторых работах по физике, но, похоже, не могу найти ссылку на ту, которая предшествовала шоу Стивена Колберта.

blueberryfields
источник
Проблема в том, что теперь, когда определение «Колберта» стало популярным, будет гораздо труднее найти неясные ссылки в старых работах :-)
Дин Хардинг,
Я не мог найти ни одного из ACM или IEEE до 2006 года.
Хьюго
@DeanHarding Существуют способы поиска слов до определенной даты, например, с помощью Google Книг и в Usenet .
Хьюго
2

Истина - это законный и четко определенный термин в Clojure, где он относится к свойству значения, считающегося истинным в условном утверждении.

Поэтому приведенная ниже условная функция будет вызываться только в том случае, если valueона «истинна»

  (if value
    (some-conditional-function))

Единственными неверными ценностями являются falseи nilвсе остальное считается правдивым.

Я полагаю, что философское обоснование этого состоит в том, что nilможно принять значение «не существует», поэтому условное утверждение может проверить наличие значения.

Многие другие языки также имеют аналогичную концепцию значений, которая будет считаться истинной в условном контексте, поэтому в заключение я бы сказал, что да, правдивость следует рассматривать как законный термин программирования, когда он используется таким образом.

mikera
источник
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. Но они этого не сделали, поэтому мы можем также спросить, является ли термин «ложь» термином.

Теперь это. Прочь По крайней мере, в сообществах, которые используют эти термины. Не спрашивайте своего адвоката или врача. :)

Если вам нужно спросить «интуитивно ли широкая публика знает, что такое Истина», то ответ, вероятно, «нет».

Anoe
источник
1
Как (почти) все знают, что-то реально, если и только если его воображаемая часть ложная .
Бен Фойгт
-3

Я написал систему, которая определяла бы (математическую) вероятность того, что логическое утверждение истинно, с учетом частичных данных. Т.е. мы могли бы определить, что существует 73% шансов Xбыть правдой, если у нас еще не было достаточно данных, чтобы твердо установить, что Х был правдой. «Истина» была бы совершенно верным способом описать такой процент веры в X.

MSalters
источник