Many tasks for autonomous agents or robots are best described by a specification of the environment and a specification of the available actions the agent or robot can perform. Combining such a specification with the possibility to imperatively program a robot or agent is what we call the action-based imperative programming. One of the most successful such approaches is Golog which is cumbersome to use because of its tight coupling with the underlying Prolog system.
YAGI is a new robot programming language. It is based on the action-based imperative programming paradigm. The goal was to design a small, portable stand-alone YAGI interpreter. We combine the benefits of a principled domain specification with a clean, small and simple programming language, which does not exploit any side-effects from the implementation language.