Чи "правдивість" є законним терміном програмування?


11

SO має досить багато питань, використовуючи слово "правдивість", щоб означати значення істини виразу, коли його оцінюють як булеве значення, незалежно від його початкового типу. Це дуже корисно в динамічних мовах.

Отже, моє запитання: чи це справжній термін, і якщо так, то ми використовували його до того, як Стівен Колбер зробив його популярним? Або ми просто прийняли його згодом? У цьому випадку, який правильний термін із визначенням, яке я дав вище?


2
en.wikipedia.org/wiki/ Правда Зробіть це тим, що хочете. ; ->
Джефф Грігг

1
Я думаю, що це зазвичай мається на увазі пекіально (безумовно, Стівен Колберт), оскільки є більше свавілля та більше шансів, що речі не можуть поправитись порівняно з фактично істинними / хибними значеннями. Але загальноприйнято, що корисно мати слово для цього, і "правдивість" ідею вказує досить стисло. Тому я вважаю це законним, але легітимність визначається популярним використанням у часі, тому на цей момент немає остаточної чи авторитетної відповіді на ваше запитання.
psr

Відповіді:


4

Існує багато дискусій щодо правдивості .

Мерріам-Вебстер визначає це як:

  1. правдивість (іменник)
    1: "правда, що походить з кишечника, а не книг" (Стівен Колберт, "Колбертовий звіт", "Жовтень 2005 р
    ." Комедія Центрального) 2: "Якість переваги понять чи фактів бажає бути правдою, а не поняття чи факти, відомі як правдиві "(Американське діалектне товариство, січень 2006 р.)

Оксфордські словники онлайн визначають це як:

іменник
[ масовий іменник ] неофіційний
якість здається чи відчувається правдивим, навіть якщо не обов'язково правдивим.

Походження :
початок 19 століття (у сенсі "правдивість"): в сучасному розумінні висунуто американським гумористом Стівеном Колбертом

Він використовувався трохи на Usenet до Стівена Колберта, але, як правило, пояснювався, як тільки використовується, наприклад, "якість викладення понять чи фактів, які бажає чи вважає правдивими, а не поняттями чи фактами, відомими як істинні".

Повернутися до програмування. Незалежно від походження, це сучасне відчуття "правди з кишечника, навіть якщо не правдивого" явно неправильне більшість часу при обговоренні булевих логічних та істинних таблиць: це ifтвердження, безумовно, правдиве, і це whileтвердження неправдиве до цього часу (i > k). Моє відчуття кишки не вступає в це.

Якщо ви використовуєте правдивість у програмуванні, швидше за все, ви використовуєте рідкісне значення правдивості 19 століття , і було б одночасно зрозуміліше (і, можливо, правильніше) використовувати правдивість або просто правду .

Ngram :

Ngram

Звичайно, англійська змінюється в міру зміни використання, і деякі люди почали використовувати правдивість, щоб означати правду в програмуванні. Однак я б радив проти правдивості уникати будь-якої неоднозначності сенсу ("справжня абсолютна істина" проти "мого кишкового відчуття істини, незалежно від фактів").


2
Я особисто завжди використовував слово правдивість, коли читаю правдивість, навіть не вважаю це справжнім словом.
Рамхаунд

@Ramhound: Не існує такого поняття, як "не справжнє слово". Якщо слово можна використовувати для спілкування між людьми, це справжнє слово.
ЖакБ

@Hugo: Меріам-Вебстер не є авторитетним, коли мова йде про технічний жаргон. Багато слів мають інше значення у CS, ніж у загальній мові.
ЖакБ

@JacquesB Питання в тому, чи є це "реальним терміном", і чи використовувався він у обчислювальних технологіях до або після популяризації Колберта, тому визначення стандартних словників допомагають вирішити це.
Гюго

@Hugo: Ви заявляєте, що використання технічного терміна "явно неправильне" через його визначення у загальному (а не для ІТ) словнику. І ваша пропозиція використовувати слово "правда" замість цього пропускає весь пункт терміна "правдивість", який застосовується до не булевих значень.
ЖакБ

9

Це термін, який відомий і прийнятний у певних колах (наприклад, булеві порівняння JavaScript). Як такий, це "реальний" термін. В силу використання він стає законним.

Усі подібні терміни походять звідкись - вони не спливають у світ повністю сформованим та із усталеним значенням (наприклад, програмні помилки не мали того значення, який вони мають зараз, коли електронні комп’ютери тільки почали існувати).

Чи прийнято це академічно - це інша справа. Наскільки я знаю, для цього нечіткого значення булевих значень немає формального терміна ..


@Downvoter - хочете коментувати?
Одід

3
Власне терміни "помилка" як проблема використовувались перед сучасними комп'ютерами. Едісон використав у листі 1787 р. Це були загальні терміни для інженерних проблем. Історія Грейс Хоппер як трохи іронізована тим, що знайдена помилка була справді помилкою.
Джим C

@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

Я розглядаю truthy як легітимний термін, який використовується для оцінки JavaScript. Книга Дугласа Крокфорда на JavaScript - "JavaScript хороші частини" визначає терміни, які JavaScript "if" оцінює як істинні як "truthy". Так само він визначає терміни, які JavaScript оцінює як хибні як "хибні". Він також використовує цей термін, щоб підкреслити те, як працює функція '==' в JavaScript (що відрізняється від того, як багато користувачів JavaScript, здається, вважають, що це працює).

З крокфордського "Елементи стилю JavaScript"

Оператор == не повинен використовуватися для порівняння значень з істинним, оскільки він вводить примус. Якщо наша мета полягає у визначенні того, чи вказано dwsv. перевірено булеве значення, то ми повинні використовувати оператор ===. Якщо нас хвилює лише те, що значення є правдою (а не хибною), то краще взагалі не використовувати оператор рівності.

Наприклад, через примус типу. 1 == true - це правда, але 1 === true - хибно. Оператор == може приховати помилки типу.

У цьому контексті термін є і законним, і корисним.

В якості подальшої ілюстрації в цьому контексті правдивого і хибного ці випадки є ілюстративними.

'' == '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 робить те саме. []оцінюється як хибне при використанні як булева тощо.
Ізката

1
+1 Це має бути відповіддю. Я часто виявляв себе, коли говорив про "правдивість" різних структур даних. Або частіше, я вважаю себе кажу «Х falsy» , де Х являє собою ідеї , як 0, None, []і так далі.

2

Істинність була словом задовго до того, як Стівен Колбер використав її. Я можу поклястись, що бачив це в паперах з логікою / AI, і в деяких документах з фізики, але, здається, не можу знайти посилання на той, що передував шоу Стівена Колберта.


Проблема полягає в тому, що тепер, коли визначення «Кольберта» стало популярним, набагато складніше буде знайти незрозумілі посилання в старих творах :-)
Дін Хардінг,

