От метапрограммирования к DDD через DSL.
Модель мира Django: Всё есть таблица. Всё есть запись. Всё есть JOIN.
Где это ломается?
Например домен - документооборот с версионированием и ветками (как в Git).
Он естественно описывается как направленный граф версий (теория графов + частичный порядок).
Но Django тащит нас в Document - FK - Version - FK - Parent...
И ты начинаешь бороться с фреймворком: рекурсивные запросы, CTEs, костыли для обхода графа через ORM (который для этого не создавался...).
Путь Django: ты думаешь на языке домена, переводишь в голове в таблицы, пишешь ORM - и теряешь исходную структуру...
Путь DSL: ты думаешь и пишешь на языке домена, нейронка транслирует в код, и ты всегда остаёшься на правильном уровне абстракции.
DDD говорит, что делать:
- выдели bounded context
- найди ubiquitous language
- сделай aggregate root
Алан Кэй объяснял, почему это работает: потому что ты нашёл
правильную математику домена и сделал её явной в виде DSL.
А я в "Функциональных архитектурах" поясняю, как это делать.
Как это было раньше:
эксперт домена - аналитик - разработчик - код (три перевода, три потери смысла)
Как это будет теперь:
эксперт домена - компактный DSL - нейронка - код (один перевод, потери минимальны!)
Post #2357
683
- ❤ 37
- ✍ 12
- 🙏 7