# Concepts
These XState v4 docs are no longer maintained
XState v5 is out now! Read more about XState v5 (opens new window)
🆕 Learn the concepts in all-new Stately and XState documentation (opens new window).
XState is a library for creating, interpreting, and executing finite state machines and statecharts, as well as managing invocations of those machines as actors. The following fundamental computer science concepts are important to know how to make the best use of XState, and in general for all your current and future software projects.
# Finite State Machines
A finite state machine is a mathematical model of computation that describes the behavior of a system that can be in only one state at any given time. For example, let's say you can be represented by a state machine with a finite number (2) of states: asleep
or awake
. At any given time, you're either asleep
or awake
. It is impossible for you to be both asleep
and awake
at the same time, and it is impossible for you to be neither asleep
nor awake
.
Formally, finite state machines have five parts:
- A finite number of states
- A finite number of events
- An initial state
- A transition function that determines the next state given the current state and event
- A (possibly empty) set of final states
State refers to some finite, qualitative "mode" or "status" of a system being modeled by a state machine, and does not describe all the (possibly infinite) data related to that system. For example, water can be in 1 of 4 states: ice
, liquid
, gas
, or plasma
. However, the temperature of water can vary and its measurement is quantitative and infinite.
More resources:
- Finite-state machine (opens new window) article on Wikipedia
- Understanding State Machines (opens new window) by Mark Shead
- ▶️ A-Level Comp Sci: Finite State Machine (opens new window)
# Statecharts
Statecharts are a formalism for modeling stateful, reactive systems. Computer scientist David Harel presented this formalism as an extension to state machines in his 1987 paper Statecharts: A Visual Formalism for Complex Systems (opens new window). Some of the extensions include:
- Guarded transitions
- Actions (entry, exit, transition)
- Extended state (context)
- Orthogonal (parallel) states
- Hierarchical (nested) states
- History
More resources:
- Statecharts: A Visual Formalism for Complex Systems (opens new window) by David Harel
- The World of Statecharts (opens new window) by Erik Mogensen
# Actor Model
The actor model is another very old mathematical model of computation that goes well with state machines. It states that everything is an "actor" that can do three things:
- Receive messages
- Send messages to other actors
- Do something with the messages it received (its behavior), such as:
- change its local state
- send messages to other actors
- spawn new actors
An actor's behavior can be described by a state machine (or a statechart).
More resources:
- Actor model (opens new window) article on Wikipedia
- The actor model in 10 minutes (opens new window) by Brian Storti
← Visualizer Goals →