← Все публикации

Post 2024-12-13

Некогда объяснять почему (если кратко, на рабочей встрече зацепились по терминологии) но захотелось рассказать про идемпотентность

Считается, что это понятие доступное и усвоенное всякими сеньор разработчиками но в математике это грубо говоря когда x² = x

То есть это когда операция, применённая дважды, даёт тот же результат что и один раз. Например:

➡️|x| = — модуль от модуля это тот же модуль

➡️max(max(x, y), y) = max(x, y) — максимум от максимума не изменится, если сравнить его опять с теми же числами

➡️x ∪ (x ∪ y) = x ∪ y — объединить множество с тем, что уже объединили получишь то что уже получил. Звучит как цитата Стэтхэма, пожалуй.

➡️x AND (x AND y) = x AND y — в логике тоже полно примеров. Молоко и кофе и молоко это то же самое что кофе и молоко. Ну, по составу во всяком случае.

А самый простой пример: x² = x. Какие числа удовлетворяют этому уравнению? Только 0 и 1! Эта штука родственна инволюции (когда x² = 1), только там работают 1 и -1. В группах это вообще целое отдельное развлечение — искать элементы с особыми свойствами при возведении в степень.

Ну вот, так вышло в общем, что и в программировании это тоже важная штука. Потому что "нажал дважды по ошибке" не должно ломать систему. Не должно.

Забавно что и 0 и 1 идемпотентны по умножению (x² = x), а вот по сложению только 0 справляется (x + x = x) 🤔

Этот же пост в Telegram ↗