An action language is just a programming language. However, it is characterized as being a bit more abstract than most target programming languages. It separates the concerns of functionality from design decisions regarding containers, memory, tasking and the like. It is model aware; it knows about classes, associations and state machines. It is “chunkier” in that it can express functionality in fewer lines.