Трехзначная логика на писишке
"С децтва" не любил базы данных... уже сейчас и не вспомню причину, по которой их невзлюбил. Тут по работе, однако, пришлось изучать SQL. Сидел, весь день читал толстенную книженцию, дочитал. Но речь не в том. SQL - довольно старинный язык и интересен тем, что в нем используется трехзначная логика.
Привет журналюгам, которые любят писать о том, что применение трехзначной логики приведет к революции в компьютерной технике. И де она ваша революция? ;))
Логика используется самая что ни на есть "стандартная", ее еще называют трехзначной логикой Лукасевича. Между TRUE и FALSE есть еще промежуточное значение: NULL. По смыслу это NULL соответствует приблизительно выражениям "не известно", "не определено", "не задано", "не указано". Если TRUE ассоциировать с единицей, FALSE с нулем, а NULL - с 1/2, то логические операции в этой логике выглядят так:
A and B = min(A, B)
A or B = max(A, B)
not A = 1 - A
Кстати, закон исключенного третьего в этой логике не выполняется. По нему должно быть:
A or ~A = TRUE
а на самом деле при A = NULL = 1/2 получаем:
A or ~A = NULL or ~NULL = 1/2 or (1 - 1/2) = 1/2 or 1/2 = max(1/2, 1/2) = 1/2 = NULL ≠ TRUE
Привет журналюгам, которые любят писать о том, что применение трехзначной логики приведет к революции в компьютерной технике. И де она ваша революция? ;))
Логика используется самая что ни на есть "стандартная", ее еще называют трехзначной логикой Лукасевича. Между TRUE и FALSE есть еще промежуточное значение: NULL. По смыслу это NULL соответствует приблизительно выражениям "не известно", "не определено", "не задано", "не указано". Если TRUE ассоциировать с единицей, FALSE с нулем, а NULL - с 1/2, то логические операции в этой логике выглядят так:
A and B = min(A, B)
A or B = max(A, B)
not A = 1 - A
Кстати, закон исключенного третьего в этой логике не выполняется. По нему должно быть:
A or ~A = TRUE
а на самом деле при A = NULL = 1/2 получаем:
A or ~A = NULL or ~NULL = 1/2 or (1 - 1/2) = 1/2 or 1/2 = max(1/2, 1/2) = 1/2 = NULL ≠ TRUE
no subject
А вообще если говорить, что NULL это элемент логики ;) то многие скриптовые языки, а также высокоуровневые ;) можно объявить работающими на троичной логике;) Да и зачем строить систему с троичной логикой на двоичной платформе?;)
no subject
1. Величина NULL может обрабатываться логическими операциями (and, or, not).
2. Обработка величины NULL не совпадает ни с обработкой TRUE, ни с обработкой FALSE.
3. Обработка величины NULL не считается ошибкой или исключительной ситуацией.
Этого достаточно, чтобы считать логику трехзначной.
Впрочем, можно просто спросить буквари :)
http://www.google.ru/search?q=SQL+%D1%82%D1%80%D0%B5%D1%85%D0%B7%D0%BD%D0%B0%D1%87%D0%BD%D0%B0%D1%8F+%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0
no subject
no subject