May. 26th, 2021

amarao: (Default)
Вот, предположим, у нас есть идемпотентный код, который умеет делать state=present/absent для сущности. Я специально абстрагируюсь от кокретных реализаций и пишу "псевдокодом".

Например, мы можем установить субд (утрируя, database-server state=present), а можем удалить (state=absent)
Мы можем создать базу данных в СУБД (database state=present) или удалить.
Мы можем создать пользователя в СУБД (user state=present) или удалить.
Мы можем дать пользователю доступ к базе или отнять (access user--database state=present)

Процесс создания сервера прост:
database-server state=present
database state=present
user state=present
access user--database state=present

Теперь мы хотим сделать обратное. Удалить его.

Мы пишем в обратном порядке:
access user--database state=absent
user state=absent
database state=absent
database-server state=absent


Каждая операция полностью идемпотентная. Но! Теперь попробуем "обратное" запустить второй раз. У нас есть сервер, на котором нет: базы данных; пользователя; СУБД.


Мы говорим access user--database state=absent.

И что должно случиться?
Практически, в любых системах мы получим ошибку, потому что у нас нет database-server, который бы нам эту операцию мог подтвердить или выполнить.

И мы не можем полагаться на "отсутствие СУБД" как доказательство удаления (not changed), потому что СУБД может быть в down state по независимой причине.

Фашистско-декларативный подход должен сказать, что "если чего-то нет, то мы его сделаем" - поставим СУБД, добавим базу, добавим пользователя и подтвердим (not changed) что у пользователя нет доступа в базу.

Но это во-первых абсурдно, во-вторых делает гигантские side effects в условиях not changed, что противоречит идее not changed.

Другими словами, утверждает ли декларативное утверждение "f(A, Б) = ложь", что A и Б существуют?

На практике это часто выливается даже в более сложное "f(первый элемент А, последний элемент Б) = ложь". Можем ли мы рассуждать про первый элемент А если А не существует?

Profile

amarao: (Default)
amarao

September 2025

S M T W T F S
 12345 6
78 910111213
14151617 181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 29th, 2025 07:31 am
Powered by Dreamwidth Studios