Меню

Облако тегов
ГЛАВНАЯ
ОШИБКА ИМЕНОВАНИЯ: OR, XOR И ЗАПЯТАЯ


thumbnail

Логические операторы и метаязык
 
В формальной логике и языках программирования существует фундаментальная ошибка именования, которая тянется уже более ста лет и влияет на мышление миллионов программистов.
 
ПРОБЛЕМА
 
В естественном языке (метаязыке) слово «или» всегда означает выбор одного из двух:
 
«Ты идёшь налево или направо?» — не оба сразу.
«Это правда или ложь?» — не обе сразу.
«Будешь чай или кофе?» — одно из двух.
 
Однако в формальной логике оператор OR (ИЛИ) означает нечто другое — «хотя бы одно из двух, возможно оба». А то, что в метаязыке является настоящим «или», спрятано под непроизносимым именем XOR (исключающее ИЛИ).
 
ЧТО ТАКОЕ OR НА САМОМ ДЕЛЕ?
 
OR — это не «или». OR — это запятая.
 
«Купи хлеб, молоко, масло» — перечисление через запятую. Может купишь одно, может два, может всё. Любая комбинация, кроме «ничего из списка». Это в точности таблица истинности OR: ложь только когда всё ложно.
 
ПРАВИЛЬНОЕ СООТВЕТСТВИЕ
 
В метаязыке «и» (оба) — это оператор конъюнкции. Текущее имя AND. Предлагаемое имя AND. Здесь ошибки нет.
 
В метаязыке «,» (запятая, перечисление) — это оператор дизъюнкции. Текущее имя OR. Предлагаемое имя COM (от comma — запятая).
 
В метаязыке «или» (одно из двух) — это оператор исключающего или. Текущее имя XOR. Предлагаемое имя OR.
 
СЛЕДСТВИЯ
 
Программисты пишут if (a || b) и if (a && b) — это 99% всего кода. XOR почти не используется в бизнес-логике, хотя множество задач — это именно исключающий выбор: «пользователь либо админ, либо гость», «заказ либо оплачен, либо отменён», «свет либо включён, либо выключен».
 
Вместо одного оператора XOR программист пишет (a || b) && !(a && b) — лишний код, лишняя сложность, лишние ошибки. Когда XOR был добавлен в аппаратную часть компьютеров, производительность выросла на 30%, потому что одна операция заменила цепочку из трёх.
 
ВЫВОД
 
Формальная логика назвала OR словом «или», хотя это запятая. А настоящее «или» назвала XOR и спрятала за непроизносимой аббревиатурой. Эта ошибка именования живёт уже более века и ежедневно порождает избыточный код по всему миру.
 
Исправление: COM (comma) вместо OR, OR вместо XOR. Три оператора — три имени — каждое соответствует тому, как мыслит человек.
 




Поделиться:


Комментарии:

Добавьте комментарий


Автор:
E-mail:
Виден только автору
Комментарий:
Введите код: *


LiveInternet счетчик посещений