Я не міг знайти жодного з ACM або IEEE до 2006 року.
Hugo

@DeanHarding Існують способи пошуку слів до заданої дати, наприклад, за допомогою Google Books і Usenet .
Гюго

2

Істинність - це законний і чітко визначений термін у Clojure, де в умовному твердженні воно відноситься до властивості значення, яке вважається істинним.

Тож умовна функція, яку наведено нижче, буде називатися лише у тому випадку, якщо вона valueє "truthy"

  (if value
    (some-conditional-function))

Єдині неістинні значення є, falseа nilвсе інше вважається правдою.

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

Багато інших мов також мають подібне поняття цінностей, яке вважатиметься істинним в умовному контексті, тому на закінчення я заперечую, що так, правдивість слід розглядати як законний термін програмування, коли він використовується таким чином.


1

"Істинність" - це те, що я обов'язково розумію, коли я перебираю нову мову, оскільки всі вони по-різному мають справу з нею. У моїй домашній першій мові Perl рядок "0" помилковий. У багатьох мовах це рядок, який має зміст і тому є істинним. У деяких мовах порожній рядок "" є помилковим, а в деяких - істинним.

Розуміння вибору, який зробили мовні дизайнери щодо правдивості, багато розповідає про їхнє мислення та починає занурювати вас у концептуальну всесвіт мови.

Незалежно від того, чи ми написали це «правдивість», чи використовували якийсь інший термін (я думаю, що заголовок для цієї глави у Книзі верблюдів - «Що таке правда?»), Програмісти мали змогу залежати від різних значень абсолютної речі під назвою «справжня і помилкова». задовго до того, як Колберт прийшов і вказав на згинання "правдивого" в публічному дискурсі.


0

Дозвольте запитати вас: що таке "реальний термін"?

Будь-яке слово, яке люди використовують, є "справжнім", коли воно використовується декількома людьми, що означає (більш-менш) одне і те ж. Усі мови постійно розвиваються, як і мова програміста.

Наприклад, у Ruby, сьогодні тестова рамка для тестування rspec надає перевагу xyz.should be_truthyзамість xyz.should be_true. Або xyz.should be_falseyзамість цього xyz.should be_false. Звичайно, замість останнього вони могли б вибрати xyz.should be_wrong. Але вони цього не зробили, тому ми також можемо запитати, чи "помилковість" - це термін.

Тепер це так. Типу того. Принаймні в громадах, які використовують ці терміни. Не питайте свого адвоката чи лікаря. :)

Якщо ви мали на меті запитати "чи інтуїтивно зрозуміла широка громадськість, що таке Істина", то, мабуть, відповідь - "ні".


1
Як (майже) всім відомо, щось реально, якщо і лише якщо його уявна частина - фальси .
Бен Войгт

-3

Я написав систему, яка визначила б (математичний) шанс булевого твердження істинним, враховуючи часткові дані. Тобто ми могли б визначити, що існує 73% шанс Xбути правдою, якби ми ще не мали достатньої кількості даних, щоб твердо встановити, що Х було правдою. "Істинність" була б цілком справедливим способом описати таку відсоткову віру в X.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.