Понятия¶
XState — это библиотека для создания, интерпретации и выполнения конечных автоматов и диаграмм состояний, а также для управления вызовами этих автоматов как субъектов. Следующие фундаментальные концепции информатики важны для понимания того, как наилучшим образом использовать XState и в целом для всех ваших текущих и будущих программных проектов.
Конечные автоматы¶
Конечный автомат — это математическая модель вычислений, которая описывает поведение системы, которая может находиться только в одном состоянии в любой момент времени. Например, предположим, что вы можете быть представлены конечным автоматом с конечным числом (2) состояний: asleep
(спящий) или awake
(бодрствующий). В любой момент вы либо спите, либо бодрствуете. Вы не можете одновременно спать и бодрствовать, и вы не можете ни спать, ни бодрствовать.
Формально конечные автоматы состоят из пяти частей:
- Конечное число состояний
- Конечное число событий
- Исходное состояние
- Функция перехода, определяющая следующее состояние с учетом текущего состояния и события.
- Множество (может быть пустым) конечных состояний
Состояние относится к некоторому конечному качественному «режиму» или «состоянию» системы, моделируемой конечным автоматом, и не описывает все (возможно, бесконечные) данные, относящиеся к этой системе. Например, вода может находиться в одном из четырех состояний: ice
(лёд), liquid
(жидкость), gas
(газ) или plasma
(плазма). Однако температура воды может меняться, и ее измерение может быть количественным и бесконечным.
Дополнительная информация про конечные автоматы:
- Конечный автомат, статья в Википедии
- Understanding State Machines, автор Mark Shead
- ▶️ Автоматное программирование c примерами на JavaScript
- ▶️ A-Level Comp Sci: Finite State Machine
Диаграммы состояний¶
Диаграммы состояний — это формализм для моделирования реактивных систем с отслеживанием состояния. Ученый-компьютерщик Дэвид Харел представил этот формализм как расширение конечных автоматов в своей статье 1987 года «Диаграммы состояний: визуальный формализм для сложных систем». Некоторые из расширений включают:
- Охраняемые переходы
- Действия (вход, выход, переход)
- Расширенное состояние (контекст)
- Ортогональные (параллельные) состояния
- Иерархические (вложенные) состояния
- Историю состояний
Дополнительная информация про диаграммы состояний:
- Statecharts: A Visual Formalism for Complex Systems, автор David Harel
- The World of Statecharts, автор Erik Mogensen
Модель акторов¶
Модель акторов (участников) — это еще одна очень старая математическая модель вычислений, которая хорошо сочетается с конечными автоматами. В нем говорится, что все является «актором», который может делать три вещи:
- Получать сообщения
- Отправлять сообщения другим участникам
-
- Обрабатывать полученные сообщения (его поведение), например:
-
- изменить свое локальное состояние
-
- отправлять сообщения другим участникам
-
- создавать новых актеров
Поведение актора можно описать с помощью конечного автомата (или диаграммы состояний).
Дополнительная информация:
- Модель акторов, статья в Википедии
- The actor model in 10 minutes, автор Brian Storti