As described by its authors, Go! "is a [[multi-paradigm programming language]] that is oriented to the needs of programming secure, production quality, agent based applications. It is [[multi-threaded]], strongly typed and [[higher order function|higher order]] (in the functional programming sense). It has relation, function and action procedure definitions. Threads execute action procedures, calling functions and querying relations as need be. Threads in different agents
communicate and coordinate using asynchronous messages. Threads within the same agent can also use shared dynamic relations acting as
[[Linda (coordination language)|Linda]]-style [[tuple space|tuple stores]]."<ref>Clark and McCabe, AAMAS'03, 2003</ref>