Recently, I've begun doing some research into Finite State Machines in JavaScript and I even found a library that makes them easier to implement. While I think I've grasped the idea that a state machine is used for tracking and changing the "state" of an object (e.g., 'ready', 'complete', 'inactive', etc.,), I don't think I fully understand the practical implications of them. Could someone please help by clarifying the following:
- What exactly is a finite state machine [or is it just called a state machine? I've heard it referred to both ways]?
- What are some practical uses for finite state machines (in JavaScript)?
- When would I not want to use an finite state machine?
- What books, articles, tutorials, etc., offer a more in-depth look at finite state machines (in JavaScript)?